<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luis Vargas</title>
    <description>The latest articles on DEV Community by Luis Vargas (@motion_design).</description>
    <link>https://dev.to/motion_design</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3836990%2F6c79a409-0769-4540-84c9-46181c71a7f3.png</url>
      <title>DEV Community: Luis Vargas</title>
      <link>https://dev.to/motion_design</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/motion_design"/>
    <language>en</language>
    <item>
      <title>Procedural Design: The Moment Design Became Code</title>
      <dc:creator>Luis Vargas</dc:creator>
      <pubDate>Sun, 22 Mar 2026 16:59:13 +0000</pubDate>
      <link>https://dev.to/motion_design/procedural-design-the-moment-design-became-code-mf9</link>
      <guid>https://dev.to/motion_design/procedural-design-the-moment-design-became-code-mf9</guid>
      <description>&lt;h2&gt;
  
  
  Procedural Design: The Moment Design Became Code
&lt;/h2&gt;

&lt;p&gt;There's a shift happening in the design industry that we haven't fully named yet. I want to try.&lt;/p&gt;

&lt;p&gt;For most of my 15+ years in this field, design has been inseparable &lt;br&gt;
from the tools you use — Photoshop, Illustrator, Sketch, Figma. The &lt;br&gt;
artifact &lt;em&gt;is&lt;/em&gt; the design. You open a file, you push pixels, you export. &lt;br&gt;
Repeat.&lt;/p&gt;

&lt;p&gt;But something is changing. And I think the best word for it is &lt;br&gt;
&lt;strong&gt;procedural&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc93lbw5o7o2d5spwc209.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc93lbw5o7o2d5spwc209.jpg" alt="abstract design" width="640" height="338"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Design Has Always Been a Communication Problem
&lt;/h2&gt;

&lt;p&gt;Before we get to the "procedural" part, let's step back.&lt;/p&gt;

&lt;p&gt;There's a tension design has always carried: aesthetics versus &lt;br&gt;
communication. A beautifully crafted visual with no clear message is &lt;br&gt;
art — it can hang on your wall and make you feel something. That's &lt;br&gt;
valid. But in UX and product design, we've made a deliberate choice: &lt;br&gt;
we're not making wall art. We're building interfaces that help real &lt;br&gt;
people accomplish real tasks.&lt;/p&gt;

&lt;p&gt;That shift — from aesthetics toward communication — brought us things &lt;br&gt;
like hierarchy, color contrast, layout systems, and consistent &lt;br&gt;
typography. It turns out that when you strip design down to &lt;em&gt;how well &lt;br&gt;
does this communicate&lt;/em&gt;, you get something surprisingly mathematical. &lt;br&gt;
Hierarchy becomes a formula. Contrast becomes a ratio. Spacing becomes &lt;br&gt;
a scale.&lt;/p&gt;

&lt;p&gt;That's the seed of what comes next.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter Terraform. Enter Houdini. Enter Procedural Design.
&lt;/h2&gt;

&lt;p&gt;If you work in development, you know Terraform. You describe your &lt;br&gt;
infrastructure in code — servers, networks, databases — and you can &lt;br&gt;
spin it all up, tear it down, reproduce it exactly, anywhere. The &lt;br&gt;
artifact is not a running server. The artifact is the &lt;em&gt;code that &lt;br&gt;
describes&lt;/em&gt; a running server.&lt;/p&gt;

&lt;p&gt;If you work in 3D, you know Houdini. Instead of sculpting a mountain by hand, you write a procedural graph — noise functions, erosion parameters, height rules — and the software generates the mountain for you. Change one variable, regenerate. The geometry is an output, not a source file.&lt;/p&gt;

&lt;p&gt;I believe design is entering the same moment.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four Buckets
&lt;/h2&gt;

&lt;p&gt;Here's how I've started thinking about it. Any design can be described &lt;br&gt;
as the intersection of four distinct layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt; — colors, typography, spacing, shadows, mood&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content&lt;/strong&gt; — copy, messaging, hierarchy, information architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspiration&lt;/strong&gt; — brand references, visual context, competitive 
landscape&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical&lt;/strong&gt; — target device, breakpoints, component library, 
accessibility requirements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Right now, when a designer opens Figma, all four of these live inside &lt;br&gt;
their head and inside their hands. The output is a &lt;code&gt;.fig&lt;/code&gt; file — a &lt;br&gt;
snapshot of one particular set of decisions.&lt;/p&gt;

