UI components
Headless, shadcn-vue style components for Vue 3 + Nuxt 3/4. Each component ships as its own independently-versioned package — install only what you need. Fully typed, themed via CSS variables, dark-mode out of the box.
Components
ATelInput— international phone input. Built on reka-ui and vaul-vue. Country auto-detect, libphonenumber-js validation, responsive popover/drawer picker, VeeValidate + Zod integration.ASkeleton— auto-generating skeleton loader. First paint mirrors the slot's HTML structure; second load replays a pixel-aligned shape captured from the real DOM. Public composable + primitives for crafting custom skeleton flows.
Theming
Every design token is a CSS variable prefixed --ak-ui-. Override any of them globally on :root, scoped to a wrapper class, or inline — components pick up the change at runtime via the cascade. Portaled popover / drawer content inherits.
Values are HSL triplets — no hsl(…) wrapper — because the Tailwind tokens compose them via hsl(var(--ak-ui-…)).
Tokens
| Variable | Used for |
|---|---|
--ak-ui-background / *-foreground | Page background + text |
--ak-ui-popover / *-foreground | Popover surfaces + their text |
--ak-ui-muted / *-foreground | Hint text, search bar bg, country trigger bg |
--ak-ui-accent / *-foreground | List hover + selected row |
--ak-ui-destructive | Error ring + warning icon |
--ak-ui-border / --ak-ui-input | Outer border + inner dividers |
--ak-ui-ring | Focus ring (the visual "brand") |
--ak-ui-radius | Border radius (no Tailwind token — used directly) |
Live theming recipes (brand-only, day/night, multi-tenant, server-driven, state-specific) live on the ATelInput page.
License
MIT © alikhalilll