90+ accessible components. Tailwind-styled. Runtime theming with no FOUC. A first-class DataTable that Radix deliberately omits.
Buttons
Badges
Inputs & controls
Why structyl
Four layers working together so you spend time building products, not configuring UI infrastructure.
WAI-ARIA compliant behavior with zero styling. Every keyboard interaction, ARIA role, and focus management pattern follows the official spec. Bring your own styles, get accessibility for free.
Learn moreA full-coverage styled layer built on top of the headless primitives. Variant-driven with tailwind-variants. Ships as a real package — not a copy-paste collection.
Learn moreSwitch themes at runtime without a page reload. CSS variables, ThemeProvider, zero FOUC. Build multi-brand apps, user-customizable UIs, or simple dark mode — all in one system.
Learn moreThe feature every app needs and every headless library skips. Built on @tanstack/table-core with sorting, filtering, virtualization, server-side pagination, row selection, and column resizing.
Learn moreHow it compares
| Feature | structyl | Radix UI | shadcn/ui | MUI |
|---|---|---|---|---|
| Headless primitives | ||||
| Tailwind styled layer | ||||
| Runtime theming | ||||
| Built-in DataTable | ||||
| TypeScript first | ||||
| Real npm package | ||||
| WAI-ARIA compliant |
Runtime theming
Click any preset — the entire page updates live with no reload and no flash of unstyled content. Your choice is remembered across pages.
Build a fully custom theme — colors, radius, shadows, fonts — in the playground.
Open Theme PlaygroundGet started
pnpm add @structyl/styled
pnpm add @structyl/themesimport { ThemeProvider } from '@structyl/themes';
export default function Layout({ children }) {
return (
<ThemeProvider defaultTheme="slate">
{children}
</ThemeProvider>
);
}import { Button } from '@structyl/styled';
export default function Page() {
return (
<Button variant="outline">
Hello, structyl
</Button>
);
}Architecture
Install only what you use. Each package is independently versioned, fully typed, and ships both ESM and CJS.
@structyl/primitives
Headless WAI-ARIA primitives
@structyl/styled
Tailwind-styled component layer
@structyl/themes
ThemeProvider + runtime token system
@structyl/data-table
Feature-complete DataTable component
@structyl/hooks
24 SSR-safe, tree-shakeable hooks
@structyl/icons
Lucide icon set, typed and consistent
@structyl/utils
cn(), type guards, and pure utilities
@structyl/core
Slot, Primitive, createContext helpers
@structyl/cli
shadcn-style component installer
Free, open-source, MIT licensed. No hidden costs, no vendor lock-in.