32 production-ready React components for Next.js + Tailwind v4.
UI Kit Overview
aidimension UI ships 32 components that are:
- ✅ Accessible — Built on Radix UI primitives, WAI-ARIA compliant
- ✅ Themeable — Dark mode + CSS variables, no theme provider needed
- ✅ Tree-shakeable — Import only what you use
- ✅ AI-friendly — Every component has a
data-aidimension-componentattribute so agents can target them
Component categories#
Foundations (8)#
Button— primary, secondary, outline, ghost, link, iconBadge— status indicators with 6 variantsInput— text, email, password, search, fileTextarea— multi-line input with auto-growLabel— accessible form labelsSeparator— horizontal/vertical dividersSkeleton— loading placeholdersAvatar— user/entity avatars with fallback
Containers (5)#
Card— grouped content with header/footerDialog— modal overlaysSheet— slide-in panels (left, right, top, bottom)Tabs— switchable content panelsAccordion— collapsible content sections
Navigation (6)#
NavigationMenu— mega menu for marketing sitesMenubar— desktop application menusBreadcrumb— location hierarchyPagination— page navigation controlsCommand— ⌘K paletteContextMenu— right-click menus
Feedback (5)#
Alert— banner messagesToast— temporary notificationsTooltip— hover/focus hintsProgress— linear/circular progressHoverCard— preview-on-hover cards
Data (4)#
Table— sortable, filterable data tablesDataList— key-value pair listsCalendar— date pickerCombobox— autocomplete select
Form controls (4)#
Checkbox— boolean inputRadioGroup— single-select from optionsSwitch— toggle inputSlider— range input
Design tokens#
All components use the same design tokens, defined as CSS variables in globals.css:
:root {
--background: 0 0% 100%;
--foreground: 240 10% 3.9%;
--primary: 262 83% 58%;
--primary-foreground: 0 0% 100%;
--muted: 240 4.8% 95.9%;
--muted-foreground: 240 3.8% 46.1%;
--border: 240 5.9% 90%;
--ring: 262 83% 58%;
--radius: 0.5rem;
}
.dark {
--background: 240 10% 3.9%;
--foreground: 0 0% 98%;
--muted: 240 3.7% 15.9%;
--muted-foreground: 240 5% 64.9%;
--border: 240 3.7% 15.9%;
}Override any token in your own globals.css to re-theme the entire kit without touching component code.
Installing a single component#
If you only need a few components, copy them directly into your project:
npx @aidimension/cli@latest add button card dialogThis pastes the component source into src/components/ui/ so you own the code. No package dependency, no version drift.
Component anatomy#
Every component follows the same pattern — forwardRef + cva variants + cn utility:
import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/lib/utils";
const buttonVariants = cva(
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground hover:bg-primary/90",
outline: "border border-input bg-background hover:bg-accent",
ghost: "hover:bg-accent hover:text-accent-foreground",
},
size: {
sm: "h-8 px-3 text-xs",
md: "h-10 px-4",
lg: "h-11 px-8",
},
},
defaultVariants: { variant: "default", size: "md" },
}
);
export interface ButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof buttonVariants> {}
export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
({ className, variant, size, ...props }, ref) => (
<button
ref={ref}
className={cn(buttonVariants({ variant, size }), className)}
{...props}
/>
)
);
Button.displayName = "Button";AI agent integration#
Every component renders with a data-aidimension-component attribute. This lets agents (Claude, Cursor, GPT) target and modify components precisely:
<button data-aidimension-component="button" data-variant="default" data-size="md">
Click me
</button>Use the aidimension-component skill to teach your agent the full component API.