<?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: Stas Kulesh</title>
    <description>The latest articles on DEV Community by Stas Kulesh (@sliday).</description>
    <link>https://dev.to/sliday</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%2F3828141%2F1326bf40-ad1c-4d7c-ace1-f05b508b65b4.png</url>
      <title>DEV Community: Stas Kulesh</title>
      <link>https://dev.to/sliday</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sliday"/>
    <language>en</language>
    <item>
      <title>DAUB: The CSS Component Library That Lets AI Generate Your UI</title>
      <dc:creator>Stas Kulesh</dc:creator>
      <pubDate>Mon, 16 Mar 2026 21:42:29 +0000</pubDate>
      <link>https://dev.to/sliday/daub-the-css-component-library-that-lets-ai-generate-your-ui-42n4</link>
      <guid>https://dev.to/sliday/daub-the-css-component-library-that-lets-ai-generate-your-ui-42n4</guid>
      <description>&lt;p&gt;Most UI frameworks solve the wrong problem — they help developers build interfaces faster. But the real bottleneck is shifting. AI can already figure out &lt;em&gt;what&lt;/em&gt; UI you need. The slow part is the loop after: generate code → copy → paste → fix imports → compile → see result.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://daub.dev" rel="noopener noreferrer"&gt;DAUB&lt;/a&gt; to cut that loop entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is DAUB?
&lt;/h2&gt;

&lt;p&gt;DAUB is a drop-in CSS + JS component library with a simple premise: &lt;strong&gt;two CDN files, zero build step, full substance.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/daub-ui@latest/daub.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/daub-ui@latest/daub.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your semantic HTML is now styled with 73 components across 20 theme families, each with light and dark modes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Classless Mode
&lt;/h2&gt;

&lt;p&gt;Don't want to think about classes at all? Use classless mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/daub-ui@latest/daub-classless.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; gets styled automatically. Write semantic HTML, get a polished interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI Angle
&lt;/h2&gt;

&lt;p&gt;Here's where DAUB gets interesting. It's designed from the ground up for AI consumption:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/strong&gt; — Full component documentation in a format LLMs can parse directly (&lt;a href="https://daub.dev/llms.txt" rel="noopener noreferrer"&gt;daub.dev/llms.txt&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;llms-compact.txt&lt;/code&gt;&lt;/strong&gt; — Condensed version for smaller context windows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ai-plugin.json&lt;/code&gt;&lt;/strong&gt; — OpenAI plugin manifest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; — Remote MCP server on Cloudflare edge at &lt;code&gt;https://daub.dev/api/mcp&lt;/code&gt;. Claude, Cursor, or any MCP-compatible agent can call &lt;code&gt;generate_ui&lt;/code&gt; and get a rendered interface back immediately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON-Render Spec&lt;/strong&gt; — AI outputs structured JSON describing layout, components, and data. DAUB renders it as a live interface. No compilation. No JSX. The spec &lt;em&gt;is&lt;/em&gt; the UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Compares
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;DAUB&lt;/th&gt;
&lt;th&gt;Pico CSS&lt;/th&gt;
&lt;th&gt;DaisyUI&lt;/th&gt;
&lt;th&gt;Tailwind&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;td&gt;~20&lt;/td&gt;
&lt;td&gt;~50&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Theme variants&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classless mode&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JS included&lt;/td&gt;
&lt;td&gt;✅ (2 KB)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build step&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI docs (llms.txt)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP server&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Roadmap
&lt;/h2&gt;

&lt;p&gt;DAUB's ambition goes beyond a component library:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rendering layer&lt;/strong&gt; (shipped) — CSS + JS components, themes, classless mode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI integration&lt;/strong&gt; (shipped) — llms.txt, MCP server, JSON-Render spec&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action bindings&lt;/strong&gt; (next) — Wire spec elements to real functions, APIs, and tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intent Engine&lt;/strong&gt; (planned) — Turn prompts like "track my spending for March" into a contextual dashboard — charts, filters, actions — entirely via spec&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Site &amp;amp; Playground&lt;/strong&gt;: &lt;a href="https://daub.dev" rel="noopener noreferrer"&gt;daub.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;npm&lt;/strong&gt;: &lt;code&gt;npm install daub-ui&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;🐙 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/sliday/daub" rel="noopener noreferrer"&gt;github.com/sliday/daub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;strong&gt;AI Docs&lt;/strong&gt;: &lt;a href="https://daub.dev/llms.txt" rel="noopener noreferrer"&gt;daub.dev/llms.txt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔌 &lt;strong&gt;MCP Server&lt;/strong&gt;: &lt;code&gt;https://daub.dev/api/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DAUB is MIT licensed and open source. I'd love feedback — what would you want an AI-renderable UI spec to handle that current component libraries don't?&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
