<?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: Jonny Taft</title>
    <description>The latest articles on DEV Community by Jonny Taft (@jltdigital).</description>
    <link>https://dev.to/jltdigital</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F741563%2F3e519879-bd13-4866-b7b2-7eae3c4565f8.jpg</url>
      <title>DEV Community: Jonny Taft</title>
      <link>https://dev.to/jltdigital</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jltdigital"/>
    <language>en</language>
    <item>
      <title>CYBR//UI: animated Cyberpunk Brutalism components for React, installed with shadcn</title>
      <dc:creator>Jonny Taft</dc:creator>
      <pubDate>Wed, 04 Nov 2026 12:40:10 +0000</pubDate>
      <link>https://dev.to/jltdigital/cybrui-animated-cyberpunk-brutalism-components-for-react-installed-with-shadcn-272i</link>
      <guid>https://dev.to/jltdigital/cybrui-animated-cyberpunk-brutalism-components-for-react-installed-with-shadcn-272i</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1qneodlkrbmxgde2npmd.png" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1qneodlkrbmxgde2npmd.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;I just shipped &lt;strong&gt;&lt;a href="https://cybr-ui.com" rel="noopener noreferrer"&gt;CYBR//UI&lt;/a&gt;&lt;/strong&gt;, an open-source library of animated React components with one design language: &lt;strong&gt;Cyberpunk Brutalism&lt;/strong&gt;. That means hard edges, offset shadows, mechanical motion, scanlines, HUD corners and hazard tape.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;If you want a React site that feels like a terminal, a game HUD or a classified file, your options aren't great:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Neutral kits&lt;/strong&gt; like shadcn/ui are excellent, but you have to restyle every component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animated copy-paste libraries&lt;/strong&gt; have the motion but usually a glassy, soft look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cyberpunk and brutalist resources&lt;/strong&gt; are mostly moodboards and vector packs, not components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I treated the design system as the product, and the components as the way to deliver it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in it
&lt;/h2&gt;

&lt;p&gt;38 components in 7 sets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Buttons&lt;/strong&gt;: Hard-Offset, Glitch, HUD Bracket, Terminal, Hazard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text &amp;amp; Motion&lt;/strong&gt;: Decrypt Text, Typewriter Terminal, Glitch Heading, Telemetry Counter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layout &amp;amp; Cards&lt;/strong&gt;: Bento Grid, Spec Card, Access/ID Card, Classified Card and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tooltip &amp;amp; Marquee&lt;/strong&gt;: HUD Tooltip, Classified FAQ Accordion, Ticker Marquee, Warning Tape&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backgrounds&lt;/strong&gt;: Blueprint Grid, Perspective Grid, CRT Overlay, Data Rain, Exposed Wiring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation &amp;amp; Loaders&lt;/strong&gt;: Terminal Navbar, Status Bar, Monolith Footer, Boot Sequence Loader&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive&lt;/strong&gt;: Command Palette (⌘K), Pixelated Image Trail, Data-Readout Carousel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also three colour themes (the default orange, plus Acid Terminal and Ice Neon). You switch with a &lt;code&gt;data-theme&lt;/code&gt; attribute on &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; or on any element.&lt;/p&gt;

&lt;h2&gt;
  
  
  How you install it
&lt;/h2&gt;

&lt;p&gt;CYBR//UI is a &lt;a href="https://ui.shadcn.com/docs/registry" rel="noopener noreferrer"&gt;shadcn registry&lt;/a&gt;, so the CLI copies the source straight into your project. There's no package to depend on, and you own the code from then on.&lt;/p&gt;

&lt;p&gt;Map the namespace in &lt;code&gt;components.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"registries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"@cybr"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://cybr-ui.com/r/{name}.json"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add a component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add @cybr/hard-offset-button
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add @cybr/all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, import the tokens and effects after Tailwind in &lt;code&gt;globals.css&lt;/code&gt;. The &lt;a href="https://github.com/JLTDigital/cybr-ui" rel="noopener noreferrer"&gt;README&lt;/a&gt; has the full steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js App Router + Tailwind CSS v4.&lt;/strong&gt; Colours, borders, shadow offsets and motion timings are all CSS variables, so a theme is one small file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plain CSS animation.&lt;/strong&gt; There's no animation library to install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Base UI&lt;/strong&gt; for the accessible primitives behind tooltips, accordions and the command palette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced motion is respected.&lt;/strong&gt; Every animated component has a static fallback under &lt;code&gt;prefers-reduced-motion&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The docs site uses the library.&lt;/strong&gt; &lt;a href="https://cybr-ui.com" rel="noopener noreferrer"&gt;cybr-ui.com&lt;/a&gt; is built from its own components, so it doubles as the showcase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI on every pull request:&lt;/strong&gt; lint, type checks, the registry build, Playwright visual snapshots, and reduced-motion and keyboard checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Front-end and creative developers building portfolios, landing pages and product sites&lt;/li&gt;
&lt;li&gt;Indie hackers and devtool, AI, security or gaming startups that want a technical, edgy brand&lt;/li&gt;
&lt;li&gt;Music, nightlife and fashion brands: techno labels, club nights, streetwear&lt;/li&gt;
&lt;li&gt;Anyone using AI coding tools, which can pull components through the registry too&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll need to be comfortable with React, the Next.js App Router and Tailwind. It isn't a no-code tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docs and live previews: &lt;strong&gt;&lt;a href="https://cybr-ui.com" rel="noopener noreferrer"&gt;https://cybr-ui.com&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Source (MIT): &lt;strong&gt;&lt;a href="https://github.com/JLTDigital/cybr-ui" rel="noopener noreferrer"&gt;https://github.com/JLTDigital/cybr-ui&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback, issues and component requests are very welcome. What would you build with it?&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