&lt;p&gt;What if instead, you could feed all four of these buckets into a &lt;br&gt;
system — with natural language — and get a design back? Not as a &lt;br&gt;
replacement for judgment, but as a &lt;em&gt;starting point&lt;/em&gt; you can always &lt;br&gt;
reproduce.&lt;/p&gt;




&lt;h2&gt;
  
  
  This Is Already Possible
&lt;/h2&gt;

&lt;p&gt;With the Figma API and modern AI, this is not a hypothetical.&lt;/p&gt;

&lt;p&gt;You can already write a plugin — or interact with the API directly — &lt;br&gt;
to describe a layout in natural language, separate the content layer &lt;br&gt;
from the styling layer, pass in a design token library, specify a &lt;br&gt;
target device and breakpoint, and generate shapes, text, and layout &lt;br&gt;
from those inputs.&lt;/p&gt;

&lt;p&gt;The result is non-destructive by nature. You're not editing a file. &lt;br&gt;
You're executing a spec. Change the styling bucket, re-run. Change &lt;br&gt;
the target device, re-run. The design is reproducible because it's &lt;br&gt;
a &lt;em&gt;description&lt;/em&gt;, not an artifact.&lt;/p&gt;

&lt;p&gt;This is procedural design.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Changes (and What It Doesn't)
&lt;/h2&gt;

&lt;p&gt;Let's be honest about what gets disrupted here.&lt;/p&gt;

&lt;p&gt;The ability to &lt;em&gt;operate tools&lt;/em&gt; — to use Figma, Illustrator, Sketch — &lt;br&gt;
has never been the actual skill. It's been a proxy for the skill. The &lt;br&gt;
real skill is the critical eye: knowing whether a hierarchy is working, &lt;br&gt;
whether the visual weight is off, whether the message lands. That &lt;br&gt;
judgment doesn't come from the software. It comes from years of &lt;br&gt;
training your eye.&lt;/p&gt;

&lt;p&gt;Procedural design doesn't replace that. It replaces the hours you &lt;br&gt;
spend translating decisions into pixels.&lt;/p&gt;

&lt;p&gt;What it does change: &lt;strong&gt;volume&lt;/strong&gt;. When the mechanical barrier goes down, &lt;br&gt;
more design gets produced. Much more. Some of it will be good. A lot &lt;br&gt;
of it won't be. The ability to distinguish between the two — to look &lt;br&gt;
at a generated layout and say "the hierarchy is broken here, the &lt;br&gt;
contrast fails here, this doesn't communicate the thing it needs to &lt;br&gt;
communicate" — becomes the rare and valuable thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  A New Opportunity for Designers
&lt;/h2&gt;

&lt;p&gt;Here's the part I want you to hold onto.&lt;/p&gt;

&lt;p&gt;Every major tool transition in design history — from physical paste-up &lt;br&gt;
to desktop publishing, from print to web, from handcoding to visual &lt;br&gt;
tools — felt like a threat before it became an opportunity. In every &lt;br&gt;
case, the designers who came out ahead were the ones who understood &lt;br&gt;
the &lt;em&gt;underlying principles&lt;/em&gt; well enough to use the new tools &lt;br&gt;
intentionally instead of reactively.&lt;/p&gt;

&lt;p&gt;Procedural design is that next transition.&lt;/p&gt;

&lt;p&gt;And if you're reading this, you're early. You have time to ask: &lt;em&gt;what &lt;br&gt;
are the inputs that produce great design?&lt;/em&gt; How do you describe a &lt;br&gt;
strong hierarchy in words? How do you articulate a color mood before &lt;br&gt;
a pixel is placed? How do you separate what a design needs to &lt;br&gt;
&lt;em&gt;say&lt;/em&gt; from how it needs to &lt;em&gt;look&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;These are the skills that turn a designer into a design author — &lt;br&gt;
someone who can write the recipe, not just cook the meal.&lt;/p&gt;

&lt;p&gt;The tools are arriving. The question is whether you'll be the person &lt;br&gt;
who defines how they're used.&lt;/p&gt;

&lt;p&gt;I think you will.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building a lot of this thinking into real projects — design &lt;br&gt;
systems, AI tooling, and a few experiments with the Figma API. If &lt;br&gt;
this resonates, drop a comment or follow along. I'd love to compare &lt;br&gt;
notes.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>ux</category>
      <category>ai</category>
      <category>figma</category>
    </item>
    <item>
      <title>I got tired of bloated React libraries, so I built two tiny ones</title>
      <dc:creator>Luis Vargas</dc:creator>
      <pubDate>Sat, 21 Mar 2026 13:30:15 +0000</pubDate>
      <link>https://dev.to/motion_design/i-got-tired-of-bloated-react-libraries-so-i-built-two-tiny-ones-1jc5</link>
      <guid>https://dev.to/motion_design/i-got-tired-of-bloated-react-libraries-so-i-built-two-tiny-ones-1jc5</guid>
      <description>&lt;p&gt;I've been building React apps for years, and two things kept frustrating me:&lt;/p&gt;

&lt;p&gt;Every animation library I tried was either too heavy, caused unnecessary re-renders, or was painful to sequence. And every date picker pulled in date-fns or moment.js just to format a date.&lt;br&gt;
So I stopped looking and started building. The result is ReactZero — a family of zero-dependency React primitives that are tiny, accessible, and easy to drop in.&lt;/p&gt;

&lt;p&gt;Here's what I've shipped so far:&lt;/p&gt;
&lt;h2&gt;
  
  
  @reactzero/flow — animation orchestration for React
&lt;/h2&gt;

&lt;p&gt;Most animation libraries in React drive animations through state, which means every frame triggers a re-render. @reactzero/flow skips all of that by running animations directly on the browser's compositor thread via the Web Animations API.&lt;/p&gt;

&lt;p&gt;The API is built around composable primitives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useSequence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;animate&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@reactzero/flow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;box&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;play&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useSequence&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;translateY(8px)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;translateY(0)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;play&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A few things I haven't seen done well elsewhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive degradation:&lt;/strong&gt; automatically slows or skips animations based on device capability and frame rate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True cancellation:&lt;/strong&gt; finished always resolves, never rejects. No try/catch needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scroll-driven animations:&lt;/strong&gt; uses native ScrollTimeline when available, with a clean fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced motion:&lt;/strong&gt;  provider-level policy system (skip, reduce, crossfade, respect)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @reactzero/flow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;🔗 &lt;a href="https://github.com/motiondesignlv/ReactZero-flow" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://motiondesignlv.github.io/ReactZero-flow/" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  @reactzero/datepicker — accessible date picker, no date library required
&lt;/h2&gt;

&lt;p&gt;12KB gzipped. Zero dependencies. WCAG 2.1 AA.&lt;br&gt;
I tried every popular React date picker and they all shared the same problems: heavy dependencies, hard to customize, and accessibility treated as an afterthought.&lt;/p&gt;

&lt;p&gt;@reactzero/datepicker uses only native Intl and Date APIs — no date-fns, no moment, nothing extra.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DatePicker&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@reactzero/datepicker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@reactzero/datepicker/styles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;DatePicker&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onChange&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Select date...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you want full control over the UI, the headless hooks give you complete ARIA compliance without any of the default styles:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useDatePicker&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@reactzero/datepicker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;MyDatePicker&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getGridProps&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getCellProps&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getTriggerProps&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;useDatePicker&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en-US&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Build whatever UI you want&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Ships with 10 built-in themes, 3 density modes, range picker, datetime picker, RTL support, and keyboard navigation out of the box.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @reactzero/datepicker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;🔗 &lt;a href="https://github.com/motiondesignlv/ReactZero-DatePicker" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://motiondesignlv.github.io/reactzero-datepicker" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The idea behind &lt;strong&gt;ReactZero&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Both packages share the same philosophy: zero runtime dependencies, small bundle, accessible by default, easy to style.&lt;/p&gt;

&lt;p&gt;I'm planning to keep adding primitives to the family under that same promise.&lt;/p&gt;

&lt;p&gt;If either of these solves a problem you've had, a ⭐ on GitHub goes a long way — it helps other developers find them.&lt;/p&gt;

&lt;p&gt;And if you run into anything broken, unexpected, or just have feedback — issues and PRs are very welcome. This is early and I genuinely want to know how it holds up in real projects.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙏&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://github.com/motiondesignlv" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F2782171%3Fv%3D4%3Fs%3D400" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://github.com/motiondesignlv" rel="noopener noreferrer" class="c-link"&gt;
            motiondesignlv (Luis Vargas) · GitHub
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Sr .Product Designer / Ux Engineer. motiondesignlv has 34 repositories available. Follow their code on GitHub.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg"&gt;
          github.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>react</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>ux</category>
    </item>
  </channel>
</rss>
