<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>7onic Blog</title><description>Design to Code — A designer&apos;s journey building a design system. Insights on design tokens, components, Tailwind, AI, and the full stack of building 7onic.</description><link>https://blog.7onic.design/</link><item><title>Build &amp; Release #2: Five Patches for One Line of CSS</title><link>https://blog.7onic.design/body-baseline-color-five-patches/</link><guid isPermaLink="true">https://blog.7onic.design/body-baseline-color-five-patches/</guid><description>I shipped `html body { color }` with four different values across five releases. Each one fixed a different way of being wrong — until I found the generator.</description><pubDate>Mon, 18 May 2026 14:31:48 GMT</pubDate></item><item><title>Component Anatomy #1: Perfect on Paper, Wrong in Production</title><link>https://blog.7onic.design/button-five-sizes/</link><guid isPermaLink="true">https://blog.7onic.design/button-five-sizes/</guid><description>I designed buttons at 5 sizes. Deleted one before shipping, discovered a gap, added a different size back. Ended up with 5 again — just not the same 5.</description><pubDate>Mon, 18 May 2026 08:37:08 GMT</pubDate></item><item><title>Design to Code #3: Copy-Paste vs npm Install</title><link>https://blog.7onic.design/copy-paste-vs-npm-install/</link><guid isPermaLink="true">https://blog.7onic.design/copy-paste-vs-npm-install/</guid><description>Five days after publishing @7onic-ui/react@0.1.0, I started building a CLI that copies files instead. The npm package still ships. Here&apos;s the trade-off.</description><pubDate>Fri, 24 Apr 2026 11:31:46 GMT</pubDate></item><item><title>Design to Code #7: How CVA Scaffolding Turned Into Dead Code</title><link>https://blog.7onic.design/cva-limits-of-a-good-pattern/</link><guid isPermaLink="true">https://blog.7onic.design/cva-limits-of-a-good-pattern/</guid><description>Every 7onic component starts with CVA. A pre-publish lint sweep deleted it from five of them — including one where the cva call itself had no variants at all.</description><pubDate>Tue, 26 May 2026 06:50:16 GMT</pubDate></item><item><title>Design to Code #6: When @theme inline Killed My Dark Mode</title><link>https://blog.7onic.design/dark-mode-no-javascript/</link><guid isPermaLink="true">https://blog.7onic.design/dark-mode-no-javascript/</guid><description>7onic handles dark mode purely in CSS. One word from the Tailwind v4 migration guide silently broke it for every v4 user. The fix was removing that word.</description><pubDate>Tue, 26 May 2026 06:19:01 GMT</pubDate></item><item><title>Design to Code #9: The Cost of a Dot</title><link>https://blog.7onic.design/lessons-from-42-components/</link><guid isPermaLink="true">https://blog.7onic.design/lessons-from-42-components/</guid><description>On April 4th I shipped 22 compound components. On April 22nd I deleted all of them. The breaking change cost nothing because no one was using it yet.</description><pubDate>Wed, 03 Jun 2026 06:24:01 GMT</pubDate></item><item><title>Build &amp; Release #1: How Apple&apos;s rsync Update Nuked My Repo</title><link>https://blog.7onic.design/public-repo-sync-incident/</link><guid isPermaLink="true">https://blog.7onic.design/public-repo-sync-incident/</guid><description>A macOS update silently swapped rsync. My public repo&apos;s git history vanished. My first fix made it worse. Then I merged a bad commit without checking the diff.</description><pubDate>Mon, 18 May 2026 09:05:17 GMT</pubDate></item><item><title>Token Deep Dive #1: The /50 That Did Nothing</title><link>https://blog.7onic.design/rgb-channels-for-tailwind-opacity-modifiers/</link><guid isPermaLink="true">https://blog.7onic.design/rgb-channels-for-tailwind-opacity-modifiers/</guid><description>I converted design tokens to CSS var() for cleaner SSOT. Every /50 modifier stopped working. Tailwind v3 didn&apos;t warn me once. Here&apos;s the three-tier fix.</description><pubDate>Mon, 18 May 2026 07:36:36 GMT</pubDate></item><item><title>Design to Code #8: The Cosmetics of Modularity</title><link>https://blog.7onic.design/single-entry-point/</link><guid isPermaLink="true">https://blog.7onic.design/single-entry-point/</guid><description>How a generateCode() function in our docs told users to import from a subpath that was never in the package — and why we still ship one entry point.</description><pubDate>Tue, 26 May 2026 07:31:34 GMT</pubDate></item><item><title>Solo Builder #1: What Nobody Tells You</title><link>https://blog.7onic.design/solo-building-what-nobody-tells-you/</link><guid isPermaLink="true">https://blog.7onic.design/solo-building-what-nobody-tells-you/</guid><description>Building a design system alone sounds like a shortcut. No meetings, no politics, full ownership. Here&apos;s what that actually looks like.</description><pubDate>Fri, 17 Apr 2026 09:00:00 GMT</pubDate></item><item><title>Tailwind Guides #1: What Actually Broke Migrating to v4</title><link>https://blog.7onic.design/tailwind-v4-migration-what-actually-changed/</link><guid isPermaLink="true">https://blog.7onic.design/tailwind-v4-migration-what-actually-changed/</guid><description>Migrating from Tailwind CSS v3 to v4 while supporting both — the silent dark mode bug, reversed variant stacking, and the outline flash nobody warned about.</description><pubDate>Fri, 17 Apr 2026 12:00:00 GMT</pubDate></item><item><title>Design to Code #2: One JSON, Eleven Outputs</title><link>https://blog.7onic.design/token-pipeline-one-json-11-outputs/</link><guid isPermaLink="true">https://blog.7onic.design/token-pipeline-one-json-11-outputs/</guid><description>How a single JSON file generates 11 distribution formats — and the three problems I ran into building the sync-tokens pipeline for 7onic.</description><pubDate>Fri, 17 Apr 2026 06:00:00 GMT</pubDate></item><item><title>Design to Code #5: Using AI to Build a Design System</title><link>https://blog.7onic.design/using-ai-to-build-a-design-system/</link><guid isPermaLink="true">https://blog.7onic.design/using-ai-to-build-a-design-system/</guid><description>I use Claude for almost everything in 7onic. I also wrote three shell scripts whose job is to catch it reporting things as done when they aren&apos;t.</description><pubDate>Tue, 26 May 2026 05:35:36 GMT</pubDate></item><item><title>Design to Code #1: Why I Built 7onic</title><link>https://blog.7onic.design/why-i-built-7onic/</link><guid isPermaLink="true">https://blog.7onic.design/why-i-built-7onic/</guid><description>I spent 10 years watching pixels drift between Figma and production. Here&apos;s why I stopped filing tickets and started building a design system from scratch.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Design to Code #4: Why I Chose Radix Over Custom Primitives</title><link>https://blog.7onic.design/why-i-chose-radix-ui/</link><guid isPermaLink="true">https://blog.7onic.design/why-i-chose-radix-ui/</guid><description>I tried to build a dialog focus trap from scratch. Got it wrong in an afternoon. Here is what Radix actually handles — and what it still gets wrong.</description><pubDate>Fri, 24 Apr 2026 13:25:14 GMT</pubDate></item></channel></rss>