Skip to content
Vue 3Reka UITailwind v4Nuxt moduleMIT

Accessible by default.
Yours to restyle.

71 components that arrive with keyboard navigation, focus management and ARIA already working — then hand you a class, a per-slot ui, or unstyled when the defaults are not what you want. No fighting the library over a border radius.

setup

$ pnpm add iryx-ui

// main.tsapp.use(IryxUi)

/* main.css */@import "iryx-ui/theme.css";

The behaviour is already done.

Keyboard, focus and ARIA, from Reka UI

Press into these, then use the arrow keys, type to jump, and to close — focus lands back where it started.

Three ways out.

class · ui · unstyled

// merge with the built-in classes<IButton class="rounded-full" />
// reach a single slot<ISelect :ui="{ content: 'w-72' }" />
// keep the primitive, drop the paint<IDialog unstyled />

Money and dates that don't drift.

Decimals stay exact, a date stays the day you meant

0.1 + 0.2 → 0.30000000000000004"0.10" + "0.20" → "0.30"
new Date('2026-08-15') → Aug 14'2026-08-15' → 15 August

One set of tokens, both appearances.

CSS variables, and a font token you aim at your own family

applyTheme() — try one
primary
success
warning
danger
muted
background

--iryx-primary: oklch(0.59 0.2 277);

Menus and lists are data

An items array in, a menu out. An entry carrying its own items becomes a group.

IDropdownMenu →

Validation you already have

Any Standard Schema validator — Zod, Valibot, ArkType — or a plain function you wrote yourself.

IForm →

Sorting and selection, handled

Sorting, selection and expansion, client- or server-driven. Fetching, caching and auth stay in your data layer.

ITable →

Charts drawn in plain SVG

Sparklines, bars and lines on the same tokens as everything else, rendered by the library itself.

ILineChart →

Every component

Buttons, forms, tables, dialogs, drawers, date pickers, charts, an app shell — each with its own page, its props in full, and demos you can operate.