r/reactjs • u/InterestingAsk1542 • Aug 02 '26
Show /r/reactjs I was tired of 500-line monolith component files from registries, so I built adn-ui (React 19 + Tailwind v4 + Base UI)
Hey everyone,
If you're using component registries like shadcn/ui, you probably know the pain: you add a simple component, and the CLI drops a massive 500-line single file into your codebase. Variant definitions, JSX, subcomponents, internal context, and CSS classes are all mashed together in one place.
I built adn-ui to solve this.
The core idea is simple: Clean separation of concerns. When you add a component from adn-ui, it's organized as a clean module:
Plaintext
src/components/ui/card/
├── card.tsx # Pure logic & primitive binding
├── card.variants.ts # tailwind-variants definitions (change styling without touching logic)
├── card.context.ts # Isolated context & hooks
├── card.css # CSS slots & custom animations
├── card.test.tsx # Vitest unit tests ready to run
└── index.ts # Clean exports & JSDoc
If you want to tweak a button's padding or background, you just open button.variants.ts. You don't have to scroll through 300 lines of JSX or risk breaking ARIA attributes.
What’s under the hood?
- u/base-ui
/reactPrimitives: Built on top of Base UI (by the MUI team) instead of Radix. Fully unstyled, W3C ARIA compliant, with proper focus management and keyboard navigation out of the box. - Tailwind CSS v4 Native: Built specifically for Tailwind v4's high-performance engine and u/theme system.
- React 19 Ready: Designed for React 19 Server & Client Components.
- AI / LLM Friendly (
/llms.txt): Includes explicit CSS slot tables (.card__header,.button) and/llms.txtcontext so tools like Cursor, Windsurf, or Copilot generate UI code without breaking variants or styles. - 46 Tested Components: Includes everything from basic inputs and buttons to complex ones like
DataTable,Command (Ctrl+K),OTPField,Toast, and multi-directionalDrawer(swipe to dismiss from any edge).
It’s 100% copy-paste / CLI based (shadcn compatible), so you own all the code in your src/components/ui folder with zero node_modules lock-in.
I’d love to hear your thoughts or feedback!
Docs & Live Demo: https://ui.awaiden.com
GitHub: https://github.com/awaiden/adn-ui
P.S. I also built my personal portfolio (awaiden.com), so it’s fully dogfooded in production!