VivekUI vs Radix UI
VivekUI compared with Radix UI: unstyled behaviour primitives you style yourself against a styled, themed library with the behaviour built in.
How Radix UI works
Radix Primitives are unstyled, accessible behaviour components — Dialog, Popover, Select and so on — that you style entirely yourself. Radix Themes is the styled layer on top. Many libraries, including shadcn/ui, build on the primitives.
Side by side
| Aspect | VivekUI | Radix UI |
|---|---|---|
| Runtime dependencies | None. `package.json` has no `dependencies` field; React and React DOM are peers. | One package per primitive (or the umbrella `radix-ui`), each with internal dependencies. |
| Styling | One static stylesheet, every selector in `:where()` (zero specificity), variants as `data-*` attributes, tokens as `--vk-*` custom properties. | None in Primitives; you supply all CSS. Radix Themes ships its own stylesheet. |
| Overriding a style | Any one class of yours wins — no `!important`, no specificity war. | Everything is yours to style; there is nothing to override. |
| Server Components | Unbundled build; each file keeps its own 'use client'. 50 of 109 components ship no client JavaScript. | Primitives are client components; you control what wraps them. |
| Accessibility testing | A `vitest-axe` assertion per component, browser axe on composed pages in three viewports, keyboard maps from the WAI-ARIA Authoring Practices. | Primitives follow WAI-ARIA patterns and are tested upstream. |
| Sections and pages | Hero, Navbar, Pricing, FAQ, CTA, Footer, Stats, Testimonials as components; 62 blocks and 12 whole pages to copy. | Not offered; primitives only. |
Choose Radix UI when
You want only behaviour and will design every pixel yourself.
You are building your own design system and want primitives to wrap.
Choose VivekUI when
You want components that look finished on install and can still be themed with tokens.
You want the behaviour and the styling from one package with one changelog.
You want sections and page templates, which a primitives library does not offer.