@reinvented/design 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useTheme.ts","../src/icons/index.ts","../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Card.tsx","../src/components/Label.tsx","../src/components/Dialog.tsx","../src/components/DropdownMenu.tsx","../src/components/Toast.tsx","../src/components/Separator.tsx","../src/components/ScrollArea.tsx","../src/components/Select.tsx","../src/components/Switch.tsx","../src/components/Checkbox.tsx","../src/components/Tabs.tsx","../src/components/Tooltip.tsx","../src/components/Skeleton.tsx","../src/components/Sheet.tsx","../src/components/Spinner.tsx","../src/components/ErrorBoundary.tsx","../src/components/CommandPalette.tsx","../src/components/ContentCard.tsx","../src/components/PageHeader.tsx","../src/components/ListItem.tsx","../src/components/FormSection.tsx","../src/components/ActionBar.tsx","../src/components/EmptyState.tsx","../src/components/Layout.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/** Merge Tailwind classes with conflict resolution */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Hook for responsive breakpoint detection.\n * @param query — CSS media query string, e.g. \"(min-width: 768px)\"\n */\nexport function useMediaQuery(query: string): boolean {\n const getMatches = useCallback((): boolean => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n }, [query]);\n\n const [matches, setMatches] = useState<boolean>(getMatches);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const mql = window.matchMedia(query);\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches);\n\n // Set initial value\n setMatches(mql.matches);\n\n mql.addEventListener(\"change\", handler);\n return () => mql.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\ntype Theme = \"dark\" | \"light\";\n\n/**\n * Hook for managing dark/light theme with `data-theme` attribute\n * on the root <html> element.\n */\nexport function useTheme() {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return \"dark\";\n return (\n (document.documentElement.getAttribute(\"data-theme\") as Theme) || \"dark\"\n );\n });\n\n const setTheme = useCallback((next: Theme) => {\n document.documentElement.setAttribute(\"data-theme\", next);\n setThemeState(next);\n try {\n localStorage.setItem(\"ri-theme\", next);\n } catch {}\n }, []);\n\n const toggleTheme = useCallback(() => {\n setTheme(theme === \"dark\" ? \"light\" : \"dark\");\n }, [theme, setTheme]);\n\n // Initialize from localStorage / system preference\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const stored = localStorage.getItem(\"ri-theme\") as Theme | null;\n if (stored) {\n setTheme(stored);\n return;\n }\n\n const prefersDark = window.matchMedia(\n \"(prefers-color-scheme: dark)\"\n ).matches;\n setTheme(prefersDark ? \"dark\" : \"light\");\n }, [setTheme]);\n\n return { theme, setTheme, toggleTheme, isDark: theme === \"dark\" } as const;\n}\n","import React from \"react\";\nimport { icons, type LucideProps } from \"lucide-react\";\n\nexport { icons, type LucideIcon, type LucideProps } from \"lucide-react\";\nexport * from \"lucide-react\";\n\nexport interface DynamicIconProps extends LucideProps {\n /** Lucide icon name, e.g. \"Settings\", \"ChevronRight\" */\n name: string;\n}\n\n/**\n * Render any Lucide icon by its name string.\n * Returns null if the icon name is not found.\n */\nexport function DynamicIcon({ name, ...props }: DynamicIconProps) {\n const Icon = icons[name as keyof typeof icons];\n if (!Icon) return null;\n return React.createElement(Icon, props);\n}\n","import React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2\",\n \"whitespace-nowrap rounded-md font-medium\",\n \"transition-all duration-fast ease-default\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n \"select-none cursor-pointer\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n primary:\n \"bg-accent text-accent-foreground hover:bg-accent-hover active:brightness-90\",\n secondary:\n \"bg-bg-elevated text-fg-primary border border-border hover:bg-bg-surface hover:border-border-strong\",\n ghost:\n \"text-fg-secondary hover:text-fg-primary hover:bg-bg-elevated\",\n destructive:\n \"bg-semantic-error text-white hover:bg-semantic-error/90 active:brightness-90\",\n link: \"text-accent underline-offset-4 hover:underline p-0 h-auto\",\n },\n size: {\n sm: \"h-7 px-3 text-xs rounded-md\",\n md: \"h-8 px-4 text-sm rounded-md\",\n lg: \"h-10 px-5 text-base rounded-lg\",\n icon: \"h-8 w-8 rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n helperText?: string;\n error?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, label, helperText, error, id, ...props }, ref) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium text-fg-secondary\"\n >\n {label}\n </label>\n )}\n <input\n id={inputId}\n className={cn(\n \"flex h-8 w-full rounded-md border bg-bg-surface px-3 text-sm text-fg-primary\",\n \"placeholder:text-fg-muted\",\n \"transition-colors duration-fast ease-default\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:border-accent\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n error\n ? \"border-semantic-error focus-visible:ring-semantic-error/50\"\n : \"border-border hover:border-border-strong\",\n className\n )}\n ref={ref}\n {...props}\n />\n {error && (\n <p className=\"text-xs text-semantic-error\">{error}</p>\n )}\n {!error && helperText && (\n <p className=\"text-xs text-fg-muted\">{helperText}</p>\n )}\n </div>\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium transition-colors select-none\",\n {\n variants: {\n variant: {\n default: \"bg-bg-elevated text-fg-secondary border border-border\",\n accent: \"bg-accent-muted text-accent border border-accent/20\",\n success:\n \"bg-semantic-success-muted text-semantic-success border border-semantic-success/20\",\n warning:\n \"bg-semantic-warning-muted text-semantic-warning border border-semantic-warning/20\",\n error:\n \"bg-semantic-error-muted text-semantic-error border border-semantic-error/20\",\n info: \"bg-semantic-info-muted text-semantic-info border border-semantic-info/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <span className={cn(badgeVariants({ variant, className }))} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cn } from \"../lib/utils\";\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-8 w-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n));\nAvatar.displayName = \"Avatar\";\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full object-cover\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = \"AvatarImage\";\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-bg-elevated text-xs font-medium text-fg-secondary\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = \"AvatarFallback\";\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border border-border-subtle bg-bg-surface\",\n \"transition-colors duration-fast ease-default\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-1 px-4 pt-4\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-sm font-semibold text-fg-primary tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-xs text-fg-muted\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-4 py-3\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center px-4 pb-4 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter };\n","import React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cn } from \"../lib/utils\";\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"text-sm font-medium text-fg-secondary leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-40\",\n className\n )}\n {...props}\n />\n));\nLabel.displayName = \"Label\";\n\nexport { Label };\n","import React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-overlay bg-bg-overlay backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-modal -translate-x-1/2 -translate-y-1/2\",\n \"w-full max-w-lg rounded-lg border border-border-subtle bg-bg-surface p-6 shadow-xl\",\n \"data-[state=open]:animate-scale-in data-[state=closed]:animate-fade-out\",\n \"focus:outline-none\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm text-fg-muted hover:text-fg-primary transition-colors duration-fast\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col gap-1 text-left\", className)}\n {...props}\n />\n);\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-fg-primary tracking-tight\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = \"DialogDescription\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex justify-end gap-2 pt-4\", className)}\n {...props}\n />\n);\n\nexport {\n Dialog,\n DialogTrigger,\n DialogClose,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n};\n","import React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-dropdown min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 shadow-lg\",\n \"data-[state=open]:animate-scale-in data-[state=closed]:animate-fade-out\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg-secondary outline-none\",\n \"hover:bg-bg-surface hover:text-fg-primary\",\n \"focus:bg-bg-surface focus:text-fg-primary\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-40\",\n \"transition-colors duration-fast\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-fg-muted\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n DropdownMenuGroup,\n DropdownMenuSub,\n DropdownMenuRadioGroup,\n};\n","import React from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\nconst ToastProvider = ToastPrimitive.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n \"fixed bottom-0 right-0 z-toast flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = \"ToastViewport\";\n\nconst toastVariants = cva(\n [\n \"group pointer-events-auto relative flex w-full items-center gap-3 overflow-hidden rounded-lg border px-4 py-3 shadow-lg\",\n \"transition-all duration-normal ease-default\",\n \"data-[state=open]:animate-slide-up data-[state=closed]:animate-fade-out\",\n \"data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)]\",\n \"data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"border-border-subtle bg-bg-elevated text-fg-primary\",\n success:\n \"border-semantic-success/20 bg-semantic-success-muted text-fg-primary\",\n error:\n \"border-semantic-error/20 bg-semantic-error-muted text-fg-primary\",\n info: \"border-semantic-info/20 bg-semantic-info-muted text-fg-primary\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface ToastProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>,\n VariantProps<typeof toastVariants> {}\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => (\n <ToastPrimitive.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n));\nToast.displayName = \"Toast\";\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Action\n ref={ref}\n className={cn(\n \"inline-flex h-7 shrink-0 items-center justify-center rounded-md border border-border bg-transparent px-3 text-xs font-medium\",\n \"hover:bg-bg-surface transition-colors duration-fast\",\n \"focus:outline-none focus:ring-2 focus:ring-accent/50\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = \"ToastAction\";\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-sm text-fg-muted hover:text-fg-primary transition-colors duration-fast\",\n className\n )}\n {...props}\n >\n <X className=\"h-3.5 w-3.5\" />\n </ToastPrimitive.Close>\n));\nToastClose.displayName = \"ToastClose\";\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n));\nToastTitle.displayName = \"ToastTitle\";\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Description\n ref={ref}\n className={cn(\"text-xs text-fg-secondary\", className)}\n {...props}\n />\n));\nToastDescription.displayName = \"ToastDescription\";\n\nexport {\n ToastProvider,\n ToastViewport,\n Toast,\n ToastAction,\n ToastClose,\n ToastTitle,\n ToastDescription,\n toastVariants,\n};\n","import React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n {...props}\n />\n )\n);\nSeparator.displayName = \"Separator\";\n\nexport { Separator };\n","import React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"../lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = \"ScrollArea\";\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors duration-fast\",\n orientation === \"vertical\" &&\n \"h-full w-1.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-1.5 flex-col border-t border-t-transparent p-px\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border-strong\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\n","import React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { ChevronDown, Check } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-8 w-full items-center justify-between rounded-md border border-border bg-bg-surface px-3 text-sm text-fg-primary\",\n \"placeholder:text-fg-muted\",\n \"hover:border-border-strong\",\n \"focus:outline-none focus:ring-2 focus:ring-accent/50 focus:border-accent\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n \"transition-colors duration-fast\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-3.5 w-3.5 text-fg-muted\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"SelectTrigger\";\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-dropdown max-h-60 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated shadow-lg\",\n \"data-[state=open]:animate-scale-in data-[state=closed]:animate-fade-out\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"SelectContent\";\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm text-fg-secondary outline-none\",\n \"hover:bg-bg-surface hover:text-fg-primary\",\n \"focus:bg-bg-surface focus:text-fg-primary\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-40\",\n \"transition-colors duration-fast\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-3.5 w-3.5 text-accent\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = \"SelectItem\";\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-xs font-medium text-fg-muted\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = \"SelectLabel\";\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectItem,\n SelectLabel,\n SelectSeparator,\n};\n","import React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n \"transition-colors duration-fast ease-default\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n \"data-[state=checked]:bg-accent data-[state=unchecked]:bg-bg-elevated\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 rounded-full bg-white shadow-sm\",\n \"transition-transform duration-fast ease-default\",\n \"data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = \"Switch\";\n\nexport { Switch };\n","import React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-border bg-bg-surface\",\n \"transition-colors duration-fast ease-default\",\n \"hover:border-border-strong\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n \"data-[state=checked]:bg-accent data-[state=checked]:border-accent data-[state=checked]:text-accent-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../lib/utils\";\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} className={cn(\"\", className)} {...props} />\n));\nTabs.displayName = \"Tabs\";\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-8 items-center gap-1 rounded-md bg-bg-surface p-0.5\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = \"TabsList\";\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1 text-xs font-medium text-fg-muted\",\n \"ring-offset-bg-base transition-all duration-fast\",\n \"hover:text-fg-secondary\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n \"data-[state=active]:bg-bg-elevated data-[state=active]:text-fg-primary data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-bg-base\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 focus-visible:ring-offset-2\",\n \"data-[state=active]:animate-fade-in\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-tooltip overflow-hidden rounded-md border border-border-subtle bg-bg-elevated px-3 py-1.5 text-xs text-fg-secondary shadow-md\",\n \"animate-scale-in\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = \"TooltipContent\";\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"animate-pulse-subtle rounded-md bg-bg-elevated\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\nconst Sheet = DialogPrimitive.Root;\nconst SheetTrigger = DialogPrimitive.Trigger;\nconst SheetClose = DialogPrimitive.Close;\nconst SheetPortal = DialogPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-overlay bg-bg-overlay backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out\",\n className\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = \"SheetOverlay\";\n\nconst sheetVariants = cva(\n \"fixed z-modal bg-bg-surface border-border-subtle shadow-xl transition-transform duration-slow ease-default focus:outline-none\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b\",\n bottom: \"inset-x-0 bottom-0 border-t\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n right: \"inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm text-fg-muted hover:text-fg-primary transition-colors duration-fast\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = \"SheetContent\";\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col gap-1 p-4\", className)}\n {...props}\n />\n);\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-fg-primary\", className)}\n {...props}\n />\n));\nSheetTitle.displayName = \"SheetTitle\";\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = \"SheetDescription\";\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n};\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface SpinnerProps {\n /** Size in pixels */\n size?: number;\n className?: string;\n}\n\nfunction Spinner({ size = 16, className }: SpinnerProps) {\n return (\n <svg\n className={cn(\"animate-spin-slow text-fg-muted\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport { Spinner };\n","import React from \"react\";\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nclass ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.error(\"[ErrorBoundary]\", error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n if (this.props.fallback) {\n return this.props.fallback;\n }\n\n return React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n padding: \"32px\",\n textAlign: \"center\" as const,\n },\n },\n React.createElement(\n \"p\",\n {\n style: {\n fontSize: \"14px\",\n fontWeight: 500,\n color: \"var(--fg-primary)\",\n },\n },\n \"Something went wrong\"\n ),\n React.createElement(\n \"p\",\n {\n style: {\n fontSize: \"13px\",\n color: \"var(--fg-muted)\",\n },\n },\n this.state.error?.message || \"An unexpected error occurred\"\n ),\n React.createElement(\n \"button\",\n {\n onClick: () => this.setState({ hasError: false, error: null }),\n style: {\n marginTop: \"8px\",\n padding: \"4px 12px\",\n fontSize: \"13px\",\n fontWeight: 500,\n color: \"var(--accent-foreground)\",\n background: \"var(--accent)\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n },\n },\n \"Try again\"\n )\n );\n }\n\n return this.props.children;\n }\n}\n\nexport { ErrorBoundary };\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\n\n/* ── Base cmdk wrappers ── */\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-lg bg-bg-elevated text-fg-primary\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <Search className=\"h-4 w-4 shrink-0 text-fg-muted\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full bg-transparent text-sm text-fg-primary outline-none\",\n \"placeholder:text-fg-muted\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n className\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = \"CommandInput\";\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n \"max-h-[300px] overflow-y-auto overflow-x-hidden p-1\",\n className\n )}\n {...props}\n />\n));\nCommandList.displayName = \"CommandList\";\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm text-fg-muted\"\n {...props}\n />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden py-1 text-fg-primary [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-fg-muted\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"CommandGroup\";\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg-secondary outline-none\",\n \"data-[selected=true]:bg-bg-surface data-[selected=true]:text-fg-primary\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-40\",\n \"transition-colors duration-fast\",\n className\n )}\n {...props}\n />\n));\nCommandItem.displayName = \"CommandItem\";\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = \"CommandSeparator\";\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\"ml-auto text-xs tracking-wide text-fg-muted\", className)}\n {...props}\n />\n);\n\n/* ── CommandPalette composition component ── */\n\nexport interface CommandPaletteProps {\n /** Whether the palette is open */\n open?: boolean;\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placeholder text for search input */\n placeholder?: string;\n /** Content to render inside the palette */\n children: React.ReactNode;\n}\n\nfunction CommandPalette({\n open: controlledOpen,\n onOpenChange,\n placeholder = \"Type a command or search…\",\n children,\n}: CommandPaletteProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = controlledOpen ?? internalOpen;\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n setInternalOpen(next);\n onOpenChange?.(next);\n },\n [onOpenChange]\n );\n\n // Global Cmd+K / Ctrl+K listener\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault();\n handleOpenChange(!isOpen);\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, handleOpenChange]);\n\n if (!isOpen) return null;\n\n return (\n <div className=\"fixed inset-0 z-modal\">\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 bg-bg-overlay backdrop-blur-sm animate-fade-in\"\n onClick={() => handleOpenChange(false)}\n />\n {/* Palette */}\n <div className=\"fixed left-1/2 top-[20%] z-modal w-full max-w-lg -translate-x-1/2 animate-scale-in\">\n <Command\n className=\"rounded-lg border border-border-subtle shadow-xl\"\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") {\n handleOpenChange(false);\n }\n }}\n >\n <CommandInput placeholder={placeholder} />\n <CommandList>{children}</CommandList>\n </Command>\n </div>\n </div>\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n CommandPalette,\n};\n","import React from \"react\";\n\n/**\n * ContentCard — Locked composition component.\n * Surface card with consistent padding, optional title/description.\n * Does NOT accept className — use it the one correct way.\n */\nexport interface ContentCardProps {\n title?: string;\n description?: string;\n children: React.ReactNode;\n}\n\nexport function ContentCard({ title, description, children }: ContentCardProps) {\n return (\n <div\n style={{\n borderRadius: \"var(--radius-lg)\",\n border: \"1px solid var(--border-subtle)\",\n background: \"var(--bg-surface)\",\n padding: \"var(--space-4)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-3)\",\n }}\n >\n {(title || description) && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-1)\" }}>\n {title && (\n <h3\n style={{\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-semibold)\" as unknown as number,\n color: \"var(--fg-primary)\",\n letterSpacing: \"var(--tracking-tight)\",\n lineHeight: \"var(--leading-tight)\",\n margin: 0,\n }}\n >\n {title}\n </h3>\n )}\n {description && (\n <p\n style={{\n fontSize: \"var(--text-xs)\",\n color: \"var(--fg-muted)\",\n lineHeight: \"var(--leading-normal)\",\n margin: 0,\n }}\n >\n {description}\n </p>\n )}\n </div>\n )}\n {children}\n </div>\n );\n}\n","import React from \"react\";\n\n/**\n * PageHeader — Locked composition component.\n * Page title + optional description + action slot.\n * Does NOT accept className.\n */\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional action elements (buttons, etc.) rendered on the right */\n actions?: React.ReactNode;\n}\n\nexport function PageHeader({ title, description, actions }: PageHeaderProps) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: \"var(--space-4)\",\n paddingBottom: \"var(--space-6)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-1)\" }}>\n <h1\n style={{\n fontSize: \"var(--text-2xl)\",\n fontWeight: \"var(--font-semibold)\" as unknown as number,\n color: \"var(--fg-primary)\",\n letterSpacing: \"var(--tracking-tight)\",\n lineHeight: \"var(--leading-tight)\",\n margin: 0,\n }}\n >\n {title}\n </h1>\n {description && (\n <p\n style={{\n fontSize: \"var(--text-sm)\",\n color: \"var(--fg-muted)\",\n lineHeight: \"var(--leading-normal)\",\n margin: 0,\n }}\n >\n {description}\n </p>\n )}\n </div>\n {actions && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-2)\", flexShrink: 0 }}>\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\n\n/**\n * ListItem — Locked composition component.\n * Icon + title + description + trailing element.\n * Does NOT accept className.\n */\nexport interface ListItemProps {\n /** Leading icon or avatar */\n leading?: React.ReactNode;\n title: string;\n description?: string;\n /** Trailing element (badge, button, chevron) */\n trailing?: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport function ListItem({\n leading,\n title,\n description,\n trailing,\n onClick,\n}: ListItemProps) {\n const interactive = !!onClick;\n\n return (\n <div\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n interactive\n ? (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }\n : undefined\n }\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-2) var(--space-3)\",\n borderRadius: \"var(--radius-md)\",\n cursor: interactive ? \"pointer\" : \"default\",\n transition: \"background var(--duration-fast) var(--ease-default)\",\n }}\n onMouseEnter={(e) => {\n if (interactive) {\n (e.currentTarget as HTMLElement).style.background = \"var(--bg-elevated)\";\n }\n }}\n onMouseLeave={(e) => {\n if (interactive) {\n (e.currentTarget as HTMLElement).style.background = \"transparent\";\n }\n }}\n >\n {leading && (\n <div\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"var(--fg-muted)\",\n }}\n >\n {leading}\n </div>\n )}\n\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-medium)\" as unknown as number,\n color: \"var(--fg-primary)\",\n lineHeight: \"var(--leading-tight)\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {title}\n </div>\n {description && (\n <div\n style={{\n fontSize: \"var(--text-xs)\",\n color: \"var(--fg-muted)\",\n lineHeight: \"var(--leading-normal)\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {description}\n </div>\n )}\n </div>\n\n {trailing && (\n <div style={{ flexShrink: 0, display: \"flex\", alignItems: \"center\" }}>\n {trailing}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\n\n/**\n * FormSection — Locked composition component.\n * Groups form fields with a heading and optional description.\n * Does NOT accept className.\n */\nexport interface FormSectionProps {\n title: string;\n description?: string;\n children: React.ReactNode;\n}\n\nexport function FormSection({ title, description, children }: FormSectionProps) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-4)\",\n paddingBottom: \"var(--space-6)\",\n borderBottom: \"1px solid var(--border-subtle)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-1)\" }}>\n <h2\n style={{\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-semibold)\" as unknown as number,\n color: \"var(--fg-primary)\",\n letterSpacing: \"var(--tracking-tight)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n {description && (\n <p\n style={{\n fontSize: \"var(--text-sm)\",\n color: \"var(--fg-muted)\",\n lineHeight: \"var(--leading-normal)\",\n margin: 0,\n }}\n >\n {description}\n </p>\n )}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-4)\" }}>\n {children}\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\n/**\n * ActionBar — Locked composition component.\n * Bottom-anchored bar with primary/secondary actions.\n * Does NOT accept className.\n */\nexport interface ActionBarProps {\n /** Primary action(s) rendered on the right */\n primaryAction: React.ReactNode;\n /** Secondary action(s) rendered on the left */\n secondaryAction?: React.ReactNode;\n}\n\nexport function ActionBar({ primaryAction, secondaryAction }: ActionBarProps) {\n return (\n <div\n style={{\n position: \"sticky\",\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-3) var(--space-4)\",\n borderTop: \"1px solid var(--border-subtle)\",\n background: \"var(--bg-surface)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-2)\" }}>\n {secondaryAction}\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-2)\" }}>\n {primaryAction}\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\n/**\n * EmptyState — Locked composition component.\n * Centered icon + title + description + optional CTA.\n * Does NOT accept className.\n */\nexport interface EmptyStateProps {\n /** Lucide icon element or any React node */\n icon?: React.ReactNode;\n title: string;\n description?: string;\n /** Call-to-action element (typically a Button) */\n action?: React.ReactNode;\n}\n\nexport function EmptyState({ icon, title, description, action }: EmptyStateProps) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n padding: \"var(--space-12) var(--space-6)\",\n gap: \"var(--space-3)\",\n }}\n >\n {icon && (\n <div style={{ color: \"var(--fg-disabled)\", marginBottom: \"var(--space-1)\" }}>\n {icon}\n </div>\n )}\n <h3\n style={{\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-semibold)\" as unknown as number,\n color: \"var(--fg-primary)\",\n margin: 0,\n }}\n >\n {title}\n </h3>\n {description && (\n <p\n style={{\n fontSize: \"var(--text-sm)\",\n color: \"var(--fg-muted)\",\n lineHeight: \"var(--leading-normal)\",\n maxWidth: \"320px\",\n margin: 0,\n }}\n >\n {description}\n </p>\n )}\n {action && (\n <div style={{ marginTop: \"var(--space-2)\" }}>\n {action}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../lib/utils\";\n\n/* ── AppShell ── */\n\nexport interface AppShellProps {\n topBar?: React.ReactNode;\n sideRail?: React.ReactNode;\n bottomBar?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\nfunction AppShell({ topBar, sideRail, bottomBar, children, className }: AppShellProps) {\n return (\n <div className={cn(\"flex h-screen w-screen flex-col bg-bg-base text-fg-primary overflow-hidden\", className)}>\n {topBar}\n <div className=\"flex flex-1 overflow-hidden\">\n {sideRail}\n <main className=\"flex-1 overflow-y-auto\">\n {children}\n </main>\n </div>\n {bottomBar}\n </div>\n );\n}\n\n/* ── TopBar ── */\n\nexport interface TopBarProps {\n /** Brand / logo element on the left */\n brand?: React.ReactNode;\n /** Center content (search trigger, navigation) */\n center?: React.ReactNode;\n /** Right-side actions (notifications, avatar) */\n actions?: React.ReactNode;\n className?: string;\n}\n\nfunction TopBar({ brand, center, actions, className }: TopBarProps) {\n return (\n <header\n className={cn(\n \"flex h-12 shrink-0 items-center justify-between gap-4 border-b border-border-subtle bg-bg-base px-4\",\n className\n )}\n >\n <div className=\"flex items-center gap-3\">{brand}</div>\n <div className=\"flex flex-1 items-center justify-center\">{center}</div>\n <div className=\"flex items-center gap-2\">{actions}</div>\n </header>\n );\n}\n\n/* ── SideRail ── */\n\nexport interface SideRailProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SideRail({ children, className }: SideRailProps) {\n return (\n <nav\n className={cn(\n \"flex w-12 shrink-0 flex-col items-center gap-1 border-r border-border-subtle bg-bg-base py-2\",\n className\n )}\n >\n {children}\n </nav>\n );\n}\n\nexport interface SideRailItemProps {\n children: React.ReactNode;\n active?: boolean;\n onClick?: () => void;\n tooltip?: string;\n}\n\nfunction SideRailItem({ children, active, onClick, tooltip }: SideRailItemProps) {\n return (\n <button\n title={tooltip}\n onClick={onClick}\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-md transition-colors duration-fast\",\n active\n ? \"bg-accent-muted text-accent\"\n : \"text-fg-muted hover:text-fg-secondary hover:bg-bg-elevated\"\n )}\n >\n {children}\n </button>\n );\n}\n\n/* ── BottomBar ── */\n\nexport interface BottomBarProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction BottomBar({ children, className }: BottomBarProps) {\n return (\n <nav\n className={cn(\n \"flex shrink-0 items-center justify-around border-t border-border-subtle bg-bg-base px-2 py-1 md:hidden\",\n className\n )}\n >\n {children}\n </nav>\n );\n}\n\nexport interface BottomBarItemProps {\n children: React.ReactNode;\n label?: string;\n active?: boolean;\n onClick?: () => void;\n}\n\nfunction BottomBarItem({ children, label, active, onClick }: BottomBarItemProps) {\n return (\n <button\n onClick={onClick}\n className={cn(\n \"flex flex-col items-center gap-0.5 px-3 py-1 text-xs transition-colors duration-fast\",\n active ? \"text-accent\" : \"text-fg-muted\"\n )}\n >\n {children}\n {label && <span>{label}</span>}\n </button>\n );\n}\n\n/* ── PageContainer ── */\n\nexport interface PageContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction PageContainer({ children, className }: PageContainerProps) {\n return (\n <div\n className={cn(\n \"mx-auto w-full max-w-5xl px-4 py-6 sm:px-6 lg:px-8\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nexport {\n AppShell,\n TopBar,\n SideRail,\n SideRailItem,\n BottomBar,\n BottomBarItem,\n PageContainer,\n};\n"],"mappings":"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","names":["useCallback","useEffect","useState","icons","Icon","React","React","React","jsx","React","cva","jsx","cva","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","jsxs","React","React","jsx","React","React","cva","X","jsx","React","cva","X","React","jsx","Separator","React","React","jsx","jsxs","React","React","jsx","jsxs","React","React","jsx","React","React","Check","jsx","React","Check","React","jsx","React","React","jsx","React","jsx","React","DialogPrimitive","cva","X","jsx","jsxs","React","cva","X","jsx","jsxs","React","React","useCallback","useEffect","useState","jsx","jsxs","React","useState","useCallback","useEffect","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs"]}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@reinvented/design",
3
+ "version": "0.1.0",
4
+ "description": "Reinvented platform design system — premium UI components and tokens",
5
+ "license": "MIT",
6
+ "author": "Reinvented",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/reinvented/ri-flex"
10
+ },
11
+ "type": "module",
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "tailwind.config.ts",
18
+ "README.md"
19
+ ],
20
+ "main": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "import": "./dist/index.js",
25
+ "types": "./dist/index.d.ts"
26
+ },
27
+ "./css": "./dist/index.css",
28
+ "./tailwind": "./tailwind.config.ts"
29
+ },
30
+ "peerDependencies": {
31
+ "react": "^18 || ^19",
32
+ "react-dom": "^18 || ^19"
33
+ },
34
+ "dependencies": {
35
+ "@radix-ui/react-avatar": "^1.1.2",
36
+ "@radix-ui/react-checkbox": "^1.1.3",
37
+ "@radix-ui/react-dialog": "^1.1.4",
38
+ "@radix-ui/react-dropdown-menu": "^2.1.4",
39
+ "@radix-ui/react-label": "^2.1.1",
40
+ "@radix-ui/react-popover": "^1.1.4",
41
+ "@radix-ui/react-scroll-area": "^1.2.2",
42
+ "@radix-ui/react-select": "^2.1.4",
43
+ "@radix-ui/react-separator": "^1.1.1",
44
+ "@radix-ui/react-slot": "^1.1.1",
45
+ "@radix-ui/react-switch": "^1.1.2",
46
+ "@radix-ui/react-tabs": "^1.1.2",
47
+ "@radix-ui/react-toast": "^1.2.4",
48
+ "@radix-ui/react-tooltip": "^1.1.6",
49
+ "class-variance-authority": "^0.7.1",
50
+ "clsx": "^2.1.1",
51
+ "cmdk": "^1.0.4",
52
+ "lucide-react": "^0.469.0",
53
+ "tailwind-merge": "^2.6.0"
54
+ },
55
+ "devDependencies": {
56
+ "@types/react": "^18.3.18",
57
+ "@types/react-dom": "^18.3.5",
58
+ "autoprefixer": "^10.4.20",
59
+ "postcss": "^8.4.49",
60
+ "postcss-cli": "^11.0.1",
61
+ "postcss-import": "^16.1.1",
62
+ "tailwindcss": "^3.4.17",
63
+ "tsup": "^8.3.6",
64
+ "typescript": "^5.7.3",
65
+ "@reinvented/tsconfig": "0.0.0"
66
+ },
67
+ "scripts": {
68
+ "build": "tsup && postcss src/index.css -o dist/index.css",
69
+ "dev": "tsup --watch",
70
+ "lint": "eslint .",
71
+ "typecheck": "tsc --noEmit",
72
+ "clean": "rm -rf dist"
73
+ }
74
+ }
@@ -0,0 +1,174 @@
1
+ import type { Config } from "tailwindcss";
2
+
3
+ const config: Config = {
4
+ content: ["./src/**/*.{ts,tsx}"],
5
+ darkMode: ["class", '[data-theme="dark"]'],
6
+ theme: {
7
+ extend: {
8
+ /* ── Colors mapped to CSS tokens ── */
9
+ colors: {
10
+ bg: {
11
+ base: "var(--bg-base)",
12
+ surface: "var(--bg-surface)",
13
+ elevated: "var(--bg-elevated)",
14
+ overlay: "var(--bg-overlay)",
15
+ },
16
+ fg: {
17
+ primary: "var(--fg-primary)",
18
+ secondary: "var(--fg-secondary)",
19
+ muted: "var(--fg-muted)",
20
+ disabled: "var(--fg-disabled)",
21
+ },
22
+ accent: {
23
+ DEFAULT: "var(--accent)",
24
+ hover: "var(--accent-hover)",
25
+ muted: "var(--accent-muted)",
26
+ foreground: "var(--accent-foreground)",
27
+ },
28
+ semantic: {
29
+ success: "var(--success)",
30
+ "success-muted": "var(--success-muted)",
31
+ warning: "var(--warning)",
32
+ "warning-muted": "var(--warning-muted)",
33
+ error: "var(--error)",
34
+ "error-muted": "var(--error-muted)",
35
+ info: "var(--info)",
36
+ "info-muted": "var(--info-muted)",
37
+ },
38
+ border: {
39
+ DEFAULT: "var(--border-default)",
40
+ subtle: "var(--border-subtle)",
41
+ strong: "var(--border-strong)",
42
+ },
43
+ },
44
+
45
+ /* ── Typography ── */
46
+ fontFamily: {
47
+ sans: ["var(--font-sans)"],
48
+ mono: ["var(--font-mono)"],
49
+ },
50
+ fontSize: {
51
+ xs: ["var(--text-xs)", { lineHeight: "var(--leading-normal)" }],
52
+ sm: ["var(--text-sm)", { lineHeight: "var(--leading-normal)" }],
53
+ base: ["var(--text-base)", { lineHeight: "var(--leading-normal)" }],
54
+ lg: ["var(--text-lg)", { lineHeight: "var(--leading-normal)" }],
55
+ xl: ["var(--text-xl)", { lineHeight: "var(--leading-tight)" }],
56
+ "2xl": ["var(--text-2xl)", { lineHeight: "var(--leading-tight)" }],
57
+ "3xl": ["var(--text-3xl)", { lineHeight: "var(--leading-tight)" }],
58
+ "4xl": ["var(--text-4xl)", { lineHeight: "var(--leading-tight)" }],
59
+ },
60
+
61
+ /* ── Spacing ── */
62
+ spacing: {
63
+ px: "var(--space-px)",
64
+ "0.5": "var(--space-0-5)",
65
+ "1": "var(--space-1)",
66
+ "1.5": "var(--space-1-5)",
67
+ "2": "var(--space-2)",
68
+ "3": "var(--space-3)",
69
+ "4": "var(--space-4)",
70
+ "5": "var(--space-5)",
71
+ "6": "var(--space-6)",
72
+ "8": "var(--space-8)",
73
+ "10": "var(--space-10)",
74
+ "12": "var(--space-12)",
75
+ "16": "var(--space-16)",
76
+ "20": "var(--space-20)",
77
+ "24": "var(--space-24)",
78
+ },
79
+
80
+ /* ── Border Radius ── */
81
+ borderRadius: {
82
+ sm: "var(--radius-sm)",
83
+ md: "var(--radius-md)",
84
+ lg: "var(--radius-lg)",
85
+ xl: "var(--radius-xl)",
86
+ full: "var(--radius-full)",
87
+ },
88
+
89
+ /* ── Shadows ── */
90
+ boxShadow: {
91
+ sm: "var(--shadow-sm)",
92
+ md: "var(--shadow-md)",
93
+ lg: "var(--shadow-lg)",
94
+ xl: "var(--shadow-xl)",
95
+ },
96
+
97
+ /* ── Z-Index ── */
98
+ zIndex: {
99
+ base: "var(--z-base)",
100
+ raised: "var(--z-raised)",
101
+ dropdown: "var(--z-dropdown)",
102
+ sticky: "var(--z-sticky)",
103
+ overlay: "var(--z-overlay)",
104
+ modal: "var(--z-modal)",
105
+ toast: "var(--z-toast)",
106
+ tooltip: "var(--z-tooltip)",
107
+ },
108
+
109
+ /* ── Transition ── */
110
+ transitionTimingFunction: {
111
+ default: "var(--ease-default)",
112
+ spring: "var(--ease-spring)",
113
+ },
114
+ transitionDuration: {
115
+ fast: "var(--duration-fast)",
116
+ normal: "var(--duration-normal)",
117
+ slow: "var(--duration-slow)",
118
+ },
119
+
120
+ /* ── Animations ── */
121
+ keyframes: {
122
+ "fade-in": {
123
+ "0%": { opacity: "0" },
124
+ "100%": { opacity: "1" },
125
+ },
126
+ "fade-out": {
127
+ "0%": { opacity: "1" },
128
+ "100%": { opacity: "0" },
129
+ },
130
+ "slide-up": {
131
+ "0%": { opacity: "0", transform: "translateY(8px)" },
132
+ "100%": { opacity: "1", transform: "translateY(0)" },
133
+ },
134
+ "slide-down": {
135
+ "0%": { opacity: "0", transform: "translateY(-8px)" },
136
+ "100%": { opacity: "1", transform: "translateY(0)" },
137
+ },
138
+ "scale-in": {
139
+ "0%": { opacity: "0", transform: "scale(0.95)" },
140
+ "100%": { opacity: "1", transform: "scale(1)" },
141
+ },
142
+ "pulse-subtle": {
143
+ "0%, 100%": { opacity: "1" },
144
+ "50%": { opacity: "0.6" },
145
+ },
146
+ "spin-slow": {
147
+ "0%": { transform: "rotate(0deg)" },
148
+ "100%": { transform: "rotate(360deg)" },
149
+ },
150
+ },
151
+ animation: {
152
+ "fade-in": "fade-in var(--duration-normal) var(--ease-default)",
153
+ "fade-out": "fade-out var(--duration-normal) var(--ease-default)",
154
+ "slide-up": "slide-up var(--duration-normal) var(--ease-default)",
155
+ "slide-down": "slide-down var(--duration-normal) var(--ease-default)",
156
+ "scale-in": "scale-in var(--duration-normal) var(--ease-spring)",
157
+ "pulse-subtle": "pulse-subtle 2s var(--ease-default) infinite",
158
+ "spin-slow": "spin-slow 1s linear infinite",
159
+ },
160
+
161
+ /* ── Backdrop Blur for glassmorphism ── */
162
+ backdropBlur: {
163
+ xs: "2px",
164
+ sm: "4px",
165
+ md: "8px",
166
+ lg: "16px",
167
+ xl: "24px",
168
+ },
169
+ },
170
+ },
171
+ plugins: [],
172
+ };
173
+
174
+ export default config;