veloria-ui 0.1.2

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +206 -0
  2. package/LICENSE +21 -0
  3. package/README.md +253 -0
  4. package/dist/cli/index.js +511 -0
  5. package/dist/index.d.mts +1317 -0
  6. package/dist/index.d.ts +1317 -0
  7. package/dist/index.js +5373 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/index.mjs +5130 -0
  10. package/dist/index.mjs.map +1 -0
  11. package/dist/provider.d.mts +15 -0
  12. package/dist/provider.d.ts +15 -0
  13. package/dist/provider.js +1197 -0
  14. package/dist/provider.js.map +1 -0
  15. package/dist/provider.mjs +1161 -0
  16. package/dist/provider.mjs.map +1 -0
  17. package/dist/tailwind.d.ts +25 -0
  18. package/dist/tailwind.js +129 -0
  19. package/package.json +138 -0
  20. package/src/cli/index.ts +303 -0
  21. package/src/cli/registry.ts +139 -0
  22. package/src/components/advanced-forms/index.tsx +975 -0
  23. package/src/components/basic/Button.tsx +135 -0
  24. package/src/components/basic/IconButton.tsx +69 -0
  25. package/src/components/basic/index.tsx +446 -0
  26. package/src/components/data-display/index.tsx +1158 -0
  27. package/src/components/feedback/index.tsx +1051 -0
  28. package/src/components/forms/index.tsx +476 -0
  29. package/src/components/layout/index.tsx +296 -0
  30. package/src/components/media/index.tsx +437 -0
  31. package/src/components/navigation/index.tsx +484 -0
  32. package/src/components/overlay/index.tsx +473 -0
  33. package/src/components/utility/index.tsx +566 -0
  34. package/src/hooks/index.ts +602 -0
  35. package/src/hooks/use-toast.tsx +74 -0
  36. package/src/index.ts +396 -0
  37. package/src/provider.tsx +54 -0
  38. package/src/styles/atlas.css +252 -0
  39. package/src/tailwind.ts +124 -0
  40. package/src/types/index.ts +95 -0
  41. package/src/utils/cn.ts +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/basic/Button.tsx","../src/components/basic/IconButton.tsx","../src/components/basic/index.tsx","../src/components/layout/index.tsx","../src/components/navigation/index.tsx","../src/components/forms/index.tsx","../src/components/advanced-forms/index.tsx","../src/components/data-display/index.tsx","../src/components/feedback/index.tsx","../src/components/overlay/index.tsx","../src/components/media/index.tsx","../src/components/utility/index.tsx","../src/hooks/index.ts","../src/hooks/use-toast.tsx","../src/tailwind.ts"],"names":["twMerge","clsx","cva","React2","Slot","jsxs","jsx","React3","React4","AvatarPrimitive","SeparatorPrimitive","TooltipPrimitive","React5","AspectRatioPrimitive","ScrollAreaPrimitive","React6","DropdownMenuPrimitive","TabsPrimitive","React7","SelectPrimitive","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","SwitchPrimitive","SliderPrimitive","React8","Fragment","React9","List","_","React10","ToastPrimitive","ProgressPrimitive","DialogPrimitive","React11","PopoverPrimitive","HoverCardPrimitive","ContextMenuPrimitive","Command","Image","React12","React13","e","React14","React15"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges Tailwind classes without conflicts.\n * Wrapper around clsx + tailwind-merge — use this everywhere in Veloria UI\n * instead of raw string concatenation.\n *\n * @example\n * cn(\"px-4 py-2\", isLarge && \"px-8\", className)\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n\n/**\n * Chains two event handlers so both fire, but respects defaultPrevented\n * on the original handler before calling ours.\n */\nexport function composeEventHandlers<E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n if (\n !checkForDefaultPrevented ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n}\n\n/**\n * Quick incrementing ID generator — used for linking labels to inputs\n * when no explicit id prop is passed.\n */\nlet idCounter = 0;\nexport function generateId(prefix = \"atlas\"): string {\n return `${prefix}-${++idCounter}`;\n}\n\n/** True only in browser environments. Guards SSR code paths. */\nexport const isBrowser = typeof window !== \"undefined\";\n\n/** A do-nothing function. Handy as a default prop value. */\nexport const noop = () => undefined;\n\n/** Narrows out null and undefined from a value. */\nexport function isDefined<T>(value: T | undefined | null): value is T {\n return value !== undefined && value !== null;\n}\n\n/**\n * Filters React.Children down to only valid elements.\n * Useful when mapping children and you need to skip strings/nulls.\n */\nexport function getValidChildren(children: React.ReactNode) {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child)\n ) as React.ReactElement[];\n}\n\nimport React from \"react\";\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst buttonVariants = cva(\n [\n \"atlas-button\",\n \"inline-flex items-center justify-center gap-2\",\n \"whitespace-nowrap rounded-md font-medium\",\n \"ring-offset-background transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"select-none\",\n ],\n {\n variants: {\n variant: {\n solid:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90 active:scale-[0.98]\",\n outline:\n \"border border-input bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground\",\n ghost:\n \"bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground\",\n soft: \"bg-primary/10 text-primary hover:bg-primary/20\",\n link: \"text-primary underline-offset-4 hover:underline p-0 h-auto\",\n danger:\n \"bg-destructive text-destructive-foreground shadow hover:bg-destructive/90\",\n success:\n \"bg-success text-success-foreground shadow hover:bg-success/90\",\n },\n size: {\n xs: \"h-6 px-2 text-xs rounded\",\n sm: \"h-8 px-3 text-sm\",\n md: \"h-9 px-4 text-sm\",\n lg: \"h-10 px-6 text-base\",\n xl: \"h-12 px-8 text-base\",\n icon: \"h-9 w-9\",\n },\n fullWidth: {\n true: \"w-full\",\n },\n loading: {\n true: \"cursor-wait\",\n },\n },\n defaultVariants: {\n variant: \"solid\",\n size: \"md\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Render as child element (Radix Slot pattern) */\n asChild?: boolean;\n /** Show loading spinner */\n loading?: boolean;\n /** Left icon slot */\n leftIcon?: React.ReactNode;\n /** Right icon slot */\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n loading,\n asChild = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, fullWidth, loading, className }))}\n disabled={disabled || loading === true}\n aria-busy={loading}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-0.5 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n )}\n {!loading && leftIcon && (\n <span className=\"shrink-0\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && !loading && (\n <span className=\"shrink-0\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst iconButtonVariants = cva(\n [\n \"atlas-icon-button\",\n \"inline-flex items-center justify-center rounded-md\",\n \"transition-all duration-150 shrink-0\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n ],\n {\n variants: {\n variant: {\n solid: \"bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.96]\",\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n ghost: \"bg-transparent hover:bg-accent hover:text-accent-foreground\",\n soft: \"bg-primary/10 text-primary hover:bg-primary/20\",\n danger: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n },\n size: {\n xs: \"h-6 w-6 [&>svg]:h-3 [&>svg]:w-3\",\n sm: \"h-7 w-7 [&>svg]:h-3.5 [&>svg]:w-3.5\",\n md: \"h-9 w-9 [&>svg]:h-4 [&>svg]:w-4\",\n lg: \"h-10 w-10 [&>svg]:h-5 [&>svg]:w-5\",\n xl: \"h-12 w-12 [&>svg]:h-6 [&>svg]:w-6\",\n },\n shape: {\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"ghost\",\n size: \"md\",\n shape: \"square\",\n },\n }\n);\n\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n /** Accessible label — required for screen readers */\n \"aria-label\": string;\n asChild?: boolean;\n icon?: React.ReactNode;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, variant, size, shape, asChild = false, icon, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(iconButtonVariants({ variant, size, shape, className }))}\n {...props}\n >\n {icon ?? children}\n </Comp>\n );\n }\n);\n\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","// ─── Link ─────────────────────────────────────────────────────────────────\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Link ─────────────────────────────────────────────────────────────────\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n asChild?: boolean;\n external?: boolean;\n underline?: \"always\" | \"hover\" | \"none\";\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n ({ className, asChild, external, underline = \"hover\", children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n const externalProps = external\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"atlas-link text-primary transition-colors\",\n underline === \"always\" && \"underline underline-offset-4\",\n underline === \"hover\" && \"hover:underline underline-offset-4\",\n underline === \"none\" && \"no-underline\",\n className\n )}\n {...externalProps}\n {...props}\n >\n {children}\n {external && (\n <svg\n className=\"inline-block ml-0.5 h-3 w-3 align-super\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n )}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\n// ─── Badge ─────────────────────────────────────────────────────────────────\n\nconst badgeVariants = cva(\n \"atlas-badge inline-flex items-center gap-1 rounded-full font-medium transition-colors\",\n {\n variants: {\n variant: {\n solid: \"bg-primary text-primary-foreground\",\n outline: \"border border-current bg-transparent\",\n soft: \"bg-primary/10 text-primary\",\n neutral: \"bg-muted text-muted-foreground\",\n },\n size: {\n sm: \"px-1.5 py-0.5 text-[10px]\",\n md: \"px-2 py-0.5 text-xs\",\n lg: \"px-2.5 py-1 text-sm\",\n },\n color: {\n primary: \"\",\n success: \"\",\n warning: \"\",\n danger: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n { variant: \"solid\", color: \"success\", className: \"bg-success text-success-foreground\" },\n { variant: \"solid\", color: \"warning\", className: \"bg-warning text-warning-foreground\" },\n { variant: \"solid\", color: \"danger\", className: \"bg-destructive text-destructive-foreground\" },\n { variant: \"solid\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { variant: \"soft\", color: \"success\", className: \"bg-success/10 text-success\" },\n { variant: \"soft\", color: \"warning\", className: \"bg-warning/10 text-warning\" },\n { variant: \"soft\", color: \"danger\", className: \"bg-destructive/10 text-destructive\" },\n { variant: \"soft\", color: \"info\", className: \"bg-info/10 text-info\" },\n ],\n defaultVariants: {\n variant: \"soft\",\n size: \"md\",\n color: \"primary\",\n },\n }\n);\n\nexport interface BadgeProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n VariantProps<typeof badgeVariants> {\n dot?: boolean;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, color, dot, children, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size, color, className }))} {...props}>\n {dot && (\n <span className=\"h-1.5 w-1.5 rounded-full bg-current\" aria-hidden=\"true\" />\n )}\n {children}\n </span>\n )\n);\nBadge.displayName = \"Badge\";\n\n// ─── Avatar ────────────────────────────────────────────────────────────────\n\nconst avatarSizes = {\n xs: \"h-6 w-6 text-[10px]\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n xl: \"h-16 w-16 text-lg\",\n \"2xl\": \"h-20 w-20 text-xl\",\n};\n\nexport interface AvatarProps\n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> {\n src?: string;\n alt?: string;\n fallback?: string;\n size?: keyof typeof avatarSizes;\n shape?: \"circle\" | \"square\";\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, src, alt, fallback, size = \"md\", shape = \"circle\", status, ...props }, ref) => (\n <div className=\"atlas-avatar relative inline-flex shrink-0\">\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex shrink-0 overflow-hidden\",\n avatarSizes[size],\n shape === \"circle\" ? \"rounded-full\" : \"rounded-md\",\n className\n )}\n {...props}\n >\n <AvatarPrimitive.Image\n src={src}\n alt={alt}\n className=\"aspect-square h-full w-full object-cover\"\n />\n <AvatarPrimitive.Fallback\n className={cn(\n \"flex h-full w-full items-center justify-center\",\n \"bg-muted font-medium text-muted-foreground uppercase\"\n )}\n >\n {fallback ?? (alt ? alt.slice(0, 2) : \"?\")}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n {status && (\n <span\n aria-label={`Status: ${status}`}\n className={cn(\n \"absolute bottom-0 right-0 block rounded-full ring-2 ring-background\",\n size === \"xs\" || size === \"sm\" ? \"h-2 w-2\" : \"h-2.5 w-2.5\",\n status === \"online\" && \"bg-success\",\n status === \"offline\" && \"bg-muted-foreground\",\n status === \"busy\" && \"bg-destructive\",\n status === \"away\" && \"bg-warning\"\n )}\n />\n )}\n </div>\n));\nAvatar.displayName = \"Avatar\";\n\n// ─── AvatarGroup ──────────────────────────────────────────────────────────\n\nexport interface AvatarGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"size\"> {\n max?: number;\n size?: AvatarProps[\"size\"];\n spacing?: \"tight\" | \"normal\" | \"loose\";\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, children, max, size = \"md\", spacing = \"tight\", ...props }, ref) => {\n const validChildren = React.Children.toArray(children).filter(React.isValidElement);\n const visible = max ? validChildren.slice(0, max) : validChildren;\n const overflow = max ? validChildren.length - max : 0;\n\n const spacingMap = { tight: \"-space-x-2\", normal: \"-space-x-1\", loose: \"space-x-1\" };\n\n return (\n <div\n ref={ref}\n className={cn(\"atlas-avatar-group flex items-center\", spacingMap[spacing], className)}\n {...props}\n >\n {visible.map((child, i) =>\n React.cloneElement(child as React.ReactElement<AvatarProps>, {\n key: i,\n size,\n className: cn(\n \"ring-2 ring-background\",\n (child as React.ReactElement<AvatarProps>).props.className\n ),\n })\n )}\n {overflow > 0 && (\n <span\n className={cn(\n \"atlas-avatar relative flex shrink-0 items-center justify-center rounded-full\",\n \"bg-muted text-muted-foreground font-medium ring-2 ring-background\",\n avatarSizes[size]\n )}\n aria-label={`${overflow} more`}\n >\n +{overflow}\n </span>\n )}\n </div>\n );\n }\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n\n// ─── Divider ──────────────────────────────────────────────────────────────\n\nexport interface DividerProps\n extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {\n label?: React.ReactNode;\n labelPosition?: \"left\" | \"center\" | \"right\";\n}\n\nconst Divider = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n DividerProps\n>(\n ({ className, orientation = \"horizontal\", label, labelPosition = \"center\", ...props }, ref) => {\n if (!label) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n orientation={orientation}\n className={cn(\n \"atlas-divider shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n {...props}\n />\n );\n }\n\n return (\n <div\n className={cn(\n \"atlas-divider relative flex items-center gap-3 w-full\",\n className\n )}\n role=\"separator\"\n >\n {labelPosition !== \"left\" && <span className=\"flex-1 bg-border h-px\" />}\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">{label}</span>\n {labelPosition !== \"right\" && <span className=\"flex-1 bg-border h-px\" />}\n </div>\n );\n }\n);\nDivider.displayName = \"Divider\";\n\n// ─── Tag ──────────────────────────────────────────────────────────────────\n\nexport interface TagProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\" | \"size\"> {\n closable?: boolean;\n onClose?: () => void;\n icon?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"outline\" | \"soft\";\n color?: \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n ({ className, closable, onClose, icon, size = \"md\", variant = \"soft\", color = \"neutral\", children, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"atlas-tag inline-flex items-center gap-1 rounded font-medium\",\n size === \"sm\" && \"px-1.5 py-0.5 text-[10px]\",\n size === \"md\" && \"px-2 py-1 text-xs\",\n size === \"lg\" && \"px-3 py-1.5 text-sm\",\n variant === \"soft\" && color === \"neutral\" && \"bg-muted text-muted-foreground\",\n variant === \"soft\" && color === \"primary\" && \"bg-primary/10 text-primary\",\n variant === \"soft\" && color === \"success\" && \"bg-success/10 text-success\",\n variant === \"soft\" && color === \"warning\" && \"bg-warning/10 text-warning\",\n variant === \"soft\" && color === \"danger\" && \"bg-destructive/10 text-destructive\",\n variant === \"outline\" && \"border border-current bg-transparent\",\n variant === \"solid\" && color === \"neutral\" && \"bg-muted-foreground text-background\",\n className\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0\" aria-hidden=\"true\">{icon}</span>}\n {children}\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"ml-0.5 rounded-full hover:bg-black/10 dark:hover:bg-white/10 p-0.5 transition-colors\"\n aria-label=\"Remove tag\"\n >\n <svg className=\"h-2.5 w-2.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </span>\n )\n);\nTag.displayName = \"Tag\";\n\n// ─── Chip ──────────────────────────────────────────────────────────────────\n\nexport interface ChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n closable?: boolean;\n onClose?: (e: React.MouseEvent) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst Chip = React.forwardRef<HTMLButtonElement, ChipProps>(\n ({ className, selected, avatar, icon, closable, onClose, size = \"md\", children, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"atlas-chip inline-flex items-center gap-1.5 rounded-full font-medium\",\n \"border transition-all duration-150 cursor-pointer\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n size === \"sm\" && \"h-6 px-2 text-xs\",\n size === \"md\" && \"h-8 px-3 text-sm\",\n size === \"lg\" && \"h-9 px-4 text-sm\",\n selected\n ? \"bg-primary text-primary-foreground border-primary\"\n : \"bg-background text-foreground border-border hover:bg-accent\",\n className\n )}\n aria-pressed={selected}\n {...props}\n >\n {avatar && <span className=\"shrink-0 -ml-0.5\">{avatar}</span>}\n {icon && !avatar && <span className=\"shrink-0 [&>svg]:h-3.5 [&>svg]:w-3.5\" aria-hidden=\"true\">{icon}</span>}\n {children}\n {closable && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => { e.stopPropagation(); onClose?.(e); }}\n className=\"shrink-0 -mr-0.5 rounded-full hover:bg-black/10 dark:hover:bg-white/10 p-0.5\"\n aria-label=\"Remove\"\n >\n <svg className=\"h-3 w-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </span>\n )}\n </button>\n )\n);\nChip.displayName = \"Chip\";\n\n// ─── Tooltip ──────────────────────────────────────────────────────────────\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst TooltipRoot = TooltipPrimitive.Root;\n\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.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"atlas-tooltip z-50 overflow-hidden rounded-md\",\n \"bg-foreground px-3 py-1.5 text-xs text-background shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n delayDuration?: number;\n className?: string;\n}\n\nconst Tooltip = ({ content, children, side = \"top\", delayDuration = 300, className }: TooltipProps) => (\n <TooltipProvider>\n <TooltipRoot delayDuration={delayDuration}>\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent side={side} className={className}>{content}</TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n);\nTooltip.displayName = \"Tooltip\";\n\nexport {\n Link,\n Badge, badgeVariants,\n Avatar,\n AvatarGroup,\n Divider,\n Tag,\n Chip,\n Tooltip, TooltipProvider, TooltipRoot, TooltipTrigger, TooltipContent,\n};\n","import * as React from \"react\";\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Container ─────────────────────────────────────────────────────────────\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n center?: boolean;\n padded?: boolean;\n}\n\nconst maxWidthMap = {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n};\n\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ className, maxWidth = \"xl\", center = true, padded = true, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-container w-full\",\n maxWidthMap[maxWidth],\n center && \"mx-auto\",\n padded && \"px-4 sm:px-6 lg:px-8\",\n className\n )}\n {...props}\n />\n )\n);\nContainer.displayName = \"Container\";\n\n// ─── Stack ─────────────────────────────────────────────────────────────────\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"row\" | \"column\";\n gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16;\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n wrap?: boolean;\n divider?: React.ReactNode;\n}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ className, direction = \"column\", gap = 4, align, justify, wrap, divider, children, ...props }, ref) => {\n const gapClass = `gap-${gap}`;\n const validChildren = React.Children.toArray(children).filter(React.isValidElement);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"atlas-stack flex\",\n direction === \"row\" ? \"flex-row\" : \"flex-col\",\n gapClass,\n align && `items-${align}`,\n justify && `justify-${justify}`,\n wrap && \"flex-wrap\",\n className\n )}\n {...props}\n >\n {divider\n ? validChildren.map((child, i) => (\n <React.Fragment key={i}>\n {child}\n {i < validChildren.length - 1 && divider}\n </React.Fragment>\n ))\n : children}\n </div>\n );\n }\n);\nStack.displayName = \"Stack\";\n\n// ─── Grid ──────────────────────────────────────────────────────────────────\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\n rows?: number;\n flow?: \"row\" | \"col\" | \"dense\";\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n ({ className, cols = 1, gap = 4, rows, flow, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-grid grid\",\n `grid-cols-${cols}`,\n `gap-${gap}`,\n rows && `grid-rows-${rows}`,\n flow && `grid-flow-${flow}`,\n className\n )}\n {...props}\n />\n )\n);\nGrid.displayName = \"Grid\";\n\n// ─── Flex ──────────────────────────────────────────────────────────────────\n\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"row\" | \"col\" | \"row-reverse\" | \"col-reverse\";\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n wrap?: boolean | \"reverse\";\n gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\n inline?: boolean;\n}\n\nconst Flex = React.forwardRef<HTMLDivElement, FlexProps>(\n ({ className, direction = \"row\", align, justify, wrap, gap, inline, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-flex\",\n inline ? \"inline-flex\" : \"flex\",\n direction !== \"row\" && `flex-${direction}`,\n align && `items-${align}`,\n justify && `justify-${justify}`,\n wrap === true && \"flex-wrap\",\n wrap === \"reverse\" && \"flex-wrap-reverse\",\n gap !== undefined && `gap-${gap}`,\n className\n )}\n {...props}\n />\n )\n);\nFlex.displayName = \"Flex\";\n\n// ─── Section ──────────────────────────────────────────────────────────────\n\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n py?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n}\n\nconst pyMap = { sm: \"py-8\", md: \"py-12\", lg: \"py-16\", xl: \"py-24\", \"2xl\": \"py-32\" };\n\nconst Section = React.forwardRef<HTMLElement, SectionProps>(\n ({ className, as: Comp = \"section\", py = \"lg\", ...props }, ref) => (\n <Comp ref={ref} className={cn(\"atlas-section w-full\", pyMap[py], className)} {...props} />\n )\n);\nSection.displayName = \"Section\";\n\n// ─── Spacer ───────────────────────────────────────────────────────────────\n\nexport interface SpacerProps {\n size?: 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;\n axis?: \"horizontal\" | \"vertical\" | \"both\";\n className?: string;\n}\n\nconst Spacer = ({ size = 4, axis = \"vertical\", className }: SpacerProps) => (\n <span\n className={cn(\n \"atlas-spacer block\",\n axis === \"vertical\" && `h-${size}`,\n axis === \"horizontal\" && `w-${size}`,\n axis === \"both\" && `h-${size} w-${size}`,\n className\n )}\n aria-hidden=\"true\"\n />\n);\nSpacer.displayName = \"Spacer\";\n\n// ─── AspectRatio ──────────────────────────────────────────────────────────\n\nconst AspectRatio = React.forwardRef<\n React.ElementRef<typeof AspectRatioPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AspectRatioPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AspectRatioPrimitive.Root ref={ref} className={cn(\"atlas-aspect-ratio\", className)} {...props} />\n));\nAspectRatio.displayName = \"AspectRatio\";\n\n// ─── Center ───────────────────────────────────────────────────────────────\n\nexport interface CenterProps extends React.HTMLAttributes<HTMLDivElement> {\n inline?: boolean;\n minH?: string;\n}\n\nconst Center = React.forwardRef<HTMLDivElement, CenterProps>(\n ({ className, inline, minH, style, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-center\",\n inline ? \"inline-flex\" : \"flex\",\n \"items-center justify-center\",\n className\n )}\n style={{ minHeight: minH, ...style }}\n {...props}\n />\n )\n);\nCenter.displayName = \"Center\";\n\n// ─── ScrollArea ───────────────────────────────────────────────────────────\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {\n orientation?: \"vertical\" | \"horizontal\" | \"both\";\n }\n>(({ className, children, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"atlas-scroll-area relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n {(orientation === \"vertical\" || orientation === \"both\") && (\n <ScrollAreaPrimitive.Scrollbar\n orientation=\"vertical\"\n className=\"flex touch-none select-none transition-colors h-full w-2.5 border-l border-l-transparent p-[1px]\"\n >\n <ScrollAreaPrimitive.Thumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n {(orientation === \"horizontal\" || orientation === \"both\") && (\n <ScrollAreaPrimitive.Scrollbar\n orientation=\"horizontal\"\n className=\"flex touch-none select-none transition-colors flex-col h-2.5 border-t border-t-transparent p-[1px]\"\n >\n <ScrollAreaPrimitive.Thumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = \"ScrollArea\";\n\n// ─── Masonry ──────────────────────────────────────────────────────────────\n\nexport interface MasonryProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number | { sm?: number; md?: number; lg?: number; xl?: number };\n gap?: number;\n}\n\nconst Masonry = React.forwardRef<HTMLDivElement, MasonryProps>(\n ({ className, columns = 3, gap = 4, children, ...props }, ref) => {\n const cols = typeof columns === \"number\" ? columns : 3;\n\n return (\n <div\n ref={ref}\n className={cn(\"atlas-masonry w-full\", className)}\n style={{\n columnCount: cols,\n columnGap: `${gap * 4}px`,\n }}\n {...props}\n >\n {React.Children.map(children, (child) => (\n <div style={{ breakInside: \"avoid\", marginBottom: `${gap * 4}px` }}>\n {child}\n </div>\n ))}\n </div>\n );\n }\n);\nMasonry.displayName = \"Masonry\";\n\nexport {\n Container,\n Stack,\n Grid,\n Flex,\n Section,\n Spacer,\n AspectRatio,\n Center,\n ScrollArea,\n Masonry,\n};\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Navbar ────────────────────────────────────────────────────────────────\n\nexport interface NavbarProps extends React.HTMLAttributes<HTMLElement> {\n sticky?: boolean;\n bordered?: boolean;\n blurred?: boolean;\n}\n\nconst Navbar = React.forwardRef<HTMLElement, NavbarProps>(\n ({ className, sticky, bordered, blurred, ...props }, ref) => (\n <header\n ref={ref}\n className={cn(\n \"atlas-navbar z-40 w-full\",\n sticky && \"sticky top-0\",\n bordered && \"border-b border-border\",\n blurred && \"backdrop-blur-md bg-background/80 supports-[backdrop-filter]:bg-background/60\",\n !blurred && \"bg-background\",\n className\n )}\n {...props}\n />\n )\n);\nNavbar.displayName = \"Navbar\";\n\n// ─── Sidebar ──────────────────────────────────────────────────────────────\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n collapsible?: boolean;\n collapsed?: boolean;\n width?: string;\n side?: \"left\" | \"right\";\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n ({ className, collapsed, width = \"240px\", side = \"left\", style, ...props }, ref) => (\n <aside\n ref={ref}\n aria-label=\"Sidebar navigation\"\n className={cn(\n \"atlas-sidebar relative flex flex-col border-r border-border bg-background\",\n \"transition-[width] duration-300 ease-in-out overflow-hidden shrink-0\",\n collapsed && \"!w-0 border-transparent\",\n className\n )}\n style={{ width: collapsed ? 0 : width, ...style }}\n {...props}\n />\n )\n);\nSidebar.displayName = \"Sidebar\";\n\n// ─── Menu ──────────────────────────────────────────────────────────────────\n\nexport interface MenuItemProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n active?: boolean;\n disabled?: boolean;\n badge?: React.ReactNode;\n as?: React.ElementType;\n href?: string;\n}\n\nconst MenuItem = React.forwardRef<HTMLDivElement, MenuItemProps>(\n ({ className, icon, active, disabled, badge, children, as: Comp = \"div\", ...props }, ref) => (\n <Comp\n ref={ref}\n role=\"menuitem\"\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled}\n className={cn(\n \"atlas-menu-item flex items-center gap-3 px-3 py-2 rounded-md text-sm\",\n \"transition-colors duration-150 cursor-pointer select-none\",\n active\n ? \"bg-accent text-accent-foreground font-medium\"\n : \"text-foreground hover:bg-accent hover:text-accent-foreground\",\n disabled && \"opacity-50 pointer-events-none\",\n className\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0 [&>svg]:h-4 [&>svg]:w-4\" aria-hidden=\"true\">{icon}</span>}\n <span className=\"flex-1 truncate\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </Comp>\n )\n);\nMenuItem.displayName = \"MenuItem\";\n\nconst Menu = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"menu\"\n className={cn(\"atlas-menu flex flex-col gap-0.5 p-1\", className)}\n {...props}\n />\n )\n);\nMenu.displayName = \"Menu\";\n\n// ─── DropdownMenu ─────────────────────────────────────────────────────────\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\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 \"atlas-dropdown-content z-50 min-w-[8rem] overflow-hidden rounded-md border border-border\",\n \"bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n destructive?: boolean;\n }\n>(({ className, inset, destructive, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm\",\n \"outline-none transition-colors gap-2\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n destructive && \"text-destructive focus:text-destructive\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\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 = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-xs font-semibold text-muted-foreground\", inset && \"pl-8\", className)}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\n// ─── Breadcrumb ───────────────────────────────────────────────────────────\n\nexport interface BreadcrumbItem {\n label: React.ReactNode;\n href?: string;\n current?: boolean;\n}\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n separator?: React.ReactNode;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, items, separator, ...props }, ref) => (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(\"atlas-breadcrumb\", className)} {...props}>\n <ol className=\"flex flex-wrap items-center gap-1 text-sm text-muted-foreground\">\n {items.map((item, i) => (\n <li key={i} className=\"flex items-center gap-1\">\n {i > 0 && (\n <span aria-hidden=\"true\" className=\"text-muted-foreground/50\">\n {separator ?? (\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )}\n </span>\n )}\n {item.href && !item.current ? (\n <a href={item.href} className=\"hover:text-foreground transition-colors\">\n {item.label}\n </a>\n ) : (\n <span\n className={cn(item.current && \"text-foreground font-medium\")}\n aria-current={item.current ? \"page\" : undefined}\n >\n {item.label}\n </span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n// ─── Pagination ───────────────────────────────────────────────────────────\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\n total: number;\n page: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n siblingCount?: number;\n showEdges?: boolean;\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n ({ className, total, page, pageSize = 10, onPageChange, siblingCount = 1, showEdges = true, ...props }, ref) => {\n const totalPages = Math.ceil(total / pageSize);\n\n const getPageNumbers = () => {\n const pages: (number | \"...\")[] = [];\n const delta = siblingCount;\n\n for (let i = 1; i <= totalPages; i++) {\n if (\n i === 1 ||\n i === totalPages ||\n (i >= page - delta && i <= page + delta)\n ) {\n pages.push(i);\n } else if (pages[pages.length - 1] !== \"...\") {\n pages.push(\"...\");\n }\n }\n return pages;\n };\n\n if (totalPages <= 1) return null;\n\n return (\n <nav ref={ref} aria-label=\"Pagination\" className={cn(\"atlas-pagination flex items-center gap-1\", className)} {...props}>\n <button\n onClick={() => onPageChange?.(page - 1)}\n disabled={page <= 1}\n className=\"h-8 w-8 flex items-center justify-center rounded-md border border-border text-sm hover:bg-accent disabled:opacity-50 disabled:pointer-events-none\"\n aria-label=\"Previous page\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n {getPageNumbers().map((p, i) =>\n p === \"...\" ? (\n <span key={`ellipsis-${i}`} className=\"px-1 text-sm text-muted-foreground\">…</span>\n ) : (\n <button\n key={p}\n onClick={() => onPageChange?.(p as number)}\n aria-current={p === page ? \"page\" : undefined}\n className={cn(\n \"h-8 min-w-[2rem] px-2 flex items-center justify-center rounded-md text-sm font-medium transition-colors\",\n p === page\n ? \"bg-primary text-primary-foreground\"\n : \"border border-border hover:bg-accent\"\n )}\n >\n {p}\n </button>\n )\n )}\n <button\n onClick={() => onPageChange?.(page + 1)}\n disabled={page >= totalPages}\n className=\"h-8 w-8 flex items-center justify-center rounded-md border border-border text-sm hover:bg-accent disabled:opacity-50 disabled:pointer-events-none\"\n aria-label=\"Next page\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7 7 7\" />\n </svg>\n </button>\n </nav>\n );\n }\n);\nPagination.displayName = \"Pagination\";\n\n// ─── Tabs ─────────────────────────────────────────────────────────────────\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & {\n variant?: \"line\" | \"pills\" | \"enclosed\";\n }\n>(({ className, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"atlas-tabs-list inline-flex items-center\",\n variant === \"line\" && \"border-b border-border gap-0 w-full\",\n variant === \"pills\" && \"gap-1 bg-muted p-1 rounded-lg\",\n variant === \"enclosed\" && \"border border-border rounded-t-lg gap-0\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & {\n variant?: \"line\" | \"pills\" | \"enclosed\";\n }\n>(({ className, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium\",\n \"transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n variant === \"line\" && [\n \"px-4 py-2.5 border-b-2 border-transparent -mb-px\",\n \"text-muted-foreground hover:text-foreground\",\n \"data-[state=active]:border-primary data-[state=active]:text-foreground\",\n ],\n variant === \"pills\" && [\n \"px-3 py-1.5 rounded-md text-muted-foreground\",\n \"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n ],\n variant === \"enclosed\" && [\n \"px-4 py-2 border-r last:border-r-0 border-border\",\n \"text-muted-foreground hover:text-foreground bg-muted\",\n \"data-[state=active]:bg-background data-[state=active]:text-foreground\",\n ],\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\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 \"atlas-tabs-content mt-4\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\n// ─── Stepper ──────────────────────────────────────────────────────────────\n\nexport interface StepperStep {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: StepperStep[];\n current: number;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n ({ className, steps, current, orientation = \"horizontal\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-stepper flex\",\n orientation === \"horizontal\" ? \"flex-row items-center\" : \"flex-col\",\n className\n )}\n role=\"list\"\n aria-label=\"Progress steps\"\n {...props}\n >\n {steps.map((step, i) => {\n const status = i < current ? \"complete\" : i === current ? \"current\" : \"upcoming\";\n\n return (\n <React.Fragment key={i}>\n <div\n role=\"listitem\"\n aria-current={status === \"current\" ? \"step\" : undefined}\n className={cn(\n \"flex items-center gap-3\",\n orientation === \"vertical\" && \"flex-col items-start\",\n )}\n >\n <div className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-semibold\",\n \"transition-colors border-2\",\n status === \"complete\" && \"bg-primary border-primary text-primary-foreground\",\n status === \"current\" && \"border-primary text-primary bg-primary/10\",\n status === \"upcoming\" && \"border-border text-muted-foreground\",\n )}>\n {status === \"complete\" ? (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : (step.icon ?? <span>{i + 1}</span>)}\n </div>\n <div className={orientation === \"horizontal\" ? \"hidden sm:block\" : \"\"}>\n <p className={cn(\"text-sm font-medium\", status === \"upcoming\" && \"text-muted-foreground\")}>\n {step.title}\n </p>\n {step.description && (\n <p className=\"text-xs text-muted-foreground\">{step.description}</p>\n )}\n </div>\n </div>\n {i < steps.length - 1 && (\n <div className={cn(\n \"transition-colors\",\n orientation === \"horizontal\"\n ? \"flex-1 h-px mx-3\"\n : \"ml-4 w-px h-8\",\n i < current ? \"bg-primary\" : \"bg-border\"\n )} aria-hidden=\"true\" />\n )}\n </React.Fragment>\n );\n })}\n </div>\n )\n);\nStepper.displayName = \"Stepper\";\n\n// ─── CommandPalette ─────────────────────────────────────────────────────\n// Thin wrapper - full implementation in overlay/CommandDialog\nexport { Stepper as CommandPalette } from \"./index\"; // Placeholder, see CommandDialog\n\nexport {\n Navbar, Sidebar,\n Menu, MenuItem,\n DropdownMenu, DropdownMenuTrigger, DropdownMenuContent,\n DropdownMenuItem, DropdownMenuSeparator, DropdownMenuLabel,\n DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuRadioGroup,\n Breadcrumb,\n Pagination,\n Tabs, TabsList, TabsTrigger, TabsContent,\n Stepper,\n};\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Input ─────────────────────────────────────────────────────────────────\n\nconst inputVariants = cva(\n [\n \"atlas-input flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-muted-foreground\",\n \"transition-shadow duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {\n size: {\n sm: \"h-8 px-2.5 text-xs\",\n md: \"h-9 px-3 text-sm\",\n lg: \"h-10 px-4 text-base\",\n },\n invalid: {\n true: \"border-destructive focus-visible:ring-destructive\",\n },\n },\n defaultVariants: { size: \"md\" },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof inputVariants> {\n leftElement?: React.ReactNode;\n rightElement?: React.ReactNode;\n invalid?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, size, invalid, leftElement, rightElement, ...props }, ref) => {\n if (leftElement || rightElement) {\n return (\n <div className=\"relative flex items-center w-full\">\n {leftElement && (\n <span className=\"absolute left-3 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4 pointer-events-none\">\n {leftElement}\n </span>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ size, invalid: invalid ?? false }),\n leftElement && \"pl-9\",\n rightElement && \"pr-9\",\n className\n )}\n ref={ref}\n aria-invalid={invalid}\n {...props}\n />\n {rightElement && (\n <span className=\"absolute right-3 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\">\n {rightElement}\n </span>\n )}\n </div>\n );\n }\n\n return (\n <input\n type={type}\n className={cn(inputVariants({ size, invalid: invalid ?? false }), className)}\n ref={ref}\n aria-invalid={invalid}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\n// ─── TextArea ─────────────────────────────────────────────────────────────\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n resize?: \"none\" | \"both\" | \"horizontal\" | \"vertical\";\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n ({ className, invalid, resize = \"vertical\", ...props }, ref) => (\n <textarea\n className={cn(\n \"atlas-textarea flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-shadow\",\n resize === \"none\" && \"resize-none\",\n resize === \"both\" && \"resize\",\n resize === \"horizontal\" && \"resize-x\",\n resize === \"vertical\" && \"resize-y\",\n invalid && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n ref={ref}\n aria-invalid={invalid}\n {...props}\n />\n )\n);\nTextArea.displayName = \"TextArea\";\n\n// ─── Select ───────────────────────────────────────────────────────────────\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> & { invalid?: boolean }\n>(({ className, children, invalid, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"atlas-select-trigger flex h-9 w-full items-center justify-between rounded-md\",\n \"border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n invalid && \"border-destructive focus:ring-destructive\",\n \"[&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <svg className=\"h-4 w-4 opacity-50 shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\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 \"atlas-select-content relative z-50 min-w-[8rem] overflow-hidden rounded-md\",\n \"border border-border bg-popover text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n position === \"popper\" && \"translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport className={cn(\"p-1\", position === \"popper\" && \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\")}>\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\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-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm\",\n \"outline-none focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\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 <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label ref={ref} className={cn(\"py-1.5 pl-8 pr-2 text-xs font-semibold text-muted-foreground\", className)} {...props} />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\n// ─── Checkbox ─────────────────────────────────────────────────────────────\n\nexport interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n label?: React.ReactNode;\n description?: string;\n invalid?: boolean;\n}\n\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, label, description, invalid, id, ...props }, ref) => {\n const checkboxId = id ?? React.useId();\n\n return (\n <div className=\"atlas-checkbox flex items-start gap-2.5\">\n <CheckboxPrimitive.Root\n ref={ref}\n id={checkboxId}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border border-primary ring-offset-background\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n invalid && \"border-destructive\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <svg className=\"h-3 w-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={3} d=\"M5 13l4 4L19 7\" />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {(label || description) && (\n <div className=\"grid gap-0.5\">\n {label && (\n <label htmlFor={checkboxId} className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\">\n {label}\n </label>\n )}\n {description && <p className=\"text-xs text-muted-foreground\">{description}</p>}\n </div>\n )}\n </div>\n );\n }\n);\nCheckbox.displayName = \"Checkbox\";\n\n// ─── RadioGroup ───────────────────────────────────────────────────────────\n\nexport interface RadioOption {\n value: string;\n label: React.ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n options?: RadioOption[];\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, options, orientation = \"vertical\", children, ...props }, ref) => (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\n \"atlas-radio-group\",\n orientation === \"vertical\" ? \"flex flex-col gap-2\" : \"flex flex-row flex-wrap gap-4\",\n className\n )}\n {...props}\n >\n {options\n ? options.map((option) => (\n <div key={option.value} className=\"flex items-start gap-2.5\">\n <RadioGroupPrimitive.Item\n value={option.value}\n disabled={option.disabled}\n className={cn(\n \"mt-0.5 h-4 w-4 rounded-full border border-primary shrink-0\",\n \"ring-offset-background transition-colors\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-primary\"\n )}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className=\"h-2 w-2 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n <div>\n <label className=\"text-sm font-medium cursor-pointer\">{option.label}</label>\n {option.description && <p className=\"text-xs text-muted-foreground\">{option.description}</p>}\n </div>\n </div>\n ))\n : children}\n </RadioGroupPrimitive.Root>\n )\n);\nRadioGroup.displayName = \"RadioGroup\";\n\n// ─── Switch ───────────────────────────────────────────────────────────────\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n label?: React.ReactNode;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst switchSizes = {\n sm: { root: \"h-4 w-7\", thumb: \"h-3 w-3 data-[state=checked]:translate-x-3\" },\n md: { root: \"h-5 w-9\", thumb: \"h-4 w-4 data-[state=checked]:translate-x-4\" },\n lg: { root: \"h-6 w-11\", thumb: \"h-5 w-5 data-[state=checked]:translate-x-5\" },\n};\n\nconst Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n ({ className, label, description, size = \"md\", id, ...props }, ref) => {\n const switchId = id ?? React.useId();\n const sz = switchSizes[size];\n\n return (\n <div className=\"atlas-switch flex items-center gap-2.5\">\n <SwitchPrimitive.Root\n id={switchId}\n ref={ref}\n className={cn(\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n \"transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"bg-input data-[state=checked]:bg-primary\",\n sz.root,\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0\",\n \"transition-transform translate-x-0\",\n sz.thumb\n )}\n />\n </SwitchPrimitive.Root>\n {(label || description) && (\n <div>\n {label && <label htmlFor={switchId} className=\"text-sm font-medium cursor-pointer\">{label}</label>}\n {description && <p className=\"text-xs text-muted-foreground\">{description}</p>}\n </div>\n )}\n </div>\n );\n }\n);\nSwitch.displayName = \"Switch\";\n\n// ─── Slider ───────────────────────────────────────────────────────────────\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\"atlas-slider relative flex w-full touch-none select-none items-center\", className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n {(Array.isArray(props.value) ? props.value : props.defaultValue ?? [0]).map((_, i) => (\n <SliderPrimitive.Thumb\n key={i}\n className={cn(\n \"block h-4 w-4 rounded-full border-2 border-primary bg-background shadow\",\n \"ring-offset-background transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\"\n )}\n />\n ))}\n </SliderPrimitive.Root>\n));\nSlider.displayName = \"Slider\";\n\n// ─── RangeSlider ──────────────────────────────────────────────────────────\n\nexport type RangeSliderProps = React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>;\n\nconst RangeSlider = React.forwardRef<React.ElementRef<typeof SliderPrimitive.Root>, RangeSliderProps>(\n ({ className, defaultValue = [20, 80], ...props }, ref) => (\n <Slider ref={ref} defaultValue={defaultValue} className={cn(\"atlas-range-slider\", className)} {...props} />\n )\n);\nRangeSlider.displayName = \"RangeSlider\";\n\n// ─── DatePicker ───────────────────────────────────────────────────────────\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n invalid?: boolean;\n}\n\nconst DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n ({ className, label, invalid, id, ...props }, ref) => {\n const inputId = id ?? React.useId();\n return (\n <div className=\"atlas-date-picker grid gap-1.5 w-full\">\n {label && <label htmlFor={inputId} className=\"text-sm font-medium\">{label}</label>}\n <Input\n ref={ref}\n id={inputId}\n type=\"date\"\n invalid={invalid}\n className={className}\n {...props}\n />\n </div>\n );\n }\n);\nDatePicker.displayName = \"DatePicker\";\n\n// ─── TimePicker ───────────────────────────────────────────────────────────\n\nexport interface TimePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n invalid?: boolean;\n}\n\nconst TimePicker = React.forwardRef<HTMLInputElement, TimePickerProps>(\n ({ className, label, invalid, id, ...props }, ref) => {\n const inputId = id ?? React.useId();\n return (\n <div className=\"atlas-time-picker grid gap-1.5 w-full\">\n {label && <label htmlFor={inputId} className=\"text-sm font-medium\">{label}</label>}\n <Input ref={ref} id={inputId} type=\"time\" invalid={invalid} className={className} {...props} />\n </div>\n );\n }\n);\nTimePicker.displayName = \"TimePicker\";\n\nexport {\n Input, inputVariants,\n TextArea,\n Select, SelectGroup, SelectValue, SelectTrigger, SelectContent,\n SelectItem, SelectLabel, SelectSeparator,\n Checkbox,\n RadioGroup,\n Switch,\n Slider,\n RangeSlider,\n DatePicker,\n TimePicker,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Input } from \"../forms\";\n\n// ─── FileUpload ────────────────────────────────────────────────────────────\n\nexport interface FileUploadProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string;\n hint?: string;\n accept?: string;\n maxSize?: number;\n onFilesChange?: (files: File[]) => void;\n dragDrop?: boolean;\n}\n\nconst FileUpload = React.forwardRef<HTMLInputElement, FileUploadProps>(\n ({ className, label, hint, dragDrop = true, onFilesChange, id, ...props }, ref) => {\n const inputId = id ?? React.useId();\n const [isDragging, setIsDragging] = React.useState(false);\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n const files = Array.from(e.dataTransfer.files);\n onFilesChange?.(files);\n };\n\n return (\n <div className={cn(\"atlas-file-upload w-full\", className)}>\n {dragDrop ? (\n <label\n htmlFor={inputId}\n onDragOver={(e) => { e.preventDefault(); setIsDragging(true); }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={handleDrop}\n className={cn(\n \"flex flex-col items-center justify-center gap-2 w-full\",\n \"border-2 border-dashed rounded-lg p-8 cursor-pointer\",\n \"transition-colors text-center\",\n isDragging\n ? \"border-primary bg-primary/5 text-primary\"\n : \"border-border hover:border-primary/50 hover:bg-muted/50 text-muted-foreground\"\n )}\n >\n <svg className=\"h-8 w-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n <div>\n <p className=\"font-medium text-sm\">\n {label ?? \"Click to upload or drag and drop\"}\n </p>\n {hint && <p className=\"text-xs mt-0.5\">{hint}</p>}\n </div>\n <input\n ref={ref}\n id={inputId}\n type=\"file\"\n className=\"sr-only\"\n onChange={(e) => onFilesChange?.(Array.from(e.target.files ?? []))}\n {...props}\n />\n </label>\n ) : (\n <input\n ref={ref}\n id={inputId}\n type=\"file\"\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm\",\n \"file:mr-3 file:border-0 file:bg-primary file:text-primary-foreground file:rounded file:px-2 file:py-1 file:text-xs file:font-medium\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n onChange={(e) => onFilesChange?.(Array.from(e.target.files ?? []))}\n {...props}\n />\n )}\n </div>\n );\n }\n);\nFileUpload.displayName = \"FileUpload\";\n\n// ─── OTPInput ─────────────────────────────────────────────────────────────\n\nexport interface OTPInputProps {\n length?: number;\n value?: string;\n onChange?: (value: string) => void;\n invalid?: boolean;\n className?: string;\n inputClassName?: string;\n}\n\nconst OTPInput = React.forwardRef<HTMLDivElement, OTPInputProps>(\n ({ length = 6, value = \"\", onChange, invalid, className, inputClassName }, ref) => {\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n\n const handleChange = (index: number, char: string) => {\n const chars = value.split(\"\");\n chars[index] = char;\n const next = chars.join(\"\").slice(0, length);\n onChange?.(next);\n if (char && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n };\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !value[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pasted = e.clipboardData.getData(\"text\").slice(0, length);\n onChange?.(pasted);\n inputRefs.current[Math.min(pasted.length, length - 1)]?.focus();\n };\n\n return (\n <div ref={ref} className={cn(\"atlas-otp-input flex gap-2\", className)} role=\"group\" aria-label=\"OTP Input\">\n {Array.from({ length }).map((_, i) => (\n <input\n key={i}\n ref={(el) => { inputRefs.current[i] = el; }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={value[i] ?? \"\"}\n onChange={(e) => handleChange(i, e.target.value.replace(/[^0-9]/g, \"\"))}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n aria-label={`Digit ${i + 1}`}\n className={cn(\n \"h-10 w-10 text-center text-base font-semibold rounded-md border\",\n \"transition-shadow focus:outline-none focus:ring-2 focus:ring-ring\",\n invalid ? \"border-destructive\" : \"border-input\",\n \"bg-background\",\n inputClassName\n )}\n />\n ))}\n </div>\n );\n }\n);\nOTPInput.displayName = \"OTPInput\";\n\n// ─── ColorPicker ──────────────────────────────────────────────────────────\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n swatches?: string[];\n className?: string;\n}\n\nconst DEFAULT_SWATCHES = [\n \"#ef4444\",\"#f97316\",\"#eab308\",\"#22c55e\",\n \"#3b82f6\",\"#8b5cf6\",\"#ec4899\",\"#64748b\",\n];\n\nconst ColorPicker = ({ value = \"#3b82f6\", onChange, swatches = DEFAULT_SWATCHES, className }: ColorPickerProps) => (\n <div className={cn(\"atlas-color-picker flex flex-col gap-3\", className)}>\n <div className=\"flex items-center gap-3\">\n <div\n className=\"h-9 w-9 rounded-md border border-border shadow-sm shrink-0\"\n style={{ backgroundColor: value }}\n aria-hidden=\"true\"\n />\n <input\n type=\"color\"\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n className=\"sr-only\"\n id=\"atlas-color-input\"\n aria-label=\"Custom color\"\n />\n <label htmlFor=\"atlas-color-input\" className=\"cursor-pointer text-sm text-muted-foreground hover:text-foreground\">\n Pick color\n </label>\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n className=\"flex-1 h-9 rounded-md border border-input bg-background px-3 text-sm font-mono focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Hex color value\"\n />\n </div>\n {swatches.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\" role=\"group\" aria-label=\"Color swatches\">\n {swatches.map((swatch) => (\n <button\n key={swatch}\n type=\"button\"\n onClick={() => onChange?.(swatch)}\n aria-label={`Select color ${swatch}`}\n aria-pressed={value === swatch}\n className={cn(\n \"h-6 w-6 rounded border-2 transition-transform hover:scale-110\",\n value === swatch ? \"border-foreground\" : \"border-transparent\"\n )}\n style={{ backgroundColor: swatch }}\n />\n ))}\n </div>\n )}\n </div>\n);\nColorPicker.displayName = \"ColorPicker\";\n\n// ─── SearchInput ──────────────────────────────────────────────────────────\n\nexport interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n onClear?: () => void;\n loading?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n ({ className, onClear, loading, value, size = \"md\", ...props }, ref) => (\n <div className={cn(\"atlas-search-input relative flex items-center w-full\", className)}>\n <span className=\"absolute left-3 text-muted-foreground pointer-events-none\">\n {loading ? (\n <svg className=\"h-4 w-4 animate-spin\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n ) : (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n </svg>\n )}\n </span>\n <input\n ref={ref}\n type=\"search\"\n value={value}\n className={cn(\n \"flex w-full rounded-md border border-input bg-background text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"pl-9\",\n value && onClear ? \"pr-8\" : \"pr-3\",\n size === \"sm\" && \"h-8 text-xs\",\n size === \"md\" && \"h-9\",\n size === \"lg\" && \"h-10\",\n )}\n {...props}\n />\n {value && onClear && (\n <button\n type=\"button\"\n onClick={onClear}\n aria-label=\"Clear search\"\n className=\"absolute right-2.5 text-muted-foreground hover:text-foreground transition-colors\"\n >\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )\n);\nSearchInput.displayName = \"SearchInput\";\n\n// ─── PasswordInput ────────────────────────────────────────────────────────\n\nexport interface PasswordInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n invalid?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ className, invalid, size = \"md\", ...props }, ref) => {\n const [show, setShow] = React.useState(false);\n\n return (\n <div className={cn(\"atlas-password-input relative flex items-center w-full\", className)}>\n <input\n ref={ref}\n type={show ? \"text\" : \"password\"}\n className={cn(\n \"flex w-full rounded-md border border-input bg-background text-sm pr-10\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"sm\" && \"h-8 px-2.5 text-xs\",\n size === \"md\" && \"h-9 px-3\",\n size === \"lg\" && \"h-10 px-4\",\n invalid && \"border-destructive focus-visible:ring-destructive\",\n )}\n aria-invalid={invalid}\n {...props}\n />\n <button\n type=\"button\"\n onClick={() => setShow(!show)}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n className=\"absolute right-3 text-muted-foreground hover:text-foreground transition-colors\"\n >\n {show ? (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\" />\n </svg>\n ) : (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n </svg>\n )}\n </button>\n </div>\n );\n }\n);\nPasswordInput.displayName = \"PasswordInput\";\n\n// ─── FormField ────────────────────────────────────────────────────────────\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n required?: boolean;\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"atlas-form-field grid gap-1.5 w-full\", className)} {...props} />\n )\n);\nFormField.displayName = \"FormField\";\n\n// ─── FormLabel ────────────────────────────────────────────────────────────\n\nexport interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n optional?: boolean;\n}\n\nconst FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, required, optional, children, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\"atlas-form-label text-sm font-medium leading-none\", className)}\n {...props}\n >\n {children}\n {required && <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">*</span>}\n {optional && <span className=\"ml-1 text-xs font-normal text-muted-foreground\">(optional)</span>}\n </label>\n )\n);\nFormLabel.displayName = \"FormLabel\";\n\n// ─── FormError ────────────────────────────────────────────────────────────\n\nexport interface FormErrorProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst FormError = React.forwardRef<HTMLParagraphElement, FormErrorProps>(\n ({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <p\n ref={ref}\n role=\"alert\"\n aria-live=\"polite\"\n className={cn(\"atlas-form-error flex items-center gap-1.5 text-xs text-destructive\", className)}\n {...props}\n >\n <svg className=\"h-3.5 w-3.5 shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n {children}\n </p>\n );\n }\n);\nFormError.displayName = \"FormError\";\n\n// ─── Combobox ─────────────────────────────────────────────────────────────\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n}\n\nconst Combobox = ({ options, value, onChange, placeholder = \"Select option...\", searchPlaceholder = \"Search...\", emptyText = \"No results found.\", className, disabled }: ComboboxProps) => {\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState(\"\");\n\n const filtered = options.filter((o) =>\n o.label.toLowerCase().includes(search.toLowerCase())\n );\n const selected = options.find((o) => o.value === value);\n\n return (\n <div className={cn(\"atlas-combobox relative w-full\", className)}>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={disabled}\n onClick={() => setOpen(!open)}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n >\n <span className={selected ? \"text-foreground\" : \"text-muted-foreground\"}>\n {selected?.label ?? placeholder}\n </span>\n <svg className=\"h-4 w-4 opacity-50 shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\" />\n </svg>\n </button>\n {open && (\n <div className=\"absolute top-full left-0 z-50 mt-1 w-full rounded-md border border-border bg-popover shadow-md\">\n <div className=\"p-1 border-b border-border\">\n <input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full px-2 py-1.5 text-sm bg-transparent outline-none placeholder:text-muted-foreground\"\n autoFocus\n />\n </div>\n <div role=\"listbox\" className=\"max-h-60 overflow-y-auto p-1\">\n {filtered.length === 0 ? (\n <p className=\"py-6 text-center text-sm text-muted-foreground\">{emptyText}</p>\n ) : (\n filtered.map((option) => (\n <button\n key={option.value}\n role=\"option\"\n aria-selected={option.value === value}\n disabled={option.disabled}\n onClick={() => { onChange?.(option.value); setOpen(false); setSearch(\"\"); }}\n className={cn(\n \"relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 pl-8 text-sm\",\n \"hover:bg-accent hover:text-accent-foreground outline-none\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n option.value === value && \"bg-accent\"\n )}\n >\n {option.value === value && (\n <svg className=\"absolute left-2 h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n {option.label}\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\nCombobox.displayName = \"Combobox\";\n\n// ─── MultiSelect ──────────────────────────────────────────────────────────\n\nexport interface MultiSelectProps {\n options: ComboboxOption[];\n value?: string[];\n onChange?: (value: string[]) => void;\n placeholder?: string;\n maxDisplay?: number;\n className?: string;\n}\n\nconst MultiSelect = ({ options, value = [], onChange, placeholder = \"Select...\", maxDisplay = 3, className }: MultiSelectProps) => {\n const [open, setOpen] = React.useState(false);\n\n const toggle = (optValue: string) => {\n onChange?.(value.includes(optValue) ? value.filter((v) => v !== optValue) : [...value, optValue]);\n };\n\n const selectedLabels = value\n .slice(0, maxDisplay)\n .map((v) => options.find((o) => o.value === v)?.label)\n .filter(Boolean);\n\n return (\n <div className={cn(\"atlas-multi-select relative w-full\", className)}>\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className=\"flex min-h-[2.25rem] w-full flex-wrap items-center gap-1 rounded-md border border-input bg-background px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n {value.length === 0 ? (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n ) : (\n <>\n {selectedLabels.map((label, i) => (\n <span key={i} className=\"inline-flex items-center gap-0.5 rounded bg-secondary px-1.5 py-0.5 text-xs font-medium\">\n {label}\n <svg className=\"h-3 w-3 cursor-pointer\" onClick={(e) => { e.stopPropagation(); const v = options.find((o) => o.label === label)?.value; if (v) toggle(v); }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </span>\n ))}\n {value.length > maxDisplay && (\n <span className=\"text-xs text-muted-foreground\">+{value.length - maxDisplay} more</span>\n )}\n </>\n )}\n </button>\n {open && (\n <div className=\"absolute top-full left-0 z-50 mt-1 w-full rounded-md border border-border bg-popover shadow-md\">\n <div role=\"listbox\" aria-multiselectable=\"true\" className=\"max-h-60 overflow-y-auto p-1\">\n {options.map((option) => (\n <button\n key={option.value}\n role=\"option\"\n aria-selected={value.includes(option.value)}\n onClick={() => toggle(option.value)}\n className=\"relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 pl-8 text-sm hover:bg-accent\"\n >\n {value.includes(option.value) && (\n <svg className=\"absolute left-2 h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n {option.label}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\nMultiSelect.displayName = \"MultiSelect\";\n\n\n// ═══════════════════════════════════════════════════════════════\n// New in v0.1.2\n// ═══════════════════════════════════════════════════════════════\n\n\n// ─── PhoneInput ───────────────────────────────────────────────────────────\n\nconst COUNTRY_CODES = [\n { code: \"US\", dial: \"+1\", flag: \"US\" },\n { code: \"GB\", dial: \"+44\", flag: \"GB\" },\n { code: \"AU\", dial: \"+61\", flag: \"AU\" },\n { code: \"CA\", dial: \"+1\", flag: \"CA\" },\n { code: \"DE\", dial: \"+49\", flag: \"DE\" },\n { code: \"FR\", dial: \"+33\", flag: \"FR\" },\n { code: \"IN\", dial: \"+91\", flag: \"IN\" },\n { code: \"JP\", dial: \"+81\", flag: \"JP\" },\n { code: \"CN\", dial: \"+86\", flag: \"CN\" },\n { code: \"BR\", dial: \"+55\", flag: \"BR\" },\n { code: \"MX\", dial: \"+52\", flag: \"MX\" },\n { code: \"PH\", dial: \"+63\", flag: \"PH\" },\n { code: \"SG\", dial: \"+65\", flag: \"SG\" },\n { code: \"ZA\", dial: \"+27\", flag: \"ZA\" },\n { code: \"NG\", dial: \"+234\", flag: \"NG\" },\n];\n\nexport interface PhoneInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\" | \"size\"> {\n value?: string;\n onChange?: (value: string) => void;\n defaultCountry?: string;\n invalid?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({ className, value = \"\", onChange, defaultCountry = \"US\", invalid, size = \"md\", disabled, ...props }, ref) => {\n const [country, setCountry] = React.useState(\n COUNTRY_CODES.find((c) => c.code === defaultCountry) ?? COUNTRY_CODES[0]\n );\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n return (\n <div ref={containerRef} className={cn(\"atlas-phone-input relative flex w-full\", className)}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen(!open)}\n className={cn(\n \"flex shrink-0 items-center gap-1.5 rounded-l-md border border-r-0 border-input bg-background px-3\",\n \"hover:bg-accent transition-colors focus:outline-none focus:ring-2 focus:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"sm\" && \"h-8 text-xs\",\n size === \"md\" && \"h-9 text-sm\",\n size === \"lg\" && \"h-10 text-sm\",\n invalid && \"border-destructive\"\n )}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-label=\"Select country code\"\n >\n <span className=\"text-base leading-none\">{country.dial}</span>\n <svg className=\"h-3 w-3 opacity-50 shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n <input\n ref={ref}\n type=\"tel\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.value)}\n aria-invalid={invalid}\n className={cn(\n \"flex w-full rounded-r-md border border-input bg-background px-3 text-sm\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"sm\" && \"h-8 text-xs\",\n size === \"md\" && \"h-9\",\n size === \"lg\" && \"h-10\",\n invalid && \"border-destructive focus-visible:ring-destructive\"\n )}\n {...props}\n />\n\n {open && (\n <div\n role=\"listbox\"\n aria-label=\"Country codes\"\n className=\"absolute top-full left-0 z-50 mt-1 w-48 rounded-md border border-border bg-popover shadow-md overflow-y-auto max-h-56\"\n >\n {COUNTRY_CODES.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n role=\"option\"\n aria-selected={c.code === country.code}\n onClick={() => { setCountry(c); setOpen(false); }}\n className={cn(\n \"flex w-full items-center gap-2.5 px-3 py-2 text-sm hover:bg-accent transition-colors\",\n c.code === country.code && \"bg-accent\"\n )}\n >\n <span className=\"font-mono text-xs text-muted-foreground w-10 shrink-0\">{c.dial}</span>\n <span>{c.code}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\nPhoneInput.displayName = \"PhoneInput\";\n\n// ─── TagInput ─────────────────────────────────────────────────────────────\n\nexport interface TagInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"size\"> {\n value?: string[];\n onChange?: (tags: string[]) => void;\n placeholder?: string;\n maxTags?: number;\n invalid?: boolean;\n disabled?: boolean;\n allowDuplicates?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst TagInput = React.forwardRef<HTMLDivElement, TagInputProps>(\n ({\n className,\n value = [],\n onChange,\n placeholder = \"Add tag...\",\n maxTags,\n invalid,\n disabled,\n allowDuplicates = false,\n size = \"md\",\n ...props\n }, ref) => {\n const [input, setInput] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const addTag = (tag: string) => {\n const trimmed = tag.trim();\n if (!trimmed) return;\n if (!allowDuplicates && value.includes(trimmed)) return;\n if (maxTags && value.length >= maxTags) return;\n onChange?.([...value, trimmed]);\n setInput(\"\");\n };\n\n const removeTag = (index: number) => {\n onChange?.(value.filter((_, i) => i !== index));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n addTag(input);\n }\n if (e.key === \"Backspace\" && !input && value.length > 0) {\n removeTag(value.length - 1);\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Tag input\"\n onClick={() => inputRef.current?.focus()}\n className={cn(\n \"atlas-tag-input flex flex-wrap gap-1.5 w-full rounded-md border border-input bg-background px-3 py-2\",\n \"cursor-text transition-shadow\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n size === \"sm\" && \"min-h-[2rem] text-xs\",\n size === \"md\" && \"min-h-[2.25rem] text-sm\",\n size === \"lg\" && \"min-h-[2.5rem] text-sm\",\n invalid && \"border-destructive focus-within:ring-destructive\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {value.map((tag, i) => (\n <span\n key={i}\n className=\"inline-flex items-center gap-1 rounded bg-secondary px-1.5 py-0.5 text-xs font-medium\"\n >\n {tag}\n {!disabled && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); removeTag(i); }}\n aria-label={`Remove ${tag}`}\n className=\"rounded-full hover:bg-muted-foreground/20 p-0.5 transition-colors\"\n >\n <svg className=\"h-2.5 w-2.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </span>\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={input}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : undefined}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => { if (input) addTag(input); }}\n className=\"flex-1 min-w-[80px] bg-transparent outline-none placeholder:text-muted-foreground text-sm disabled:cursor-not-allowed\"\n aria-label=\"Type and press Enter to add tag\"\n />\n </div>\n );\n }\n);\nTagInput.displayName = \"TagInput\";\n\n// ─── CurrencyInput ────────────────────────────────────────────────────────\n\nexport interface CurrencyInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\" | \"type\" | \"size\"> {\n value?: number | string;\n onChange?: (value: number | undefined) => void;\n currency?: string;\n locale?: string;\n invalid?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ className, value, onChange, currency = \"USD\", locale = \"en-US\", invalid, size = \"md\", disabled, ...props }, ref) => {\n const [display, setDisplay] = React.useState(\n value !== undefined && value !== \"\" ? String(value) : \"\"\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value.replace(/[^0-9.]/g, \"\");\n setDisplay(raw);\n const num = parseFloat(raw);\n onChange?.(isNaN(num) ? undefined : num);\n };\n\n const symbol = new Intl.NumberFormat(locale, { style: \"currency\", currency })\n .formatToParts(0)\n .find((p) => p.type === \"currency\")?.value ?? \"$\";\n\n return (\n <div className={cn(\"atlas-currency-input relative flex items-center w-full\", className)}>\n <span className={cn(\n \"absolute left-3 text-muted-foreground select-none pointer-events-none\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n size === \"lg\" && \"text-sm\",\n )}>\n {symbol}\n </span>\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n value={display}\n disabled={disabled}\n onChange={handleChange}\n aria-invalid={invalid}\n className={cn(\n \"flex w-full rounded-md border border-input bg-background text-sm\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"pl-8 pr-3\",\n size === \"sm\" && \"h-8 text-xs\",\n size === \"md\" && \"h-9\",\n size === \"lg\" && \"h-10\",\n invalid && \"border-destructive focus-visible:ring-destructive\",\n )}\n {...props}\n />\n </div>\n );\n }\n);\nCurrencyInput.displayName = \"CurrencyInput\";\n\n// ─── RatingInput ──────────────────────────────────────────────────────────\n\nexport interface RatingInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"size\"> {\n value?: number;\n onChange?: (value: number) => void;\n max?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n readOnly?: boolean;\n allowHalf?: boolean;\n}\n\nconst ratingIconSizes = { sm: \"h-4 w-4\", md: \"h-6 w-6\", lg: \"h-8 w-8\" };\n\nconst StarIcon = ({ filled, half, className }: { filled: boolean; half?: boolean; className?: string }) => (\n <svg\n className={cn(className, \"transition-colors\")}\n fill={filled ? \"currentColor\" : \"none\"}\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n {half ? (\n <>\n <defs>\n <linearGradient id=\"half-fill\">\n <stop offset=\"50%\" stopColor=\"currentColor\" />\n <stop offset=\"50%\" stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n fill=\"url(#half-fill)\"\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n </>\n ) : (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n )}\n </svg>\n);\n\nconst RatingInput = React.forwardRef<HTMLDivElement, RatingInputProps>(\n ({ className, value = 0, onChange, max = 5, size = \"md\", disabled, readOnly, ...props }, ref) => {\n const [hovered, setHovered] = React.useState<number | null>(null);\n const display = hovered ?? value;\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={cn(\"atlas-rating-input flex items-center gap-0.5\", className)}\n onMouseLeave={() => setHovered(null)}\n {...props}\n >\n {Array.from({ length: max }, (_, i) => {\n const starValue = i + 1;\n const filled = display >= starValue;\n\n return (\n <button\n key={i}\n type=\"button\"\n role=\"radio\"\n aria-checked={value === starValue}\n aria-label={`Rate ${starValue} out of ${max}`}\n disabled={disabled || readOnly}\n onClick={() => onChange?.(starValue)}\n onMouseEnter={() => !readOnly && setHovered(starValue)}\n className={cn(\n \"text-yellow-400 transition-transform\",\n !disabled && !readOnly && \"hover:scale-110 cursor-pointer\",\n (disabled || readOnly) && \"cursor-default\",\n !filled && \"text-muted\"\n )}\n >\n <StarIcon filled={filled} className={ratingIconSizes[size]} />\n </button>\n );\n })}\n {value > 0 && !readOnly && !disabled && (\n <button\n type=\"button\"\n onClick={() => onChange?.(0)}\n className=\"ml-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n aria-label=\"Clear rating\"\n >\n Clear\n </button>\n )}\n </div>\n );\n }\n);\nRatingInput.displayName = \"RatingInput\";\n\n\nexport {\n\n FileUpload,\n OTPInput,\n ColorPicker,\n SearchInput,\n PasswordInput,\n Combobox,\n MultiSelect,\n FormField,\n FormLabel,\n FormError,\n PhoneInput, TagInput, CurrencyInput, RatingInput\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Card ──────────────────────────────────────────────────────────────────\n\nconst cardVariants = cva(\n \"atlas-card rounded-xl border bg-card text-card-foreground\",\n {\n variants: {\n variant: {\n default: \"border-border shadow-sm\",\n outline: \"border-border shadow-none\",\n elevated: \"border-transparent shadow-lg\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n filled: \"border-transparent bg-muted\",\n },\n interactive: {\n true: \"cursor-pointer transition-shadow hover:shadow-md hover:-translate-y-0.5 active:translate-y-0 active:shadow-sm\",\n },\n },\n defaultVariants: { variant: \"default\" },\n }\n);\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, interactive, ...props }, ref) => (\n <div ref={ref} className={cn(cardVariants({ variant, interactive, className }))} {...props} />\n )\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5 p-6\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-lg font-semibold leading-tight tracking-tight\", className)} {...props} />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center p-6 pt-0 gap-2\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n\n// ─── Table ─────────────────────────────────────────────────────────────────\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"atlas-table relative w-full overflow-auto\">\n <table ref={ref} className={cn(\"w-full caption-bottom text-sm\", className)} {...props} />\n </div>\n )\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n )\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n )\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\", className)} {...props} />\n )\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <th ref={ref} className={cn(\"h-10 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\", className)} {...props} />\n )\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <td ref={ref} className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />\n )\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n ({ className, ...props }, ref) => (\n <caption ref={ref} className={cn(\"mt-4 text-sm text-muted-foreground\", className)} {...props} />\n )\n);\nTableCaption.displayName = \"TableCaption\";\n\n// ─── DataTable ────────────────────────────────────────────────────────────\n\nexport interface DataTableColumn<T> {\n key: keyof T | string;\n header: React.ReactNode;\n cell?: (row: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n}\n\nexport interface DataTableProps<T extends Record<string, unknown>> {\n data: T[];\n columns: DataTableColumn<T>[];\n loading?: boolean;\n emptyText?: string;\n onSort?: (key: string, direction: \"asc\" | \"desc\") => void;\n striped?: boolean;\n bordered?: boolean;\n className?: string;\n caption?: string;\n}\n\nfunction DataTable<T extends Record<string, unknown>>({\n data,\n columns,\n loading,\n emptyText = \"No data available\",\n onSort,\n striped,\n bordered,\n className,\n caption,\n}: DataTableProps<T>) {\n const [sortKey, setSortKey] = React.useState<string | null>(null);\n const [sortDir, setSortDir] = React.useState<\"asc\" | \"desc\">(\"asc\");\n\n const handleSort = (key: string) => {\n const newDir = sortKey === key && sortDir === \"asc\" ? \"desc\" : \"asc\";\n setSortKey(key);\n setSortDir(newDir);\n onSort?.(key, newDir);\n };\n\n return (\n <div className={cn(\"atlas-data-table relative w-full overflow-auto rounded-md\", bordered && \"border border-border\", className)}>\n <table className=\"w-full caption-bottom text-sm\">\n {caption && <TableCaption>{caption}</TableCaption>}\n <thead className=\"border-b bg-muted/50\">\n <tr>\n {columns.map((col, i) => (\n <th\n key={i}\n style={{ width: col.width }}\n className={cn(\n \"h-10 px-4 font-medium text-muted-foreground\",\n col.align === \"center\" && \"text-center\",\n col.align === \"right\" && \"text-right\",\n col.sortable && \"cursor-pointer select-none hover:text-foreground\",\n )}\n onClick={() => col.sortable && handleSort(String(col.key))}\n aria-sort={\n sortKey === col.key\n ? sortDir === \"asc\" ? \"ascending\" : \"descending\"\n : col.sortable ? \"none\" : undefined\n }\n >\n <span className=\"flex items-center gap-1\">\n {col.header}\n {col.sortable && sortKey === String(col.key) && (\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d={sortDir === \"asc\" ? \"M5 15l7-7 7 7\" : \"M19 9l-7 7-7-7\"}\n />\n </svg>\n )}\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center\">\n <svg className=\"mx-auto h-5 w-5 animate-spin text-muted-foreground\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n </td>\n </tr>\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">{emptyText}</td>\n </tr>\n ) : (\n data.map((row, i) => (\n <tr\n key={i}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n striped && i % 2 !== 0 && \"bg-muted/20\"\n )}\n >\n {columns.map((col, j) => (\n <td\n key={j}\n className={cn(\n \"p-4 align-middle\",\n col.align === \"center\" && \"text-center\",\n col.align === \"right\" && \"text-right\",\n )}\n >\n {col.cell\n ? col.cell(row, i)\n : String(row[col.key as keyof T] ?? \"\")}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\nDataTable.displayName = \"DataTable\";\n\n// ─── List & ListItem ─────────────────────────────────────────────────────\n\nexport interface ListProps extends Omit<React.HTMLAttributes<HTMLUListElement>, \"color\"> {\n variant?: \"simple\" | \"bordered\" | \"divided\";\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nconst List = React.forwardRef<HTMLUListElement, ListProps>(\n ({ className, variant = \"simple\", spacing = \"none\", ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\n \"atlas-list w-full\",\n variant === \"bordered\" && \"rounded-md border border-border divide-y divide-border\",\n variant === \"divided\" && \"divide-y divide-border\",\n spacing === \"sm\" && \"space-y-1\",\n spacing === \"md\" && \"space-y-2\",\n spacing === \"lg\" && \"space-y-3\",\n className\n )}\n {...props}\n />\n )\n);\nList.displayName = \"List\";\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {\n icon?: React.ReactNode;\n extra?: React.ReactNode;\n active?: boolean;\n}\n\nconst ListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n ({ className, icon, extra, active, children, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\n \"atlas-list-item flex items-center gap-3 px-4 py-3\",\n active && \"bg-accent text-accent-foreground\",\n className\n )}\n {...props}\n >\n {icon && <span className=\"shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\" aria-hidden=\"true\">{icon}</span>}\n <span className=\"flex-1 min-w-0\">{children}</span>\n {extra && <span className=\"shrink-0\">{extra}</span>}\n </li>\n )\n);\nListItem.displayName = \"ListItem\";\n\n// ─── Statistic ────────────────────────────────────────────────────────────\n\nexport interface StatisticProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"prefix\"> {\n label: React.ReactNode;\n value: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n trend?: { value: number; label?: string };\n loading?: boolean;\n}\n\nconst Statistic = React.forwardRef<HTMLDivElement, StatisticProps>(\n ({ className, label, value, prefix, suffix, trend, loading, ...props }, ref) => (\n <div ref={ref} className={cn(\"atlas-statistic\", className)} {...props}>\n <p className=\"text-sm font-medium text-muted-foreground\">{label}</p>\n <div className=\"mt-1 flex items-end gap-2\">\n <span className=\"text-3xl font-bold tracking-tight\">\n {loading ? (\n <span className=\"inline-block h-8 w-24 animate-pulse rounded bg-muted\" />\n ) : (\n <>{prefix}{value}{suffix}</>\n )}\n </span>\n {trend && !loading && (\n <span className={cn(\n \"mb-1 flex items-center gap-0.5 text-sm font-medium\",\n trend.value > 0 ? \"text-success\" : trend.value < 0 ? \"text-destructive\" : \"text-muted-foreground\"\n )}>\n {trend.value !== 0 && (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d={trend.value > 0 ? \"M7 17l9-9M7 7h10v10\" : \"M7 7l9 9M17 7H7v10\"}\n />\n </svg>\n )}\n {Math.abs(trend.value)}%\n {trend.label && <span className=\"font-normal text-muted-foreground ml-1\">{trend.label}</span>}\n </span>\n )}\n </div>\n </div>\n )\n);\nStatistic.displayName = \"Statistic\";\n\n// ─── Timeline ─────────────────────────────────────────────────────────────\n\nexport interface TimelineEvent {\n title: React.ReactNode;\n description?: React.ReactNode;\n time?: React.ReactNode;\n icon?: React.ReactNode;\n color?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n}\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {\n events: TimelineEvent[];\n}\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, events, ...props }, ref) => (\n <ol ref={ref} className={cn(\"atlas-timeline relative flex flex-col\", className)} {...props}>\n {events.map((event, i) => (\n <li key={i} className=\"relative flex gap-4 pb-8 last:pb-0\">\n <div className=\"relative flex flex-col items-center\">\n <div className={cn(\n \"z-10 flex h-8 w-8 items-center justify-center rounded-full border-2 shrink-0\",\n \"border-background shadow-sm [&>svg]:h-3.5 [&>svg]:w-3.5\",\n event.color === \"primary\" ? \"bg-primary text-primary-foreground\" :\n event.color === \"success\" ? \"bg-success text-success-foreground\" :\n event.color === \"warning\" ? \"bg-warning text-warning-foreground\" :\n event.color === \"danger\" ? \"bg-destructive text-destructive-foreground\" :\n \"bg-muted text-muted-foreground\"\n )}>\n {event.icon ?? <span className=\"h-2 w-2 rounded-full bg-current\" />}\n </div>\n {i < events.length - 1 && (\n <div className=\"mt-1 w-px flex-1 bg-border\" aria-hidden=\"true\" />\n )}\n </div>\n <div className=\"flex-1 pt-0.5 pb-4 last:pb-0\">\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"font-medium text-sm\">{event.title}</p>\n {event.time && <span className=\"text-xs text-muted-foreground whitespace-nowrap shrink-0\">{event.time}</span>}\n </div>\n {event.description && <p className=\"mt-1 text-sm text-muted-foreground\">{event.description}</p>}\n </div>\n </li>\n ))}\n </ol>\n )\n);\nTimeline.displayName = \"Timeline\";\n\n// ─── Calendar ─────────────────────────────────────────────────────────────\n\nexport interface CalendarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: Date;\n onChange?: (date: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n highlightedDates?: Date[];\n}\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n\nconst Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n ({ className, value, onChange, minDate, maxDate, highlightedDates = [], ...props }, ref) => {\n const today = new Date();\n const [viewDate, setViewDate] = React.useState(value ?? today);\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n const cells: (Date | null)[] = [\n ...Array.from({ length: firstDay }, (): null => null),\n ...Array.from({ length: daysInMonth }, (_, i) => new Date(year, month, i + 1)),\n ];\n\n const isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\n return (\n <div ref={ref} className={cn(\"atlas-calendar w-fit rounded-lg border border-border bg-background p-3 shadow-sm\", className)} {...props}>\n <div className=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n onClick={() => setViewDate(new Date(year, month - 1))}\n className=\"h-7 w-7 flex items-center justify-center rounded-md hover:bg-accent transition-colors\"\n aria-label=\"Previous month\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n <span className=\"text-sm font-semibold\">{MONTHS[month]} {year}</span>\n <button\n type=\"button\"\n onClick={() => setViewDate(new Date(year, month + 1))}\n className=\"h-7 w-7 flex items-center justify-center rounded-md hover:bg-accent transition-colors\"\n aria-label=\"Next month\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n </div>\n <div className=\"grid grid-cols-7 gap-px\">\n {DAYS.map((d) => (\n <div key={d} className=\"h-8 flex items-center justify-center text-xs font-medium text-muted-foreground\">{d}</div>\n ))}\n {cells.map((date, i) => {\n if (!date) return <div key={`empty-${i}`} />;\n const isSelected = value ? isSameDay(date, value) : false;\n const isToday = isSameDay(date, today);\n const isHighlighted = highlightedDates.some((d) => isSameDay(d, date));\n const isDisabled =\n (minDate && date < minDate) || (maxDate && date > maxDate);\n\n return (\n <button\n key={date.toISOString()}\n type=\"button\"\n disabled={isDisabled}\n onClick={() => onChange?.(date)}\n aria-label={date.toLocaleDateString()}\n aria-pressed={isSelected}\n className={cn(\n \"h-8 w-8 text-xs rounded-md flex items-center justify-center transition-colors font-medium relative\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-30\",\n isSelected && \"bg-primary text-primary-foreground hover:bg-primary/90\",\n !isSelected && isToday && \"border border-primary text-primary\",\n !isSelected && !isToday && \"hover:bg-accent\",\n )}\n >\n {date.getDate()}\n {isHighlighted && !isSelected && (\n <span className=\"absolute bottom-1 left-1/2 -translate-x-1/2 h-1 w-1 rounded-full bg-primary\" />\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n);\nCalendar.displayName = \"Calendar\";\n\n// ─── CodeBlock ────────────────────────────────────────────────────────────\n\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {\n code: string;\n language?: string;\n showLineNumbers?: boolean;\n caption?: string;\n onCopy?: () => void;\n}\n\nconst CodeBlock = React.forwardRef<HTMLDivElement, CodeBlockProps>(\n ({ className, code, language, showLineNumbers, caption, onCopy, ...props }, ref) => {\n const [copied, setCopied] = React.useState(false);\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n onCopy?.();\n setTimeout(() => setCopied(false), 2000);\n };\n\n const lines = code.split(\"\\n\");\n\n return (\n <div ref={ref} className={cn(\"atlas-code-block relative rounded-lg border border-border bg-muted/50 overflow-hidden\", className)} {...props}>\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-border bg-muted/80\">\n {language && <span className=\"text-xs font-medium text-muted-foreground\">{language}</span>}\n {caption && <span className=\"text-xs text-muted-foreground\">{caption}</span>}\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied!\" : \"Copy code\"}\n className=\"ml-auto flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground hover:text-foreground hover:bg-background transition-colors\"\n >\n {copied ? (\n <>\n <svg className=\"h-3.5 w-3.5 text-success\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n Copied\n </>\n ) : (\n <>\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n Copy\n </>\n )}\n </button>\n </div>\n <pre className=\"overflow-x-auto p-4 text-sm\">\n <code className={`language-${language}`}>\n {showLineNumbers\n ? lines.map((line, i) => (\n <span key={i} className=\"block\">\n <span className=\"mr-4 select-none text-muted-foreground/50 text-xs w-5 inline-block text-right\">{i + 1}</span>\n {line}\n </span>\n ))\n : code}\n </code>\n </pre>\n </div>\n );\n }\n);\nCodeBlock.displayName = \"CodeBlock\";\n\n// ─── Chart (placeholder - integrates with recharts/chartjs) ───────────────\n\nexport interface ChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: string;\n description?: string;\n loading?: boolean;\n empty?: boolean;\n}\n\nconst Chart = React.forwardRef<HTMLDivElement, ChartProps>(\n ({ className, title, description, loading, empty, children, ...props }, ref) => (\n <div ref={ref} className={cn(\"atlas-chart\", className)} {...props}>\n {(title || description) && (\n <div className=\"mb-4\">\n {title && <h3 className=\"text-base font-semibold\">{title}</h3>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n )}\n {loading ? (\n <div className=\"h-64 w-full animate-pulse rounded-lg bg-muted\" />\n ) : empty ? (\n <div className=\"h-64 w-full flex items-center justify-center text-muted-foreground text-sm border border-dashed border-border rounded-lg\">\n No chart data available\n </div>\n ) : (\n children\n )}\n </div>\n )\n);\nChart.displayName = \"Chart\";\n\n\n// ═══════════════════════════════════════════════════════════════\n// New in v0.1.2\n// ═══════════════════════════════════════════════════════════════\n\n\n// ─── StatsCard ────────────────────────────────────────────────────────────\n\nexport interface StatsCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: React.ReactNode;\n value: React.ReactNode;\n icon?: React.ReactNode;\n trend?: { value: number; label?: string };\n description?: React.ReactNode;\n loading?: boolean;\n}\n\nconst StatsCard = React.forwardRef<HTMLDivElement, StatsCardProps>(\n ({ className, title, value, icon, trend, description, loading, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-stats-card rounded-xl border border-border bg-card p-6 shadow-sm\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-muted-foreground truncate\">{title}</p>\n <p className=\"mt-1 text-3xl font-bold tracking-tight\">\n {loading ? (\n <span className=\"inline-block h-8 w-28 animate-pulse rounded bg-muted\" />\n ) : value}\n </p>\n {trend && !loading && (\n <p className={cn(\n \"mt-1 flex items-center gap-1 text-sm font-medium\",\n trend.value > 0 ? \"text-success\" : trend.value < 0 ? \"text-destructive\" : \"text-muted-foreground\"\n )}>\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d={trend.value > 0 ? \"M7 17l9-9M7 7h10v10\" : trend.value < 0 ? \"M17 7l-9 9M7 7v10h10\" : \"M5 12h14\"}\n />\n </svg>\n {Math.abs(trend.value)}%\n {trend.label && <span className=\"font-normal text-muted-foreground\">{trend.label}</span>}\n </p>\n )}\n {description && !loading && (\n <p className=\"mt-1 text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n {icon && (\n <div className={cn(\n \"flex h-12 w-12 shrink-0 items-center justify-center rounded-lg\",\n \"bg-primary/10 text-primary [&>svg]:h-6 [&>svg]:w-6\"\n )}>\n {icon}\n </div>\n )}\n </div>\n </div>\n )\n);\nStatsCard.displayName = \"StatsCard\";\n\n// ─── TreeView ─────────────────────────────────────────────────────────────\n\nexport interface TreeNode {\n id: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n children?: TreeNode[];\n disabled?: boolean;\n}\n\nexport interface TreeViewProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\" | \"size\"> {\n nodes: TreeNode[];\n selected?: string;\n onSelect?: (id: string) => void;\n defaultExpanded?: string[];\n size?: \"sm\" | \"md\";\n}\n\ninterface TreeItemProps {\n node: TreeNode;\n depth: number;\n selected?: string;\n onSelect?: (id: string) => void;\n expanded: Set<string>;\n onToggle: (id: string) => void;\n size: \"sm\" | \"md\";\n}\n\nconst TreeItem = ({ node, depth, selected, onSelect, expanded, onToggle, size }: TreeItemProps) => {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expanded.has(node.id);\n const isSelected = selected === node.id;\n\n return (\n <li role=\"treeitem\" aria-selected={isSelected} aria-expanded={hasChildren ? isExpanded : undefined}>\n <button\n type=\"button\"\n disabled={node.disabled}\n onClick={() => {\n if (hasChildren) onToggle(node.id);\n if (!node.disabled) onSelect?.(node.id);\n }}\n style={{ paddingLeft: `${depth * 16 + 8}px` }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md pr-3 text-left transition-colors\",\n size === \"sm\" ? \"py-1 text-xs\" : \"py-1.5 text-sm\",\n isSelected\n ? \"bg-accent text-accent-foreground font-medium\"\n : \"hover:bg-accent/50 text-foreground\",\n node.disabled && \"opacity-50 cursor-not-allowed pointer-events-none\"\n )}\n >\n <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">\n {hasChildren ? (\n <svg\n className={cn(\"h-3.5 w-3.5 transition-transform\", isExpanded && \"rotate-90\")}\n fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n ) : (\n <span className=\"h-1 w-1 rounded-full bg-muted-foreground/40\" />\n )}\n </span>\n {node.icon && (\n <span className=\"shrink-0 [&>svg]:h-4 [&>svg]:w-4 text-muted-foreground\" aria-hidden=\"true\">\n {node.icon}\n </span>\n )}\n <span className=\"flex-1 truncate\">{node.label}</span>\n </button>\n {hasChildren && isExpanded && (\n <ul role=\"group\">\n {node.children!.map((child) => (\n <TreeItem\n key={child.id}\n node={child}\n depth={depth + 1}\n selected={selected}\n onSelect={onSelect}\n expanded={expanded}\n onToggle={onToggle}\n size={size}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\nconst TreeView = React.forwardRef<HTMLDivElement, TreeViewProps>(\n ({ className, nodes, selected, onSelect, defaultExpanded = [], size = \"md\", ...props }, ref) => {\n const [expanded, setExpanded] = React.useState<Set<string>>(new Set(defaultExpanded));\n\n const toggle = (id: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n return (\n <div ref={ref} className={cn(\"atlas-tree-view\", className)} {...props}>\n <ul role=\"tree\" className=\"space-y-0.5\">\n {nodes.map((node) => (\n <TreeItem\n key={node.id}\n node={node}\n depth={0}\n selected={selected}\n onSelect={onSelect}\n expanded={expanded}\n onToggle={toggle}\n size={size}\n />\n ))}\n </ul>\n </div>\n );\n }\n);\nTreeView.displayName = \"TreeView\";\n\n// ─── JsonViewer ───────────────────────────────────────────────────────────\n\nexport type JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\nexport interface JsonViewerProps extends React.HTMLAttributes<HTMLDivElement> {\n data: JsonValue;\n defaultExpanded?: boolean;\n maxDepth?: number;\n indent?: number;\n}\n\ninterface JsonNodeProps {\n value: JsonValue;\n keyName?: string;\n depth: number;\n maxDepth: number;\n indent: number;\n defaultExpanded: boolean;\n}\n\nconst JsonNode = ({ value, keyName, depth, maxDepth, indent, defaultExpanded }: JsonNodeProps) => {\n const [open, setOpen] = React.useState(defaultExpanded || depth < 2);\n const isObject = typeof value === \"object\" && value !== null && !Array.isArray(value);\n const isArray = Array.isArray(value);\n const isCollapsible = isObject || isArray;\n\n const renderValue = () => {\n if (value === null) return <span className=\"text-muted-foreground\">null</span>;\n if (typeof value === \"boolean\") return <span className=\"text-blue-500\">{String(value)}</span>;\n if (typeof value === \"number\") return <span className=\"text-amber-500\">{value}</span>;\n if (typeof value === \"string\") return <span className=\"text-success\">\"{value}\"</span>;\n return null;\n };\n\n const entries = isArray\n ? value.map((v, i) => [String(i), v] as [string, JsonValue])\n : isObject\n ? Object.entries(value as { [key: string]: JsonValue })\n : [];\n\n const bracket = isArray ? [\"[\", \"]\"] : [\"{\", \"}\"];\n const shouldTruncate = depth >= maxDepth;\n\n return (\n <span className=\"block\" style={{ paddingLeft: depth > 0 ? `${indent * 12}px` : 0 }}>\n {keyName !== undefined && (\n <span className=\"text-foreground font-medium\">\"{keyName}\": </span>\n )}\n {!isCollapsible && renderValue()}\n {isCollapsible && (\n <>\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className=\"inline-flex items-center gap-0.5 font-mono text-foreground hover:text-primary transition-colors\"\n aria-expanded={open}\n >\n <svg className={cn(\"h-3 w-3 transition-transform\", open && \"rotate-90\")} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n <span>{bracket[0]}</span>\n {!open && (\n <span className=\"text-muted-foreground text-xs\">\n {isArray ? `${value.length} items` : `${entries.length} keys`}\n </span>\n )}\n {!open && <span>{bracket[1]}</span>}\n </button>\n {open && !shouldTruncate && (\n <span className=\"block\">\n {entries.map(([k, v]) => (\n <JsonNode\n key={k}\n keyName={isObject ? k : undefined}\n value={v}\n depth={depth + 1}\n maxDepth={maxDepth}\n indent={indent}\n defaultExpanded={defaultExpanded}\n />\n ))}\n <span style={{ paddingLeft: depth > 0 ? `${(depth) * 12}px` : 0 }} className=\"block font-mono\">\n {bracket[1]}\n </span>\n </span>\n )}\n {open && shouldTruncate && (\n <span className=\"text-muted-foreground text-xs ml-1\">...</span>\n )}\n </>\n )}\n </span>\n );\n};\n\nconst JsonViewer = React.forwardRef<HTMLDivElement, JsonViewerProps>(\n ({ className, data, defaultExpanded = true, maxDepth = 10, indent = 2, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-json-viewer rounded-lg border border-border bg-muted/30 p-4 font-mono text-xs overflow-x-auto\",\n className\n )}\n {...props}\n >\n <JsonNode\n value={data}\n depth={0}\n maxDepth={maxDepth}\n indent={indent}\n defaultExpanded={defaultExpanded}\n />\n </div>\n )\n);\nJsonViewer.displayName = \"JsonViewer\";\n\n// ─── Heatmap ──────────────────────────────────────────────────────────────\n\nexport interface HeatmapCell {\n date: string;\n value: number;\n}\n\nexport interface HeatmapProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n data: HeatmapCell[];\n title?: React.ReactNode;\n colorScale?: [string, string];\n weeks?: number;\n showMonthLabels?: boolean;\n tooltip?: (cell: HeatmapCell) => string;\n}\n\nconst HEATMAP_DAYS = [\"\", \"Mon\", \"\", \"Wed\", \"\", \"Fri\", \"\"];\n\nconst Heatmap = React.forwardRef<HTMLDivElement, HeatmapProps>(\n ({\n className,\n data,\n title,\n weeks = 52,\n showMonthLabels = true,\n tooltip,\n ...props\n }, ref) => {\n const dataMap = React.useMemo(() => {\n const map = new Map<string, number>();\n data.forEach((d) => map.set(d.date, d.value));\n return map;\n }, [data]);\n\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n\n const getColor = (value: number) => {\n if (value === 0) return \"bg-muted\";\n const intensity = value / maxValue;\n if (intensity < 0.25) return \"bg-success/25\";\n if (intensity < 0.5) return \"bg-success/50\";\n if (intensity < 0.75) return \"bg-success/75\";\n return \"bg-success\";\n };\n\n const today = new Date();\n const startDate = new Date(today);\n startDate.setDate(today.getDate() - weeks * 7);\n\n const grid: (HeatmapCell | null)[][] = Array.from({ length: 7 }, () => []);\n const current = new Date(startDate);\n current.setDate(current.getDate() - current.getDay());\n\n for (let w = 0; w < weeks; w++) {\n for (let d = 0; d < 7; d++) {\n const dateStr = current.toISOString().split(\"T\")[0];\n if (current >= startDate && current <= today) {\n grid[d].push({ date: dateStr, value: dataMap.get(dateStr) ?? 0 });\n } else {\n grid[d].push(null);\n }\n current.setDate(current.getDate() + 1);\n }\n }\n\n return (\n <div ref={ref} className={cn(\"atlas-heatmap\", className)} {...props}>\n {title && <p className=\"mb-3 text-sm font-medium\">{title}</p>}\n <div className=\"flex gap-1\">\n <div className=\"flex flex-col gap-1 mr-1\">\n {HEATMAP_DAYS.map((d, i) => (\n <div key={i} className=\"h-3 w-6 flex items-center\">\n <span className=\"text-[9px] text-muted-foreground\">{d}</span>\n </div>\n ))}\n </div>\n <div className=\"flex gap-1 overflow-x-auto\">\n {Array.from({ length: weeks }, (_, w) => (\n <div key={w} className=\"flex flex-col gap-1\">\n {Array.from({ length: 7 }, (_, d) => {\n const cell = grid[d][w];\n if (!cell) return <div key={d} className=\"h-3 w-3 rounded-sm opacity-0\" />;\n return (\n <div\n key={d}\n title={tooltip ? tooltip(cell) : `${cell.date}: ${cell.value}`}\n className={cn(\"h-3 w-3 rounded-sm transition-opacity hover:opacity-80\", getColor(cell.value))}\n role=\"gridcell\"\n aria-label={`${cell.date}: ${cell.value}`}\n />\n );\n })}\n </div>\n ))}\n </div>\n </div>\n <div className=\"mt-2 flex items-center gap-1 justify-end\">\n <span className=\"text-[10px] text-muted-foreground mr-1\">Less</span>\n {[\"bg-muted\", \"bg-success/25\", \"bg-success/50\", \"bg-success/75\", \"bg-success\"].map((c, i) => (\n <div key={i} className={cn(\"h-3 w-3 rounded-sm\", c)} />\n ))}\n <span className=\"text-[10px] text-muted-foreground ml-1\">More</span>\n </div>\n </div>\n );\n }\n);\nHeatmap.displayName = \"Heatmap\";\n\n// ─── KanbanBoard ──────────────────────────────────────────────────────────\n\nexport interface KanbanCard {\n id: string;\n title: string;\n description?: string;\n tags?: string[];\n assignee?: React.ReactNode;\n}\n\nexport interface KanbanColumn {\n id: string;\n title: string;\n cards: KanbanCard[];\n color?: string;\n limit?: number;\n}\n\nexport interface KanbanBoardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n columns: KanbanColumn[];\n onChange?: (columns: KanbanColumn[]) => void;\n renderCard?: (card: KanbanCard, columnId: string) => React.ReactNode;\n}\n\nconst KanbanBoard = React.forwardRef<HTMLDivElement, KanbanBoardProps>(\n ({ className, columns, onChange, renderCard, ...props }, ref) => {\n const [dragging, setDragging] = React.useState<{ cardId: string; fromCol: string } | null>(null);\n const [dragOver, setDragOver] = React.useState<string | null>(null);\n\n const handleDragStart = (cardId: string, colId: string) => {\n setDragging({ cardId, fromCol: colId });\n };\n\n const handleDrop = (toColId: string) => {\n if (!dragging || dragging.fromCol === toColId) {\n setDragging(null);\n setDragOver(null);\n return;\n }\n const updated = columns.map((col) => {\n if (col.id === dragging.fromCol) {\n return { ...col, cards: col.cards.filter((c) => c.id !== dragging.cardId) };\n }\n if (col.id === toColId) {\n const card = columns\n .find((c) => c.id === dragging.fromCol)\n ?.cards.find((c) => c.id === dragging.cardId);\n if (card) return { ...col, cards: [...col.cards, card] };\n }\n return col;\n });\n onChange?.(updated);\n setDragging(null);\n setDragOver(null);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"atlas-kanban flex gap-4 overflow-x-auto pb-4\", className)}\n {...props}\n >\n {columns.map((col) => (\n <div\n key={col.id}\n onDragOver={(e) => { e.preventDefault(); setDragOver(col.id); }}\n onDrop={() => handleDrop(col.id)}\n onDragLeave={() => setDragOver(null)}\n className={cn(\n \"flex flex-col gap-2 rounded-xl border border-border bg-muted/50 p-3 w-72 shrink-0 min-h-[200px]\",\n \"transition-colors\",\n dragOver === col.id && \"border-primary bg-primary/5\"\n )}\n >\n <div className=\"flex items-center justify-between px-1 mb-1\">\n <div className=\"flex items-center gap-2\">\n {col.color && (\n <span className=\"h-2 w-2 rounded-full shrink-0\" style={{ backgroundColor: col.color }} />\n )}\n <h3 className=\"text-sm font-semibold\">{col.title}</h3>\n <span className=\"text-xs text-muted-foreground bg-background rounded-full px-1.5 py-0.5 border border-border\">\n {col.cards.length}{col.limit ? `/${col.limit}` : \"\"}\n </span>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {col.cards.map((card) => (\n <div\n key={card.id}\n draggable\n onDragStart={() => handleDragStart(card.id, col.id)}\n className={cn(\n \"rounded-lg border border-border bg-background p-3 shadow-sm cursor-grab active:cursor-grabbing\",\n \"transition-opacity hover:shadow-md\",\n dragging?.cardId === card.id && \"opacity-40\"\n )}\n >\n {renderCard ? renderCard(card, col.id) : (\n <>\n <p className=\"text-sm font-medium leading-snug\">{card.title}</p>\n {card.description && (\n <p className=\"mt-1 text-xs text-muted-foreground line-clamp-2\">{card.description}</p>\n )}\n {(card.tags?.length || card.assignee) && (\n <div className=\"mt-2 flex items-center justify-between gap-2\">\n <div className=\"flex flex-wrap gap-1\">\n {card.tags?.map((tag) => (\n <span key={tag} className=\"rounded bg-secondary px-1.5 py-0.5 text-[10px] font-medium\">\n {tag}\n </span>\n ))}\n </div>\n {card.assignee && <div className=\"shrink-0\">{card.assignee}</div>}\n </div>\n )}\n </>\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n }\n);\nKanbanBoard.displayName = \"KanbanBoard\";\n\n\nexport {\n\n Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter,\n Table, TableHeader, TableBody, TableRow, TableHead, TableCell, TableCaption,\n DataTable,\n List, ListItem,\n Statistic,\n Timeline,\n Calendar,\n CodeBlock,\n Chart,\n StatsCard, TreeView, JsonViewer, Heatmap, KanbanBoard\n};\n","import * as React from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Alert ─────────────────────────────────────────────────────────────────\n\nconst alertVariants = cva(\n \"atlas-alert relative w-full rounded-lg border p-4 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg+div]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n info: \"border-info/30 bg-info/10 text-info-foreground [&>svg]:text-info\",\n success: \"border-success/30 bg-success/10 text-success-foreground [&>svg]:text-success\",\n warning: \"border-warning/30 bg-warning/10 text-warning-foreground [&>svg]:text-warning\",\n danger: \"border-destructive/30 bg-destructive/10 text-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: { variant: \"default\" },\n }\n);\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {\n icon?: React.ReactNode;\n closable?: boolean;\n onClose?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant, icon, closable, onClose, children, ...props }, ref) => (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\n {icon}\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1\">{children}</div>\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"shrink-0 rounded-md p-0.5 text-current/50 hover:text-current transition-colors\"\n aria-label=\"Dismiss alert\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h5 ref={ref} className={cn(\"mb-1 font-semibold leading-tight tracking-tight\", className)} {...props} />\n )\n);\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm leading-relaxed\", className)} {...props} />\n )\n);\nAlertDescription.displayName = \"AlertDescription\";\n\n// ─── Toast ─────────────────────────────────────────────────────────────────\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 \"atlas-toast-viewport fixed bottom-4 right-4 z-[100] flex flex-col gap-2 w-full max-w-sm p-4\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitive.Viewport.displayName;\n\nconst toastVariants = cva(\n [\n \"group pointer-events-auto relative flex w-full items-start gap-3 overflow-hidden\",\n \"rounded-lg border p-4 shadow-lg transition-all\",\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 \"data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-full data-[state=open]:fade-in\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:slide-out-to-right-full\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-background border-border\",\n success: \"bg-success/10 border-success/20 text-success\",\n warning: \"bg-warning/10 border-warning/20 text-warning\",\n danger: \"bg-destructive/10 border-destructive/20 text-destructive\",\n info: \"bg-info/10 border-info/20 text-info\",\n },\n },\n defaultVariants: { variant: \"default\" },\n }\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => (\n <ToastPrimitive.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />\n));\nToast.displayName = ToastPrimitive.Root.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Title ref={ref} className={cn(\"text-sm font-semibold\", className)} {...props} />\n));\nToastTitle.displayName = ToastPrimitive.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Description ref={ref} className={cn(\"text-sm opacity-80\", className)} {...props} />\n));\nToastDescription.displayName = ToastPrimitive.Description.displayName;\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 toast-close=\"\"\n className={cn(\n \"ml-auto shrink-0 rounded-md p-0.5 opacity-50 hover:opacity-100 transition-opacity\",\n className\n )}\n aria-label=\"Close\"\n {...props}\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </ToastPrimitive.Close>\n));\nToastClose.displayName = ToastPrimitive.Close.displayName;\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-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium\",\n \"transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitive.Action.displayName;\n\n// ─── Snackbar ─────────────────────────────────────────────────────────────\n\nexport interface SnackbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n open?: boolean;\n message: React.ReactNode;\n action?: React.ReactNode;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n position?: \"bottom-center\" | \"bottom-left\" | \"bottom-right\" | \"top-center\";\n}\n\nconst Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\n ({ className, open, message, action, variant = \"default\", position = \"bottom-center\", ...props }, ref) => {\n if (!open) return null;\n\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n \"atlas-snackbar fixed z-50 flex items-center gap-4 rounded-lg px-4 py-3 shadow-lg\",\n \"min-w-[280px] max-w-[480px]\",\n position === \"bottom-center\" && \"bottom-4 left-1/2 -translate-x-1/2\",\n position === \"bottom-left\" && \"bottom-4 left-4\",\n position === \"bottom-right\" && \"bottom-4 right-4\",\n position === \"top-center\" && \"top-4 left-1/2 -translate-x-1/2\",\n variant === \"default\" && \"bg-foreground text-background\",\n variant === \"success\" && \"bg-success text-success-foreground\",\n variant === \"warning\" && \"bg-warning text-warning-foreground\",\n variant === \"danger\" && \"bg-destructive text-destructive-foreground\",\n className\n )}\n {...props}\n >\n <p className=\"flex-1 text-sm font-medium\">{message}</p>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n );\n }\n);\nSnackbar.displayName = \"Snackbar\";\n\n// ─── Progress ─────────────────────────────────────────────────────────────\n\nexport interface ProgressProps extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {\n label?: string;\n showValue?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n color?: \"default\" | \"success\" | \"warning\" | \"danger\";\n}\n\nconst Progress = React.forwardRef<React.ElementRef<typeof ProgressPrimitive.Root>, ProgressProps>(\n ({ className, value, label, showValue, size = \"md\", color = \"default\", ...props }, ref) => (\n <div className=\"atlas-progress w-full\">\n {(label || showValue) && (\n <div className=\"flex justify-between items-center mb-1.5\">\n {label && <span className=\"text-sm font-medium\">{label}</span>}\n {showValue && <span className=\"text-sm text-muted-foreground\">{value ?? 0}%</span>}\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative overflow-hidden rounded-full bg-secondary\",\n size === \"sm\" && \"h-1.5\",\n size === \"md\" && \"h-2.5\",\n size === \"lg\" && \"h-4\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n \"h-full w-full flex-1 transition-all duration-500 ease-in-out\",\n color === \"default\" && \"bg-primary\",\n color === \"success\" && \"bg-success\",\n color === \"warning\" && \"bg-warning\",\n color === \"danger\" && \"bg-destructive\",\n )}\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n </div>\n )\n);\nProgress.displayName = \"Progress\";\n\n// ─── CircularProgress ─────────────────────────────────────────────────────\n\nexport interface CircularProgressProps extends React.SVGAttributes<SVGElement> {\n value?: number;\n size?: number;\n thickness?: number;\n showValue?: boolean;\n label?: string;\n color?: \"default\" | \"success\" | \"warning\" | \"danger\";\n indeterminate?: boolean;\n}\n\nconst CircularProgress = ({\n value = 0,\n size = 48,\n thickness = 4,\n showValue,\n label,\n color = \"default\",\n indeterminate,\n className,\n ...props\n}: CircularProgressProps) => {\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (value / 100) * circumference;\n\n const colorMap = {\n default: \"stroke-primary\",\n success: \"stroke-success\",\n warning: \"stroke-warning\",\n danger: \"stroke-destructive\",\n };\n\n return (\n <div className={cn(\"atlas-circular-progress relative inline-flex items-center justify-center\", className)}>\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n className={indeterminate ? \"animate-spin\" : \"\"}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n {...props}\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={thickness}\n className=\"stroke-secondary\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={thickness}\n strokeDasharray={circumference}\n strokeDashoffset={indeterminate ? circumference * 0.75 : offset}\n strokeLinecap=\"round\"\n className={cn(\"transition-all duration-500\", colorMap[color])}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n />\n </svg>\n {showValue && !indeterminate && (\n <span className=\"absolute text-xs font-semibold\">{value}%</span>\n )}\n </div>\n );\n};\nCircularProgress.displayName = \"CircularProgress\";\n\n// ─── Skeleton ─────────────────────────────────────────────────────────────\n\nexport interface SkeletonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n variant?: \"text\" | \"rect\" | \"circle\";\n width?: string | number;\n height?: string | number;\n lines?: number;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant = \"rect\", width, height, lines = 1, style, ...props }, ref) => {\n if (variant === \"text\" && lines > 1) {\n return (\n <div className={cn(\"atlas-skeleton space-y-2\", className)} ref={ref} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className=\"h-4 animate-pulse rounded bg-muted\"\n style={{ width: i === lines - 1 ? \"75%\" : \"100%\" }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"atlas-skeleton animate-pulse bg-muted\",\n variant === \"circle\" ? \"rounded-full\" : \"rounded-md\",\n variant === \"text\" && \"h-4\",\n className\n )}\n style={{ width, height, ...style }}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\n// ─── LoadingSpinner ───────────────────────────────────────────────────────\n\nexport interface LoadingSpinnerProps extends React.SVGAttributes<SVGElement> {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n label?: string;\n}\n\nconst spinnerSizes = { xs: 12, sm: 16, md: 24, lg: 32, xl: 48 };\n\nconst LoadingSpinner = ({ size = \"md\", label = \"Loading\", className, ...props }: LoadingSpinnerProps) => (\n <svg\n width={spinnerSizes[size]}\n height={spinnerSizes[size]}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\"atlas-loading-spinner animate-spin text-primary\", className)}\n role=\"status\"\n aria-label={label}\n {...props}\n >\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n);\nLoadingSpinner.displayName = \"LoadingSpinner\";\n\n// ─── EmptyState ───────────────────────────────────────────────────────────\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"atlas-empty-state flex flex-col items-center justify-center gap-3 text-center py-16 px-6\",\n className\n )}\n {...props}\n >\n {icon && (\n <div className=\"rounded-full bg-muted p-4 text-muted-foreground [&>svg]:h-8 [&>svg]:w-8\">\n {icon}\n </div>\n )}\n <div className=\"max-w-xs\">\n <h3 className=\"text-base font-semibold\">{title}</h3>\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </div>\n {action && <div className=\"mt-2\">{action}</div>}\n </div>\n )\n);\nEmptyState.displayName = \"EmptyState\";\n\n// ─── StatusIndicator ──────────────────────────────────────────────────────\n\nexport interface StatusIndicatorProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\" | \"size\"> {\n status: \"online\" | \"offline\" | \"busy\" | \"away\" | \"idle\";\n label?: string;\n pulse?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst statusColors = {\n online: \"bg-success\",\n offline: \"bg-muted-foreground\",\n busy: \"bg-destructive\",\n away: \"bg-warning\",\n idle: \"bg-warning/60\",\n};\n\nconst StatusIndicator = React.forwardRef<HTMLSpanElement, StatusIndicatorProps>(\n ({ className, status, label, pulse, size = \"md\", ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\"atlas-status-indicator inline-flex items-center gap-1.5\", className)}\n {...props}\n >\n <span className=\"relative inline-flex\">\n <span className={cn(\n \"rounded-full\",\n statusColors[status],\n size === \"sm\" && \"h-1.5 w-1.5\",\n size === \"md\" && \"h-2.5 w-2.5\",\n size === \"lg\" && \"h-3.5 w-3.5\",\n )} />\n {pulse && status === \"online\" && (\n <span className={cn(\n \"absolute inline-flex rounded-full animate-ping opacity-75\",\n statusColors[status],\n size === \"sm\" && \"h-1.5 w-1.5\",\n size === \"md\" && \"h-2.5 w-2.5\",\n size === \"lg\" && \"h-3.5 w-3.5\",\n )} />\n )}\n </span>\n {label && <span className=\"text-sm capitalize\">{label ?? status}</span>}\n </span>\n )\n);\nStatusIndicator.displayName = \"StatusIndicator\";\n\n// ─── Notification ─────────────────────────────────────────────────────────\n\nexport interface NotificationProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: React.ReactNode;\n description?: React.ReactNode;\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n time?: React.ReactNode;\n unread?: boolean;\n onClose?: () => void;\n}\n\nconst Notification = React.forwardRef<HTMLDivElement, NotificationProps>(\n ({ className, title, description, avatar, icon, time, unread, onClose, ...props }, ref) => (\n <div\n ref={ref}\n role=\"listitem\"\n className={cn(\n \"atlas-notification flex gap-3 p-4 transition-colors\",\n unread && \"bg-primary/5\",\n className\n )}\n {...props}\n >\n <div className=\"shrink-0\">\n {avatar ?? (\n <div className=\"flex h-9 w-9 items-center justify-center rounded-full bg-muted text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\">\n {icon}\n </div>\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-2\">\n <p className={cn(\"text-sm font-medium leading-snug\", unread && \"font-semibold\")}>{title}</p>\n {unread && <span className=\"mt-1 h-2 w-2 shrink-0 rounded-full bg-primary\" aria-label=\"Unread\" />}\n </div>\n {description && <p className=\"mt-0.5 text-sm text-muted-foreground line-clamp-2\">{description}</p>}\n {time && <p className=\"mt-1 text-xs text-muted-foreground\">{time}</p>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"shrink-0 self-start rounded p-0.5 text-muted-foreground hover:text-foreground transition-colors\"\n aria-label=\"Dismiss notification\"\n >\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )\n);\nNotification.displayName = \"Notification\";\n\n\n// ═══════════════════════════════════════════════════════════════\n// New in v0.1.2\n// ═══════════════════════════════════════════════════════════════\n\n\n// ─── BannerAlert ──────────────────────────────────────────────────────────\n\nexport interface BannerAlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n variant?: \"info\" | \"success\" | \"warning\" | \"danger\";\n dismissible?: boolean;\n onDismiss?: () => void;\n action?: React.ReactNode;\n icon?: React.ReactNode;\n}\n\nconst bannerVariants = {\n info: \"bg-info/10 border-info/30 text-info-foreground [&_.atlas-banner-icon]:text-info\",\n success: \"bg-success/10 border-success/30 text-success-foreground [&_.atlas-banner-icon]:text-success\",\n warning: \"bg-warning/10 border-warning/30 text-warning-foreground [&_.atlas-banner-icon]:text-warning\",\n danger: \"bg-destructive/10 border-destructive/30 text-destructive [&_.atlas-banner-icon]:text-destructive\",\n};\n\nconst defaultBannerIcons: Record<string, React.ReactNode> = {\n info: (\n <svg className=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n success: (\n <svg className=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n warning: (\n <svg className=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n ),\n danger: (\n <svg className=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n};\n\nconst BannerAlert = React.forwardRef<HTMLDivElement, BannerAlertProps>(\n ({ className, title, description, variant = \"info\", dismissible, onDismiss, action, icon, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"atlas-banner-alert w-full border-y px-4 py-3\",\n bannerVariants[variant],\n className\n )}\n {...props}\n >\n <div className=\"flex items-start gap-3 max-w-screen-xl mx-auto\">\n <span className=\"atlas-banner-icon shrink-0 mt-0.5\">\n {icon ?? defaultBannerIcons[variant]}\n </span>\n <div className=\"flex-1 min-w-0\">\n {title && <p className=\"font-semibold text-sm\">{title}</p>}\n {description && <p className=\"text-sm mt-0.5 opacity-90\">{description}</p>}\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n {action}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Dismiss\"\n className=\"rounded-md p-1 opacity-60 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-current\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n )\n);\nBannerAlert.displayName = \"BannerAlert\";\n\n// ─── ConfirmDialog ────────────────────────────────────────────────────────\n\nexport interface ConfirmDialogProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: \"default\" | \"danger\";\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void;\n loading?: boolean;\n}\n\nconst ConfirmDialog = ({\n open,\n onOpenChange,\n title = \"Are you sure?\",\n description = \"This action cannot be undone.\",\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"default\",\n onConfirm,\n onCancel,\n loading,\n}: ConfirmDialogProps) => {\n const [pending, setPending] = React.useState(false);\n\n if (!open) return null;\n\n const handleConfirm = async () => {\n setPending(true);\n try {\n await onConfirm?.();\n onOpenChange?.(false);\n } finally {\n setPending(false);\n }\n };\n\n const handleCancel = () => {\n onCancel?.();\n onOpenChange?.(false);\n };\n\n const isBusy = pending || loading;\n\n return (\n <div className=\"atlas-confirm-dialog fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div\n className=\"fixed inset-0 bg-black/50 animate-in fade-in-0\"\n onClick={handleCancel}\n aria-hidden=\"true\"\n />\n <div\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=\"confirm-title\"\n aria-describedby=\"confirm-description\"\n className={cn(\n \"relative z-10 w-full max-w-sm rounded-xl border border-border bg-background p-6 shadow-xl\",\n \"animate-in fade-in-0 zoom-in-95\"\n )}\n >\n <div className=\"flex items-start gap-4\">\n <div className={cn(\n \"flex h-10 w-10 shrink-0 items-center justify-center rounded-full\",\n variant === \"danger\" ? \"bg-destructive/10\" : \"bg-primary/10\"\n )}>\n {variant === \"danger\" ? (\n <svg className=\"h-5 w-5 text-destructive\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n ) : (\n <svg className=\"h-5 w-5 text-primary\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n )}\n </div>\n <div>\n <h2 id=\"confirm-title\" className=\"text-base font-semibold\">{title}</h2>\n <p id=\"confirm-description\" className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n </div>\n </div>\n <div className=\"mt-6 flex justify-end gap-2\">\n <button\n type=\"button\"\n onClick={handleCancel}\n disabled={isBusy}\n className=\"inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium hover:bg-accent transition-colors disabled:opacity-50\"\n >\n {cancelLabel}\n </button>\n <button\n type=\"button\"\n onClick={handleConfirm}\n disabled={isBusy}\n className={cn(\n \"inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 text-sm font-medium transition-colors disabled:opacity-50\",\n variant === \"danger\"\n ? \"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n : \"bg-primary text-primary-foreground hover:bg-primary/90\"\n )}\n >\n {isBusy && (\n <svg className=\"h-3.5 w-3.5 animate-spin\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n )}\n {confirmLabel}\n </button>\n </div>\n </div>\n </div>\n );\n};\nConfirmDialog.displayName = \"ConfirmDialog\";\n\n// ─── FloatingActionButton ─────────────────────────────────────────────────\n\nexport interface FABAction {\n icon: React.ReactNode;\n label: string;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport interface FloatingActionButtonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\" | \"size\"> {\n icon?: React.ReactNode;\n label?: string;\n actions?: FABAction[];\n position?: \"bottom-right\" | \"bottom-left\" | \"bottom-center\";\n size?: \"sm\" | \"md\" | \"lg\";\n onClick?: () => void;\n}\n\nconst positionMap = {\n \"bottom-right\": \"fixed bottom-6 right-6 z-40\",\n \"bottom-left\": \"fixed bottom-6 left-6 z-40\",\n \"bottom-center\": \"fixed bottom-6 left-1/2 -translate-x-1/2 z-40\",\n};\n\nconst fabSizes = {\n sm: \"h-12 w-12 [&>svg]:h-5 [&>svg]:w-5\",\n md: \"h-14 w-14 [&>svg]:h-6 [&>svg]:w-6\",\n lg: \"h-16 w-16 [&>svg]:h-7 [&>svg]:w-7\",\n};\n\nconst FloatingActionButton = React.forwardRef<HTMLDivElement, FloatingActionButtonProps>(\n ({ className, icon, label = \"Open actions\", actions = [], position = \"bottom-right\", size = \"md\", onClick, ...props }, ref) => {\n const [open, setOpen] = React.useState(false);\n const hasActions = actions.length > 0;\n\n return (\n <div\n ref={ref}\n className={cn(positionMap[position], \"flex flex-col-reverse items-center gap-3\", className)}\n {...props}\n >\n {hasActions && open && (\n <div className=\"flex flex-col-reverse gap-2\">\n {actions.map((action, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <span className=\"rounded-md bg-foreground/90 px-2 py-1 text-xs text-background font-medium shadow whitespace-nowrap\">\n {action.label}\n </span>\n <button\n type=\"button\"\n disabled={action.disabled}\n onClick={() => { action.onClick(); setOpen(false); }}\n aria-label={action.label}\n className={cn(\n \"flex h-10 w-10 items-center justify-center rounded-full bg-background border border-border\",\n \"shadow-md text-foreground hover:bg-accent transition-all\",\n \"[&>svg]:h-4 [&>svg]:w-4\",\n \"disabled:opacity-50 disabled:pointer-events-none\"\n )}\n >\n {action.icon}\n </button>\n </div>\n ))}\n </div>\n )}\n <button\n type=\"button\"\n aria-label={label}\n aria-expanded={hasActions ? open : undefined}\n onClick={hasActions ? () => setOpen(!open) : onClick}\n className={cn(\n \"flex items-center justify-center rounded-full\",\n \"bg-primary text-primary-foreground shadow-lg\",\n \"hover:bg-primary/90 active:scale-95 transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n fabSizes[size]\n )}\n >\n {icon ?? (\n <svg\n className={cn(\"transition-transform duration-200\", hasActions && open && \"rotate-45\")}\n fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"\n style={{ width: \"1.5rem\", height: \"1.5rem\" }}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n </svg>\n )}\n </button>\n </div>\n );\n }\n);\nFloatingActionButton.displayName = \"FloatingActionButton\";\n\n// ─── RichTooltip ──────────────────────────────────────────────────────────\n\nexport interface RichTooltipProps {\n children: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n open?: boolean;\n defaultOpen?: boolean;\n delayDuration?: number;\n}\n\nconst RichTooltip = ({\n children,\n title,\n description,\n action,\n side = \"top\",\n open: controlledOpen,\n defaultOpen = false,\n delayDuration = 400,\n}: RichTooltipProps) => {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isOpen = controlledOpen ?? internalOpen;\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const show = () => {\n timeoutRef.current = setTimeout(() => setInternalOpen(true), delayDuration);\n };\n const hide = () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n setInternalOpen(false);\n };\n\n const positionClasses: Record<string, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n };\n\n return (\n <div\n className=\"atlas-rich-tooltip relative inline-flex\"\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {children}\n {isOpen && (\n <div\n role=\"tooltip\"\n className={cn(\n \"absolute z-50 w-64 rounded-lg border border-border bg-popover p-3 shadow-lg\",\n \"animate-in fade-in-0 zoom-in-95\",\n positionClasses[side]\n )}\n >\n {title && <p className=\"text-sm font-semibold mb-1\">{title}</p>}\n {description && <p className=\"text-xs text-muted-foreground leading-relaxed\">{description}</p>}\n {action && <div className=\"mt-2 pt-2 border-t border-border\">{action}</div>}\n </div>\n )}\n </div>\n );\n};\nRichTooltip.displayName = \"RichTooltip\";\n\n// ─── Tour ─────────────────────────────────────────────────────────────────\n\nexport interface TourStep {\n target?: string;\n title: string;\n description: React.ReactNode;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nexport interface TourProps {\n steps: TourStep[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onComplete?: () => void;\n currentStep?: number;\n onStepChange?: (step: number) => void;\n}\n\nconst Tour = ({\n steps,\n open,\n onOpenChange,\n onComplete,\n currentStep: controlledStep,\n onStepChange,\n}: TourProps) => {\n const [internalStep, setInternalStep] = React.useState(0);\n const step = controlledStep ?? internalStep;\n const current = steps[step];\n\n if (!open || !current) return null;\n\n const goNext = () => {\n if (step < steps.length - 1) {\n const next = step + 1;\n onStepChange?.(next);\n setInternalStep(next);\n } else {\n onComplete?.();\n onOpenChange?.(false);\n }\n };\n\n const goPrev = () => {\n if (step > 0) {\n const prev = step - 1;\n onStepChange?.(prev);\n setInternalStep(prev);\n }\n };\n\n return (\n <div className=\"atlas-tour fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div\n className=\"fixed inset-0 bg-black/40 animate-in fade-in-0\"\n onClick={() => onOpenChange?.(false)}\n aria-hidden=\"true\"\n />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`Tour step ${step + 1} of ${steps.length}: ${current.title}`}\n className=\"relative z-10 w-full max-w-sm rounded-xl border border-border bg-background p-5 shadow-xl animate-in fade-in-0 zoom-in-95\"\n >\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Step {step + 1} of {steps.length}\n </span>\n <button\n type=\"button\"\n onClick={() => onOpenChange?.(false)}\n aria-label=\"Close tour\"\n className=\"rounded p-0.5 text-muted-foreground hover:text-foreground transition-colors\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <h3 className=\"text-base font-semibold mb-1\">{current.title}</h3>\n <div className=\"text-sm text-muted-foreground\">{current.description}</div>\n\n <div className=\"mt-5 flex items-center justify-between gap-3\">\n <div className=\"flex gap-1\">\n {steps.map((_, i) => (\n <span\n key={i}\n className={cn(\n \"h-1.5 rounded-full transition-all\",\n i === step ? \"w-4 bg-primary\" : \"w-1.5 bg-muted\"\n )}\n />\n ))}\n </div>\n <div className=\"flex gap-2\">\n {step > 0 && (\n <button\n type=\"button\"\n onClick={goPrev}\n className=\"h-8 px-3 rounded-md border border-border text-sm hover:bg-accent transition-colors\"\n >\n Back\n </button>\n )}\n <button\n type=\"button\"\n onClick={goNext}\n className=\"h-8 px-4 rounded-md bg-primary text-primary-foreground text-sm font-medium hover:bg-primary/90 transition-colors\"\n >\n {step === steps.length - 1 ? \"Done\" : \"Next\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n};\nTour.displayName = \"Tour\";\n\n\nexport {\n\n Alert, AlertTitle, AlertDescription,\n ToastProvider, ToastViewport, Toast, ToastTitle, ToastDescription, ToastClose, ToastAction,\n Snackbar,\n Progress,\n CircularProgress,\n Skeleton,\n LoadingSpinner,\n EmptyState,\n StatusIndicator,\n Notification,\n BannerAlert, ConfirmDialog, FloatingActionButton, RichTooltip, Tour\n};\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Command } from \"cmdk\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Shared overlay styles ─────────────────────────────────────────────────\n\nconst overlayBase = cn(\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n);\n\n// ─── Dialog ────────────────────────────────────────────────────────────────\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay ref={ref} className={cn(overlayBase, className)} {...props} />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentVariants = cva(\n [\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%]\",\n \"gap-4 bg-background shadow-xl duration-200\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n ],\n {\n variants: {\n size: {\n sm: \"max-w-sm rounded-xl p-6\",\n md: \"max-w-lg rounded-xl p-6\",\n lg: \"max-w-2xl rounded-xl p-6\",\n xl: \"max-w-4xl rounded-xl p-6\",\n full: \"max-w-[calc(100vw-2rem)] h-[calc(100vh-2rem)] rounded-xl p-6 overflow-y-auto\",\n },\n },\n defaultVariants: { size: \"md\" },\n }\n);\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> &\n VariantProps<typeof dialogContentVariants> & { showClose?: boolean }\n>(({ className, children, size, showClose = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n {...props}\n >\n {children}\n {showClose && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none data-[state=open]:bg-accent\">\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col gap-1.5 text-center sm:text-left\", className)} {...props} />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end gap-2\", className)} {...props} />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold leading-tight tracking-tight\", className)} {...props} />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\n// ─── Modal (alias for Dialog with preset layout) ─────────────────────────\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n footer?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n children?: React.ReactNode;\n showClose?: boolean;\n}\n\nconst Modal = ({ open, onOpenChange, title, description, footer, size = \"md\", children, showClose = true }: ModalProps) => (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent size={size} showClose={showClose}>\n {(title || description) && (\n <DialogHeader>\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n )}\n {children}\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogContent>\n </Dialog>\n);\nModal.displayName = \"Modal\";\n\n// ─── Drawer ────────────────────────────────────────────────────────────────\n\nexport interface DrawerProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: \"left\" | \"right\" | \"top\" | \"bottom\";\n title?: React.ReactNode;\n description?: React.ReactNode;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst drawerSizes = {\n left: { sm: \"w-64\", md: \"w-80\", lg: \"w-96\", full: \"w-screen\" },\n right: { sm: \"w-64\", md: \"w-80\", lg: \"w-96\", full: \"w-screen\" },\n top: { sm: \"h-48\", md: \"h-64\", lg: \"h-80\", full: \"h-screen\" },\n bottom: { sm: \"h-48\", md: \"h-64\", lg: \"h-80\", full: \"h-screen\" },\n};\n\nconst drawerAnimations = {\n left: \"data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left\",\n right: \"data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right\",\n top: \"data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top\",\n bottom: \"data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom\",\n};\n\nconst Drawer = ({ open, onOpenChange, side = \"right\", title, description, footer, children, size = \"md\" }: DrawerProps) => (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n className={cn(\n \"atlas-drawer fixed z-50 gap-4 bg-background shadow-xl p-6\",\n \"transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out duration-300\",\n side === \"left\" && `left-0 top-0 h-full ${drawerSizes.left[size]}`,\n side === \"right\" && `right-0 top-0 h-full ${drawerSizes.right[size]}`,\n side === \"top\" && `top-0 left-0 w-full ${drawerSizes.top[size]}`,\n side === \"bottom\" && `bottom-0 left-0 w-full ${drawerSizes.bottom[size]}`,\n drawerAnimations[side],\n \"flex flex-col\"\n )}\n >\n <div className=\"flex items-start justify-between\">\n <div>\n {title && <h2 className=\"text-lg font-semibold\">{title}</h2>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n <DialogPrimitive.Close className=\"ml-auto rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring\">\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n <div className=\"flex-1 overflow-y-auto py-4\">{children}</div>\n {footer && <div className=\"border-t border-border pt-4 mt-auto\">{footer}</div>}\n </DialogPrimitive.Content>\n </DialogPortal>\n </Dialog>\n);\nDrawer.displayName = \"Drawer\";\n\n// ─── Sheet (alias for Drawer) ─────────────────────────────────────────────\n\nconst Sheet = Drawer;\n\n// ─── Popover ──────────────────────────────────────────────────────────────\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"atlas-popover z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\n// ─── HoverCard ────────────────────────────────────────────────────────────\n\nconst HoverCard = HoverCardPrimitive.Root;\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"atlas-hover-card z-50 w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\n// ─── ContextMenu ──────────────────────────────────────────────────────────\n\nconst ContextMenu = ContextMenuPrimitive.Root;\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"atlas-context-menu z-50 min-w-[8rem] overflow-hidden rounded-md border border-border\",\n \"bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & { inset?: boolean; destructive?: boolean }\n>(({ className, inset, destructive, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm\",\n \"outline-none focus:bg-accent focus:text-accent-foreground gap-2\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n destructive && \"text-destructive focus:text-destructive\",\n className\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-xs font-semibold text-muted-foreground\", inset && \"pl-8\", className)}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\n// ─── CommandDialog (Command Palette + Dialog combo) ──────────────────────\n\nexport interface CommandDialogProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst CommandDialog = ({ open, onOpenChange, placeholder = \"Search commands...\", children, className }: CommandDialogProps) => (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n className={cn(\n \"atlas-command-dialog fixed left-[50%] top-[20%] z-50 w-full max-w-xl translate-x-[-50%]\",\n \"overflow-hidden rounded-xl border border-border bg-popover shadow-2xl\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=open]:slide-in-from-left-1/2\",\n className\n )}\n >\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n <div className=\"flex items-center border-b border-border px-3\">\n <svg className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n </svg>\n <Command.Input placeholder={placeholder} className=\"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\" />\n </div>\n <Command.List className=\"max-h-80 overflow-y-auto overflow-x-hidden p-1\">\n <Command.Empty className=\"py-6 text-center text-sm text-muted-foreground\">No results found.</Command.Empty>\n {children}\n </Command.List>\n </Command>\n </DialogPrimitive.Content>\n </DialogPortal>\n </Dialog>\n);\nCommandDialog.displayName = \"CommandDialog\";\n\nexport const CommandItem = React.forwardRef<\n React.ElementRef<typeof Command.Item>,\n React.ComponentPropsWithoutRef<typeof Command.Item>\n>(({ className, ...props }, ref) => (\n <Command.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm gap-2\",\n \"outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n />\n));\nCommandItem.displayName = Command.Item.displayName;\n\nexport const CommandGroup = React.forwardRef<\n React.ElementRef<typeof Command.Group>,\n React.ComponentPropsWithoutRef<typeof Command.Group>\n>(({ className, ...props }, ref) => (\n <Command.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[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-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = Command.Group.displayName;\n\nexport const CommandSeparator = React.forwardRef<\n React.ElementRef<typeof Command.Separator>,\n React.ComponentPropsWithoutRef<typeof Command.Separator>\n>(({ className, ...props }, ref) => (\n <Command.Separator ref={ref} className={cn(\"-mx-1 h-px bg-border\", className)} {...props} />\n));\nCommandSeparator.displayName = Command.Separator.displayName;\n\n// ─── Lightbox / ImageViewer ───────────────────────────────────────────────\n\nexport interface LightboxProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n src: string;\n alt?: string;\n caption?: string;\n}\n\nconst Lightbox = ({ open, onOpenChange, src, alt = \"\", caption }: LightboxProps) => (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n className={cn(\n \"atlas-lightbox fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2\",\n \"max-w-[90vw] max-h-[90vh] overflow-hidden rounded-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"focus:outline-none\"\n )}\n >\n <div className=\"relative\">\n <img\n src={src}\n alt={alt}\n className=\"max-w-full max-h-[85vh] object-contain rounded-lg\"\n />\n {caption && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/60 px-4 py-2 rounded-b-lg\">\n <p className=\"text-sm text-white text-center\">{caption}</p>\n </div>\n )}\n <DialogPrimitive.Close className=\"absolute top-2 right-2 rounded-full bg-black/50 p-1.5 text-white hover:bg-black/70 transition-colors\">\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n </DialogPrimitive.Content>\n </DialogPortal>\n </Dialog>\n);\nLightbox.displayName = \"Lightbox\";\n\nconst ImageViewer = Lightbox;\n\nexport {\n Modal,\n Dialog, DialogTrigger, DialogPortal, DialogOverlay, DialogClose,\n DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription,\n Drawer,\n Sheet,\n Popover, PopoverTrigger, PopoverContent,\n HoverCard, HoverCardTrigger, HoverCardContent,\n ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem,\n ContextMenuSeparator, ContextMenuLabel, ContextMenuGroup, ContextMenuSub, ContextMenuRadioGroup,\n CommandDialog,\n Lightbox,\n ImageViewer,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── Image ─────────────────────────────────────────────────────────────────\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n fallback?: React.ReactNode;\n aspectRatio?: \"square\" | \"video\" | \"portrait\" | \"landscape\" | string;\n fit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n loading?: \"lazy\" | \"eager\";\n caption?: string;\n}\n\nconst roundedMap = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst aspectMap = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n landscape: \"aspect-[4/3]\",\n};\n\nconst Image = React.forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n className,\n fallback,\n aspectRatio,\n fit = \"cover\",\n rounded = \"none\",\n alt = \"\",\n loading = \"lazy\",\n caption,\n onError,\n style,\n ...props\n },\n ref\n ) => {\n const [errored, setErrored] = React.useState(false);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setErrored(true);\n onError?.(e);\n };\n\n const aspectClass =\n aspectRatio && aspectRatio in aspectMap\n ? aspectMap[aspectRatio as keyof typeof aspectMap]\n : undefined;\n\n const img = errored && fallback ? (\n <div\n className={cn(\n \"atlas-image-fallback flex items-center justify-center bg-muted text-muted-foreground\",\n roundedMap[rounded],\n aspectClass,\n className\n )}\n >\n {fallback}\n </div>\n ) : (\n <img\n ref={ref}\n alt={alt}\n loading={loading}\n onError={handleError}\n className={cn(\n \"atlas-image block\",\n `object-${fit}`,\n roundedMap[rounded],\n aspectClass && \"w-full h-full\",\n className\n )}\n style={style}\n {...props}\n />\n );\n\n if (caption) {\n return (\n <figure className={cn(\"inline-block\", aspectClass)}>\n {img}\n <figcaption className=\"mt-2 text-xs text-muted-foreground text-center\">\n {caption}\n </figcaption>\n </figure>\n );\n }\n\n return img;\n }\n);\nImage.displayName = \"Image\";\n\n// ─── VideoPlayer ───────────────────────────────────────────────────────────\n\nexport interface VideoPlayerProps extends React.VideoHTMLAttributes<HTMLVideoElement> {\n src: string;\n poster?: string;\n aspectRatio?: \"square\" | \"video\" | \"portrait\" | \"landscape\";\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n caption?: string;\n tracks?: {\n src: string;\n kind: \"subtitles\" | \"captions\" | \"descriptions\" | \"chapters\" | \"metadata\";\n srcLang: string;\n label: string;\n default?: boolean;\n }[];\n}\n\nconst VideoPlayer = React.forwardRef<HTMLVideoElement, VideoPlayerProps>(\n ({ className, src, poster, aspectRatio = \"video\", rounded = \"lg\", caption, tracks = [], controls = true, ...props }, ref) => {\n const aspectClass = aspectMap[aspectRatio] ?? \"aspect-video\";\n\n return (\n <figure className={cn(\"atlas-video-player w-full\", className)}>\n <div className={cn(aspectClass, \"overflow-hidden\", roundedMap[rounded], \"bg-black\")}>\n <video\n ref={ref}\n src={src}\n poster={poster}\n controls={controls}\n className=\"w-full h-full object-contain\"\n {...props}\n >\n {tracks.map((track, i) => (\n <track\n key={i}\n src={track.src}\n kind={track.kind}\n srcLang={track.srcLang}\n label={track.label}\n default={track.default}\n />\n ))}\n Your browser does not support the video tag.\n </video>\n </div>\n {caption && (\n <figcaption className=\"mt-2 text-xs text-muted-foreground text-center\">\n {caption}\n </figcaption>\n )}\n </figure>\n );\n }\n);\nVideoPlayer.displayName = \"VideoPlayer\";\n\n// ─── AudioPlayer ───────────────────────────────────────────────────────────\n\nexport interface AudioPlayerProps extends Omit<React.AudioHTMLAttributes<HTMLAudioElement>, \"title\"> {\n src: string;\n title?: string;\n artist?: string;\n coverArt?: string;\n showWaveform?: boolean;\n}\n\nconst AudioPlayer = React.forwardRef<HTMLAudioElement, AudioPlayerProps>(\n ({ className, src, title, artist, coverArt, controls = true, ...props }, ref) => {\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const audioRef = React.useRef<HTMLAudioElement>(null);\n\n const combinedRef = (node: HTMLAudioElement | null) => {\n (audioRef as React.MutableRefObject<HTMLAudioElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLAudioElement | null>).current = node;\n };\n\n const togglePlay = () => {\n const audio = audioRef.current;\n if (!audio) return;\n if (isPlaying) {\n audio.pause();\n } else {\n audio.play();\n }\n setIsPlaying(!isPlaying);\n };\n\n const formatTime = (secs: number) => {\n const m = Math.floor(secs / 60);\n const s = Math.floor(secs % 60);\n return `${m}:${s.toString().padStart(2, \"0\")}`;\n };\n\n return (\n <div className={cn(\"atlas-audio-player flex items-center gap-4 rounded-xl border border-border bg-card p-4 w-full\", className)}>\n <audio\n ref={combinedRef}\n src={src}\n onTimeUpdate={(e) => setCurrentTime(e.currentTarget.currentTime)}\n onLoadedMetadata={(e) => setDuration(e.currentTarget.duration)}\n onEnded={() => setIsPlaying(false)}\n {...props}\n />\n {coverArt && (\n <div className=\"h-12 w-12 shrink-0 rounded-lg overflow-hidden bg-muted\">\n <img src={coverArt} alt={title ?? \"Album art\"} className=\"h-full w-full object-cover\" />\n </div>\n )}\n <button\n type=\"button\"\n onClick={togglePlay}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground hover:bg-primary/90 transition-colors\"\n >\n {isPlaying ? (\n <svg className=\"h-4 w-4\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M6 4h4v16H6zM14 4h4v16h-4z\" />\n </svg>\n ) : (\n <svg className=\"h-4 w-4 ml-0.5\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n )}\n </button>\n <div className=\"flex-1 min-w-0\">\n {(title || artist) && (\n <div className=\"mb-1.5\">\n {title && <p className=\"text-sm font-medium truncate\">{title}</p>}\n {artist && <p className=\"text-xs text-muted-foreground truncate\">{artist}</p>}\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground tabular-nums w-8 shrink-0\">\n {formatTime(currentTime)}\n </span>\n <input\n type=\"range\"\n min={0}\n max={duration || 100}\n value={currentTime}\n onChange={(e) => {\n const t = Number(e.target.value);\n setCurrentTime(t);\n if (audioRef.current) audioRef.current.currentTime = t;\n }}\n className=\"flex-1 h-1.5 rounded-full bg-secondary accent-primary cursor-pointer\"\n aria-label=\"Seek\"\n />\n <span className=\"text-xs text-muted-foreground tabular-nums w-8 shrink-0 text-right\">\n {formatTime(duration)}\n </span>\n </div>\n </div>\n </div>\n );\n }\n);\nAudioPlayer.displayName = \"AudioPlayer\";\n\n// ─── Carousel ─────────────────────────────────────────────────────────────\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n items: React.ReactNode[];\n autoPlay?: boolean;\n autoPlayInterval?: number;\n showDots?: boolean;\n showArrows?: boolean;\n loop?: boolean;\n slidesPerView?: number;\n}\n\nconst Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n ({\n className,\n items,\n autoPlay = false,\n autoPlayInterval = 4000,\n showDots = true,\n showArrows = true,\n loop = true,\n slidesPerView = 1,\n ...props\n }, ref) => {\n const [current, setCurrent] = React.useState(0);\n const total = items.length;\n\n const prev = () => setCurrent((c) => (c === 0 ? (loop ? total - 1 : 0) : c - 1));\n const next = React.useCallback(() => setCurrent((c) => (c === total - 1 ? (loop ? 0 : c) : c + 1)), [total, loop]);\n\n React.useEffect(() => {\n if (!autoPlay) return;\n const id = setInterval(next, autoPlayInterval);\n return () => clearInterval(id);\n }, [autoPlay, autoPlayInterval, next]);\n\n return (\n <div ref={ref} className={cn(\"atlas-carousel relative w-full overflow-hidden\", className)} {...props}>\n <div\n className=\"flex transition-transform duration-400 ease-in-out\"\n style={{ transform: `translateX(-${current * (100 / slidesPerView)}%)` }}\n aria-live=\"polite\"\n >\n {items.map((item, i) => (\n <div\n key={i}\n className=\"w-full shrink-0\"\n style={{ width: `${100 / slidesPerView}%` }}\n aria-roledescription=\"slide\"\n aria-label={`Slide ${i + 1} of ${total}`}\n >\n {item}\n </div>\n ))}\n </div>\n\n {showArrows && (\n <>\n <button\n type=\"button\"\n onClick={prev}\n disabled={!loop && current === 0}\n aria-label=\"Previous slide\"\n className=\"absolute left-3 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 border border-border shadow-sm hover:bg-background transition-colors disabled:opacity-40\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n <button\n type=\"button\"\n onClick={next}\n disabled={!loop && current === total - 1}\n aria-label=\"Next slide\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 border border-border shadow-sm hover:bg-background transition-colors disabled:opacity-40\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n </>\n )}\n\n {showDots && (\n <div role=\"tablist\" aria-label=\"Slide navigation\" className=\"absolute bottom-3 left-1/2 -translate-x-1/2 flex gap-1.5\">\n {items.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={i === current}\n aria-label={`Go to slide ${i + 1}`}\n onClick={() => setCurrent(i)}\n className={cn(\n \"h-1.5 rounded-full transition-all duration-200\",\n i === current ? \"w-4 bg-primary\" : \"w-1.5 bg-primary/40 hover:bg-primary/70\"\n )}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\nCarousel.displayName = \"Carousel\";\n\n// ─── Gallery ──────────────────────────────────────────────────────────────\n\nexport interface GalleryImage {\n src: string;\n alt?: string;\n caption?: string;\n width?: number;\n height?: number;\n}\n\nexport interface GalleryProps extends React.HTMLAttributes<HTMLDivElement> {\n images: GalleryImage[];\n columns?: 2 | 3 | 4 | 5;\n gap?: number;\n onImageClick?: (image: GalleryImage, index: number) => void;\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nconst Gallery = React.forwardRef<HTMLDivElement, GalleryProps>(\n ({ className, images, columns = 3, gap = 2, onImageClick, rounded = \"md\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"atlas-gallery\", className)}\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap * 4}px`,\n }}\n role=\"list\"\n aria-label=\"Image gallery\"\n {...props}\n >\n {images.map((image, i) => (\n <div\n key={i}\n role=\"listitem\"\n className={cn(\n \"overflow-hidden\",\n roundedMap[rounded],\n onImageClick && \"cursor-pointer group\",\n )}\n onClick={() => onImageClick?.(image, i)}\n onKeyDown={(e) => e.key === \"Enter\" && onImageClick?.(image, i)}\n tabIndex={onImageClick ? 0 : undefined}\n aria-label={image.alt ?? `Image ${i + 1}`}\n >\n <img\n src={image.src}\n alt={image.alt ?? \"\"}\n loading=\"lazy\"\n className={cn(\n \"w-full h-full object-cover aspect-square\",\n \"transition-transform duration-300\",\n onImageClick && \"group-hover:scale-105\"\n )}\n />\n </div>\n ))}\n </div>\n )\n);\nGallery.displayName = \"Gallery\";\n\nexport { Image, VideoPlayer, AudioPlayer, Carousel, Gallery };\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n// ─── ThemeSwitcher ─────────────────────────────────────────────────────────\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\n\nexport interface ThemeSwitcherProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\" | \"onChange\"> {\n value?: Theme;\n onChange?: (theme: Theme) => void;\n variant?: \"icon\" | \"toggle\" | \"select\";\n}\n\nconst ThemeSwitcher = React.forwardRef<HTMLDivElement, ThemeSwitcherProps>(\n ({ className, value = \"system\", onChange, variant = \"icon\", ...props }, ref) => {\n const icons: Record<Theme, React.ReactNode> = {\n light: (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364-6.364l-.707.707M6.343 17.657l-.707.707M17.657 17.657l-.707-.707M6.343 6.343l-.707-.707M12 8a4 4 0 100 8 4 4 0 000-8z\" />\n </svg>\n ),\n dark: (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\" />\n </svg>\n ),\n system: (\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" />\n </svg>\n ),\n };\n\n const themes: Theme[] = [\"light\", \"dark\", \"system\"];\n\n if (variant === \"icon\") {\n const next: Record<Theme, Theme> = { light: \"dark\", dark: \"system\", system: \"light\" };\n return (\n <div ref={ref} className={cn(\"atlas-theme-switcher\", className)} {...props}>\n <button\n type=\"button\"\n onClick={() => onChange?.(next[value])}\n aria-label={`Current theme: ${value}. Switch to ${next[value]}`}\n className=\"h-9 w-9 flex items-center justify-center rounded-md border border-border hover:bg-accent transition-colors\"\n >\n {icons[value]}\n </button>\n </div>\n );\n }\n\n if (variant === \"toggle\") {\n return (\n <div ref={ref} className={cn(\"atlas-theme-switcher inline-flex rounded-md border border-border overflow-hidden\", className)} {...props} role=\"group\" aria-label=\"Theme selection\">\n {themes.map((theme) => (\n <button\n key={theme}\n type=\"button\"\n onClick={() => onChange?.(theme)}\n aria-pressed={value === theme}\n aria-label={`${theme} theme`}\n className={cn(\n \"flex h-8 w-8 items-center justify-center border-r last:border-r-0 border-border transition-colors\",\n value === theme ? \"bg-accent text-accent-foreground\" : \"hover:bg-muted\"\n )}\n >\n {icons[theme]}\n </button>\n ))}\n </div>\n );\n }\n\n return (\n <div ref={ref} className={cn(\"atlas-theme-switcher\", className)} {...props}>\n <select\n value={value}\n onChange={(e) => onChange?.(e.target.value as Theme)}\n aria-label=\"Select theme\"\n className=\"h-9 rounded-md border border-input bg-background px-3 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n {themes.map((theme) => (\n <option key={theme} value={theme} className=\"capitalize\">\n {theme.charAt(0).toUpperCase() + theme.slice(1)}\n </option>\n ))}\n </select>\n </div>\n );\n }\n);\nThemeSwitcher.displayName = \"ThemeSwitcher\";\n\n// ─── CopyButton ────────────────────────────────────────────────────────────\n\nexport interface CopyButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n text: string;\n timeout?: number;\n onCopied?: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"icon\" | \"button\";\n label?: string;\n}\n\nconst CopyButton = React.forwardRef<HTMLButtonElement, CopyButtonProps>(\n ({ className, text, timeout = 2000, onCopied, size = \"md\", variant = \"icon\", label = \"Copy\", ...props }, ref) => {\n const [copied, setCopied] = React.useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n onCopied?.();\n setTimeout(() => setCopied(false), timeout);\n } catch {\n // Fallback\n const el = document.createElement(\"textarea\");\n el.value = text;\n document.body.appendChild(el);\n el.select();\n document.execCommand(\"copy\");\n document.body.removeChild(el);\n setCopied(true);\n setTimeout(() => setCopied(false), timeout);\n }\n };\n\n const iconSize = size === \"sm\" ? \"h-3.5 w-3.5\" : size === \"lg\" ? \"h-5 w-5\" : \"h-4 w-4\";\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied!\" : label}\n className={cn(\n \"atlas-copy-button inline-flex items-center justify-center gap-1.5 rounded-md transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n variant === \"icon\" && [\n size === \"sm\" && \"h-7 w-7\",\n size === \"md\" && \"h-8 w-8\",\n size === \"lg\" && \"h-9 w-9\",\n \"border border-border hover:bg-accent text-muted-foreground hover:text-foreground\",\n ],\n variant === \"button\" && [\n \"px-3 border border-border hover:bg-accent text-sm\",\n size === \"sm\" && \"h-7 text-xs\",\n size === \"md\" && \"h-8\",\n size === \"lg\" && \"h-9\",\n ],\n copied && \"text-success border-success/30\",\n className\n )}\n {...props}\n >\n {copied ? (\n <svg className={iconSize} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : (\n <svg className={iconSize} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )}\n {variant === \"button\" && <span>{copied ? \"Copied!\" : label}</span>}\n </button>\n );\n }\n);\nCopyButton.displayName = \"CopyButton\";\n\n// ─── KeyboardShortcut ──────────────────────────────────────────────────────\n\nexport interface KeyboardShortcutProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\" | \"size\"> {\n keys: string[];\n separator?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst KeyboardShortcut = React.forwardRef<HTMLSpanElement, KeyboardShortcutProps>(\n ({ className, keys, separator = \"+\", size = \"md\", ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\"atlas-kbd inline-flex items-center gap-0.5\", className)}\n aria-label={`Keyboard shortcut: ${keys.join(separator)}`}\n {...props}\n >\n {keys.map((key, i) => (\n <React.Fragment key={i}>\n {i > 0 && (\n <span className=\"text-muted-foreground/60 mx-0.5 text-xs\">{separator}</span>\n )}\n <kbd\n className={cn(\n \"inline-flex items-center justify-center rounded border border-border bg-muted font-mono font-medium\",\n \"shadow-[inset_0_-1px_0_0_rgb(0_0_0_/_0.1)] dark:shadow-[inset_0_-1px_0_0_rgb(255_255_255_/_0.05)]\",\n size === \"sm\" && \"h-5 min-w-[1.25rem] px-1 text-[10px]\",\n size === \"md\" && \"h-6 min-w-[1.5rem] px-1.5 text-xs\",\n size === \"lg\" && \"h-7 min-w-[1.75rem] px-2 text-sm\",\n )}\n >\n {key}\n </kbd>\n </React.Fragment>\n ))}\n </span>\n )\n);\nKeyboardShortcut.displayName = \"KeyboardShortcut\";\n\n// ─── ResizablePanel ────────────────────────────────────────────────────────\n\nexport interface ResizablePanelProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n direction?: \"horizontal\" | \"vertical\";\n onResize?: (size: number) => void;\n}\n\nconst ResizablePanel = React.forwardRef<HTMLDivElement, ResizablePanelProps>(\n ({\n className,\n children,\n defaultSize = 300,\n minSize = 100,\n maxSize = 800,\n direction = \"horizontal\",\n onResize,\n style,\n ...props\n }, ref) => {\n const [size, setSize] = React.useState(defaultSize);\n const isDragging = React.useRef(false);\n const startPos = React.useRef(0);\n const startSize = React.useRef(defaultSize);\n\n const handleMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n isDragging.current = true;\n startPos.current = direction === \"horizontal\" ? e.clientX : e.clientY;\n startSize.current = size;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!isDragging.current) return;\n const pos = direction === \"horizontal\" ? e.clientX : e.clientY;\n const delta = pos - startPos.current;\n const newSize = Math.min(maxSize, Math.max(minSize, startSize.current + delta));\n setSize(newSize);\n onResize?.(newSize);\n };\n\n const handleMouseUp = () => {\n isDragging.current = false;\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"atlas-resizable-panel relative overflow-hidden\", className)}\n style={{\n ...(direction === \"horizontal\" ? { width: size } : { height: size }),\n ...style,\n }}\n {...props}\n >\n {children}\n <div\n onMouseDown={handleMouseDown}\n role=\"separator\"\n aria-orientation={direction}\n aria-label=\"Resize panel\"\n tabIndex={0}\n className={cn(\n \"atlas-resize-handle absolute z-10 flex items-center justify-center\",\n \"bg-transparent hover:bg-primary/20 transition-colors cursor-col-resize group\",\n direction === \"horizontal\"\n ? \"right-0 top-0 h-full w-1.5 cursor-col-resize\"\n : \"bottom-0 left-0 w-full h-1.5 cursor-row-resize\"\n )}\n >\n <div className={cn(\n \"rounded-full bg-border group-hover:bg-primary/50 transition-colors\",\n direction === \"horizontal\" ? \"h-8 w-1\" : \"w-8 h-1\"\n )} />\n </div>\n </div>\n );\n }\n);\nResizablePanel.displayName = \"ResizablePanel\";\n\n// ─── DragDropArea ──────────────────────────────────────────────────────────\n\nexport interface DragDropAreaProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onDrop\" | \"onDragOver\"> {\n onDrop?: (items: DataTransfer) => void;\n onDragOver?: (e: React.DragEvent) => void;\n accept?: string[];\n disabled?: boolean;\n active?: boolean;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n hint?: React.ReactNode;\n}\n\nconst DragDropArea = React.forwardRef<HTMLDivElement, DragDropAreaProps>(\n ({\n className,\n onDrop,\n accept,\n disabled,\n active: externalActive,\n label,\n icon,\n hint,\n children,\n ...props\n }, ref) => {\n const [internalActive, setInternalActive] = React.useState(false);\n const active = externalActive ?? internalActive;\n const [dragCounter, setDragCounter] = React.useState(0);\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault();\n setDragCounter((c) => c + 1);\n setInternalActive(true);\n };\n\n const handleDragLeave = () => {\n setDragCounter((c) => {\n const next = c - 1;\n if (next <= 0) setInternalActive(false);\n return next;\n });\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragCounter(0);\n setInternalActive(false);\n if (!disabled) {\n onDrop?.(e.dataTransfer);\n }\n };\n\n return (\n <div\n ref={ref}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n aria-label=\"Drop zone\"\n aria-disabled={disabled}\n className={cn(\n \"atlas-drag-drop flex flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed p-8 text-center\",\n \"transition-colors duration-150\",\n active && !disabled && \"border-primary bg-primary/5\",\n !active && \"border-border hover:border-primary/50 hover:bg-muted/30\",\n disabled && \"opacity-50 cursor-not-allowed border-border\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <div className={cn(\n \"rounded-full p-3 transition-colors\",\n active ? \"bg-primary/10 text-primary\" : \"bg-muted text-muted-foreground\"\n )}>\n {icon ?? (\n <svg className=\"h-6 w-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n )}\n </div>\n <div>\n <p className=\"text-sm font-medium\">\n {label ?? (active ? \"Release to drop\" : \"Drag & drop files here\")}\n </p>\n {hint && <p className=\"mt-1 text-xs text-muted-foreground\">{hint}</p>}\n {accept && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Accepted: {accept.join(\", \")}\n </p>\n )}\n </div>\n </>\n )}\n </div>\n );\n }\n);\nDragDropArea.displayName = \"DragDropArea\";\n\n\n// ═══════════════════════════════════════════════════════════════\n// New in v0.1.2\n// ═══════════════════════════════════════════════════════════════\n\n\n// ─── InfiniteScroll ───────────────────────────────────────────────────────\n\nexport interface InfiniteScrollProps extends React.HTMLAttributes<HTMLDivElement> {\n onLoadMore: () => void | Promise<void>;\n hasMore: boolean;\n loading?: boolean;\n threshold?: number;\n loader?: React.ReactNode;\n endMessage?: React.ReactNode;\n as?: React.ElementType;\n}\n\nconst DefaultLoader = () => (\n <div className=\"flex justify-center py-4\">\n <svg className=\"h-5 w-5 animate-spin text-muted-foreground\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n </div>\n);\n\nconst InfiniteScroll = React.forwardRef<HTMLDivElement, InfiniteScrollProps>(\n ({\n className,\n children,\n onLoadMore,\n hasMore,\n loading,\n threshold = 100,\n loader,\n endMessage,\n as: Comp = \"div\",\n ...props\n }, ref) => {\n const sentinelRef = React.useRef<HTMLDivElement>(null);\n const loadingRef = React.useRef(false);\n\n React.useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n\n const observer = new IntersectionObserver(\n async (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && hasMore && !loadingRef.current && !loading) {\n loadingRef.current = true;\n await onLoadMore();\n loadingRef.current = false;\n }\n },\n { rootMargin: `${threshold}px` }\n );\n\n observer.observe(sentinel);\n return () => observer.disconnect();\n }, [hasMore, loading, onLoadMore, threshold]);\n\n return (\n <Comp\n ref={ref}\n className={cn(\"atlas-infinite-scroll\", className)}\n {...props}\n >\n {children}\n <div ref={sentinelRef} aria-hidden=\"true\" />\n {loading && (loader ?? <DefaultLoader />)}\n {!hasMore && endMessage && (\n <div className=\"py-4 text-center text-sm text-muted-foreground\">\n {endMessage}\n </div>\n )}\n </Comp>\n );\n }\n);\nInfiniteScroll.displayName = \"InfiniteScroll\";\n\n// ─── VirtualList ──────────────────────────────────────────────────────────\n\nexport interface VirtualListProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n items: T[];\n itemHeight: number;\n renderItem: (item: T, index: number) => React.ReactNode;\n overscan?: number;\n height?: number | string;\n getItemKey?: (item: T, index: number) => string | number;\n}\n\nfunction VirtualList<T>({\n className,\n items,\n itemHeight,\n renderItem,\n overscan = 3,\n height = 400,\n getItemKey,\n style,\n ...props\n}: VirtualListProps<T>) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = React.useState(0);\n\n const containerHeight = typeof height === \"number\" ? height : 400;\n const totalHeight = items.length * itemHeight;\n\n const startIndex = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);\n const visibleCount = Math.ceil(containerHeight / itemHeight) + overscan * 2;\n const endIndex = Math.min(items.length - 1, startIndex + visibleCount);\n\n const visibleItems = items.slice(startIndex, endIndex + 1);\n\n return (\n <div\n ref={containerRef}\n role=\"list\"\n className={cn(\"atlas-virtual-list overflow-y-auto relative\", className)}\n style={{ height, ...style }}\n onScroll={(e) => setScrollTop((e.target as HTMLDivElement).scrollTop)}\n {...props}\n >\n <div style={{ height: totalHeight, position: \"relative\" }}>\n {visibleItems.map((item, i) => {\n const actualIndex = startIndex + i;\n return (\n <div\n key={getItemKey ? getItemKey(item, actualIndex) : actualIndex}\n role=\"listitem\"\n style={{\n position: \"absolute\",\n top: actualIndex * itemHeight,\n left: 0,\n right: 0,\n height: itemHeight,\n }}\n >\n {renderItem(item, actualIndex)}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\nVirtualList.displayName = \"VirtualList\";\n\n\nexport {\n ThemeSwitcher, CopyButton, KeyboardShortcut, ResizablePanel, DragDropArea ,\n InfiniteScroll, VirtualList\n};\n","import * as React from \"react\";\n\n// ─── useDisclosure ─────────────────────────────────────────────────────────\n\nexport interface UseDisclosureOptions {\n defaultOpen?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\n/**\n * Manages open/close state for modals, drawers, popovers — anything\n * that needs to toggle. Returns stable callbacks so child components\n * don't re-render on every parent render.\n */\nexport function useDisclosure(options: UseDisclosureOptions = {}) {\n const [isOpen, setIsOpen] = React.useState(options.defaultOpen ?? false);\n\n const open = React.useCallback(() => {\n setIsOpen(true);\n options.onOpen?.();\n }, [options]);\n\n const close = React.useCallback(() => {\n setIsOpen(false);\n options.onClose?.();\n }, [options]);\n\n const toggle = React.useCallback(() => {\n setIsOpen((prev) => {\n if (prev) options.onClose?.();\n else options.onOpen?.();\n return !prev;\n });\n }, [options]);\n\n return { isOpen, open, close, toggle, onOpenChange: setIsOpen };\n}\n\n// ─── useMediaQuery ─────────────────────────────────────────────────────────\n\n/**\n * Subscribes to a CSS media query and returns whether it currently matches.\n * SSR-safe — returns false on the server.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(query);\n setMatches(mq.matches);\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, [query]);\n\n return matches;\n}\n\n// ─── useBreakpoint ─────────────────────────────────────────────────────────\n\nconst breakpoints = {\n sm: \"(min-width: 640px)\",\n md: \"(min-width: 768px)\",\n lg: \"(min-width: 1024px)\",\n xl: \"(min-width: 1280px)\",\n \"2xl\": \"(min-width: 1536px)\",\n};\n\n/**\n * Returns true when the viewport is at or above the given Tailwind breakpoint.\n *\n * @example\n * const isDesktop = useBreakpoint(\"lg\");\n */\nexport function useBreakpoint(bp: keyof typeof breakpoints): boolean {\n return useMediaQuery(breakpoints[bp]);\n}\n\n// ─── useClipboard ──────────────────────────────────────────────────────────\n\nexport interface UseClipboardOptions {\n timeout?: number;\n}\n\n/**\n * Copies text to the clipboard and briefly flips `copied` to true.\n * Falls back to execCommand for older browsers (looking at you, Safari).\n *\n * @example\n * const { copy, copied } = useClipboard();\n * <button onClick={() => copy(code)}>{copied ? \"Copied!\" : \"Copy\"}</button>\n */\nexport function useClipboard(options: UseClipboardOptions = {}) {\n const [copied, setCopied] = React.useState(false);\n\n const copy = React.useCallback(async (text: string) => {\n if (typeof navigator === \"undefined\") return;\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), options.timeout ?? 2000);\n } catch {\n // execCommand fallback — deprecated but still works in some envs\n const el = document.createElement(\"textarea\");\n el.value = text;\n document.body.appendChild(el);\n el.select();\n document.execCommand(\"copy\");\n document.body.removeChild(el);\n setCopied(true);\n setTimeout(() => setCopied(false), options.timeout ?? 2000);\n }\n }, [options.timeout]);\n\n return { copy, copied };\n}\n\n// ─── useLocalStorage ──────────────────────────────────────────────────────\n\n/**\n * useState that persists to localStorage. Reads the initial value\n * from storage on mount and syncs back on every set call.\n * Safe to use with SSR — reads from storage only inside useEffect timing.\n */\nexport function useLocalStorage<T>(key: string, defaultValue: T): [T, (value: T | ((prev: T) => T)) => void] {\n const [value, setValue] = React.useState<T>(() => {\n if (typeof window === \"undefined\") return defaultValue;\n try {\n const stored = window.localStorage.getItem(key);\n return stored ? (JSON.parse(stored) as T) : defaultValue;\n } catch {\n return defaultValue;\n }\n });\n\n const set = React.useCallback((newValue: T | ((prev: T) => T)) => {\n setValue((prev) => {\n const next = typeof newValue === \"function\" ? (newValue as (p: T) => T)(prev) : newValue;\n try {\n window.localStorage.setItem(key, JSON.stringify(next));\n } catch { /* quota exceeded or private mode — silently ignore */ }\n return next;\n });\n }, [key]);\n\n return [value, set];\n}\n\n// ─── useTheme ──────────────────────────────────────────────────────────────\n\nexport type AtlasTheme = \"light\" | \"dark\" | \"system\";\n\n/**\n * Read and set the current Veloria UI theme.\n * Persists the selection to localStorage under \"atlas-theme\".\n * Applies the \"dark\" class to <html> so Tailwind's dark: utilities kick in.\n *\n * @example\n * const { theme, setTheme } = useTheme();\n * <button onClick={() => setTheme(\"dark\")}>Go dark</button>\n */\nexport function useTheme() {\n const [theme, setThemeState] = useLocalStorage<AtlasTheme>(\"atlas-theme\", \"system\");\n\n const resolvedTheme = React.useMemo<\"light\" | \"dark\">(() => {\n if (theme === \"system\") {\n return typeof window !== \"undefined\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n }\n return theme;\n }, [theme]);\n\n const setTheme = React.useCallback((t: AtlasTheme) => {\n setThemeState(t);\n if (typeof document !== \"undefined\") {\n const root = document.documentElement;\n root.classList.remove(\"light\", \"dark\");\n if (t !== \"system\") root.classList.add(t);\n }\n }, [setThemeState]);\n\n return { theme, resolvedTheme, setTheme };\n}\n\n// ─── useDebounce ───────────────────────────────────────────────────────────\n\n/**\n * Delays updating the returned value until `delay` ms have passed\n * without the input changing. Classic use case: search inputs.\n */\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n\n// ─── useOnClickOutside ────────────────────────────────────────────────────\n\n/**\n * Fires the handler when a click happens outside of the ref'd element.\n * Used heavily inside Veloria UI popovers, dropdowns, and comboboxes.\n */\nexport function useOnClickOutside<T extends HTMLElement>(\n ref: React.RefObject<T>,\n handler: (event: MouseEvent | TouchEvent) => void\n) {\n React.useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(event.target as Node)) return;\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n }, [ref, handler]);\n}\n\n// ─── useKeydown ───────────────────────────────────────────────────────────\n\n/**\n * Attaches a keydown listener to window for the given key.\n * Supports modifier checks (Ctrl, Meta, Shift).\n * Pass `enabled: false` to temporarily disable without removing the hook call.\n *\n * @example\n * useKeydown(\"k\", openCommandPalette, { metaKey: true });\n */\nexport function useKeydown(\n key: string,\n handler: (event: KeyboardEvent) => void,\n options: { ctrlKey?: boolean; metaKey?: boolean; shiftKey?: boolean; enabled?: boolean } = {}\n) {\n React.useEffect(() => {\n if (options.enabled === false) return;\n const listener = (event: KeyboardEvent) => {\n if (event.key !== key) return;\n if (options.ctrlKey && !event.ctrlKey) return;\n if (options.metaKey && !event.metaKey) return;\n if (options.shiftKey && !event.shiftKey) return;\n handler(event);\n };\n window.addEventListener(\"keydown\", listener);\n return () => window.removeEventListener(\"keydown\", listener);\n }, [key, handler, options]);\n}\n\n// ─── useMounted ───────────────────────────────────────────────────────────\n\n/**\n * Returns true after the component has mounted on the client.\n * Use this to guard any DOM-dependent code in SSR environments\n * (Next.js, Remix, etc.) without suppressHydrationWarning hacks.\n */\nexport function useMounted(): boolean {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => setMounted(true), []);\n return mounted;\n}\n\nexport { useId } from \"react\";\n\n// ═══════════════════════════════════════════════════════════════\n// New in v0.1.2\n// ═══════════════════════════════════════════════════════════════\n\n\n// ─── useForm ──────────────────────────────────────────────────────────────\n\ntype FieldValue = string | number | boolean | undefined;\n\nexport interface UseFormOptions<T extends Record<string, FieldValue>> {\n initialValues: T;\n validate?: (values: T) => Partial<Record<keyof T, string>>;\n onSubmit?: (values: T) => void | Promise<void>;\n}\n\nexport interface UseFormReturn<T extends Record<string, FieldValue>> {\n values: T;\n errors: Partial<Record<keyof T, string>>;\n touched: Partial<Record<keyof T, boolean>>;\n isSubmitting: boolean;\n isDirty: boolean;\n isValid: boolean;\n setValue: (field: keyof T, value: FieldValue) => void;\n setValues: (values: Partial<T>) => void;\n setError: (field: keyof T, error: string) => void;\n clearError: (field: keyof T) => void;\n handleChange: (field: keyof T) => (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;\n handleBlur: (field: keyof T) => () => void;\n handleSubmit: (e?: React.FormEvent) => void;\n reset: () => void;\n}\n\nexport function useForm<T extends Record<string, FieldValue>>(\n options: UseFormOptions<T>\n): UseFormReturn<T> {\n const [values, setValuesState] = React.useState<T>(options.initialValues);\n const [errors, setErrors] = React.useState<Partial<Record<keyof T, string>>>({});\n const [touched, setTouched] = React.useState<Partial<Record<keyof T, boolean>>>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const isDirty = JSON.stringify(values) !== JSON.stringify(options.initialValues);\n\n const runValidation = React.useCallback((vals: T) => {\n if (!options.validate) return {};\n return options.validate(vals);\n }, [options]);\n\n const isValid = Object.keys(runValidation(values)).length === 0;\n\n const setValue = React.useCallback((field: keyof T, value: FieldValue) => {\n setValuesState((prev) => ({ ...prev, [field]: value }));\n }, []);\n\n const setValues = React.useCallback((newValues: Partial<T>) => {\n setValuesState((prev) => ({ ...prev, ...newValues }));\n }, []);\n\n const setError = React.useCallback((field: keyof T, error: string) => {\n setErrors((prev) => ({ ...prev, [field]: error }));\n }, []);\n\n const clearError = React.useCallback((field: keyof T) => {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[field];\n return next;\n });\n }, []);\n\n const handleChange = React.useCallback((field: keyof T) => (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n ) => {\n const val = e.target.type === \"checkbox\"\n ? (e.target as HTMLInputElement).checked\n : e.target.value;\n setValue(field, val as FieldValue);\n if (touched[field]) {\n const newVals = { ...values, [field]: val };\n const errs = runValidation(newVals as T);\n setErrors(errs);\n }\n }, [values, touched, setValue, runValidation]);\n\n const handleBlur = React.useCallback((field: keyof T) => () => {\n setTouched((prev) => ({ ...prev, [field]: true }));\n const errs = runValidation(values);\n setErrors(errs);\n }, [values, runValidation]);\n\n const handleSubmit = React.useCallback((e?: React.FormEvent) => {\n e?.preventDefault();\n const allTouched = Object.keys(values).reduce(\n (acc, k) => ({ ...acc, [k]: true }),\n {} as Partial<Record<keyof T, boolean>>\n );\n setTouched(allTouched);\n const errs = runValidation(values);\n setErrors(errs);\n if (Object.keys(errs).length > 0) return;\n setIsSubmitting(true);\n Promise.resolve(options.onSubmit?.(values)).finally(() => setIsSubmitting(false));\n }, [values, options, runValidation]);\n\n const reset = React.useCallback(() => {\n setValuesState(options.initialValues);\n setErrors({});\n setTouched({});\n setIsSubmitting(false);\n }, [options.initialValues]);\n\n return {\n values, errors, touched, isSubmitting, isDirty, isValid,\n setValue, setValues, setError, clearError,\n handleChange, handleBlur, handleSubmit, reset,\n };\n}\n\n// ─── usePagination ────────────────────────────────────────────────────────\n\nexport interface UsePaginationOptions {\n total: number;\n pageSize?: number;\n defaultPage?: number;\n onChange?: (page: number, pageSize: number) => void;\n}\n\nexport interface UsePaginationReturn {\n page: number;\n pageSize: number;\n totalPages: number;\n total: number;\n from: number;\n to: number;\n hasPrev: boolean;\n hasNext: boolean;\n goTo: (page: number) => void;\n goNext: () => void;\n goPrev: () => void;\n goFirst: () => void;\n goLast: () => void;\n setPageSize: (size: number) => void;\n}\n\nexport function usePagination({\n total,\n pageSize: defaultPageSize = 10,\n defaultPage = 1,\n onChange,\n}: UsePaginationOptions): UsePaginationReturn {\n const [page, setPage] = React.useState(defaultPage);\n const [pageSize, setPageSizeState] = React.useState(defaultPageSize);\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n\n const goTo = React.useCallback((p: number) => {\n const clamped = Math.max(1, Math.min(p, totalPages));\n setPage(clamped);\n onChange?.(clamped, pageSize);\n }, [totalPages, pageSize, onChange]);\n\n const setPageSize = React.useCallback((size: number) => {\n setPageSizeState(size);\n setPage(1);\n onChange?.(1, size);\n }, [onChange]);\n\n const from = Math.min((page - 1) * pageSize + 1, total);\n const to = Math.min(page * pageSize, total);\n\n return {\n page, pageSize, totalPages, total, from, to,\n hasPrev: page > 1,\n hasNext: page < totalPages,\n goTo,\n goNext: () => goTo(page + 1),\n goPrev: () => goTo(page - 1),\n goFirst: () => goTo(1),\n goLast: () => goTo(totalPages),\n setPageSize,\n };\n}\n\n// ─── useIntersection ──────────────────────────────────────────────────────\n\nexport interface UseIntersectionOptions extends IntersectionObserverInit {\n once?: boolean;\n}\n\nexport function useIntersection<T extends HTMLElement>(\n options: UseIntersectionOptions = {}\n): [React.RefCallback<T>, boolean] {\n const [isIntersecting, setIsIntersecting] = React.useState(false);\n const observerRef = React.useRef<IntersectionObserver | null>(null);\n const { once, ...observerOptions } = options;\n\n const ref: React.RefCallback<T> = React.useCallback((node) => {\n if (observerRef.current) observerRef.current.disconnect();\n if (!node) return;\n\n observerRef.current = new IntersectionObserver(([entry]) => {\n setIsIntersecting(entry.isIntersecting);\n if (entry.isIntersecting && once) {\n observerRef.current?.disconnect();\n }\n }, observerOptions);\n\n observerRef.current.observe(node);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [once, observerOptions.threshold, observerOptions.root, observerOptions.rootMargin]);\n\n return [ref, isIntersecting];\n}\n\n// ─── useWindowSize ────────────────────────────────────────────────────────\n\nexport interface WindowSize {\n width: number;\n height: number;\n}\n\nexport function useWindowSize(): WindowSize {\n const [size, setSize] = React.useState<WindowSize>(() => ({\n width: typeof window !== \"undefined\" ? window.innerWidth : 0,\n height: typeof window !== \"undefined\" ? window.innerHeight : 0,\n }));\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n const handler = () => setSize({ width: window.innerWidth, height: window.innerHeight });\n window.addEventListener(\"resize\", handler);\n return () => window.removeEventListener(\"resize\", handler);\n }, []);\n\n return size;\n}\n\n// ─── useStep ──────────────────────────────────────────────────────────────\n\nexport interface UseStepOptions {\n total: number;\n defaultStep?: number;\n onChange?: (step: number) => void;\n}\n\nexport interface UseStepReturn {\n step: number;\n total: number;\n isFirst: boolean;\n isLast: boolean;\n progress: number;\n goNext: () => void;\n goPrev: () => void;\n goTo: (step: number) => void;\n reset: () => void;\n}\n\nexport function useStep({ total, defaultStep = 0, onChange }: UseStepOptions): UseStepReturn {\n const [step, setStep] = React.useState(defaultStep);\n\n const goTo = React.useCallback((s: number) => {\n const clamped = Math.max(0, Math.min(s, total - 1));\n setStep(clamped);\n onChange?.(clamped);\n }, [total, onChange]);\n\n return {\n step,\n total,\n isFirst: step === 0,\n isLast: step === total - 1,\n progress: total > 1 ? (step / (total - 1)) * 100 : 0,\n goNext: () => goTo(step + 1),\n goPrev: () => goTo(step - 1),\n goTo,\n reset: () => goTo(defaultStep),\n };\n}\n\n// ─── useCountdown ─────────────────────────────────────────────────────────\n\nexport interface UseCountdownOptions {\n from: number;\n interval?: number;\n onComplete?: () => void;\n autoStart?: boolean;\n}\n\nexport interface UseCountdownReturn {\n count: number;\n isRunning: boolean;\n start: () => void;\n pause: () => void;\n reset: () => void;\n}\n\nexport function useCountdown({\n from,\n interval = 1000,\n onComplete,\n autoStart = false,\n}: UseCountdownOptions): UseCountdownReturn {\n const [count, setCount] = React.useState(from);\n const [isRunning, setIsRunning] = React.useState(autoStart);\n const intervalRef = React.useRef<ReturnType<typeof setInterval> | null>(null);\n\n React.useEffect(() => {\n if (!isRunning) return;\n intervalRef.current = setInterval(() => {\n setCount((prev) => {\n if (prev <= 1) {\n setIsRunning(false);\n onComplete?.();\n return 0;\n }\n return prev - 1;\n });\n }, interval);\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [isRunning, interval, onComplete]);\n\n return {\n count,\n isRunning,\n start: () => { if (count > 0) setIsRunning(true); },\n pause: () => setIsRunning(false),\n reset: () => { setIsRunning(false); setCount(from); },\n };\n}\n\n","/**\n * useToast — fire toasts from anywhere without prop drilling.\n *\n * Pair this with <AtlasProvider> at the root of your app.\n * The context lives there and this hook just taps into it.\n *\n * @example\n * const { toast } = useToast();\n * toast({ title: \"Saved!\", variant: \"success\" });\n * toast({ title: \"Uh oh\", description: \"Something broke.\", variant: \"danger\" });\n *\n * — Veloria UI, https://veloria-ui.vercel.app/\n */\n\n\"use client\";\n\nimport * as React from \"react\";\n\nexport type ToastVariant = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface ToastData {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n variant?: ToastVariant;\n duration?: number;\n action?: React.ReactNode;\n}\n\nexport type ToastInput = Omit<ToastData, \"id\">;\n\ninterface ToastContextValue {\n toasts: ToastData[];\n toast: (input: ToastInput) => string;\n dismiss: (id: string) => void;\n dismissAll: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\nexport function ToastContextProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\n\n const toast = React.useCallback((input: ToastInput): string => {\n const id = Math.random().toString(36).slice(2);\n setToasts((prev) => [...prev, { ...input, id }]);\n return id;\n }, []);\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const dismissAll = React.useCallback(() => {\n setToasts([]);\n }, []);\n\n return (\n <ToastContext.Provider value={{ toasts, toast, dismiss, dismissAll }}>\n {children}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = React.useContext(ToastContext);\n if (!ctx) {\n throw new Error(\n \"useToast must be called inside <AtlasProvider>. \" +\n \"Make sure you've wrapped your app root — see https://veloria-ui.vercel.app/docs/provider\"\n );\n }\n return ctx;\n}\n","import type { Config } from \"tailwindcss\";\n\n// tailwindcss is a peerDep — it lives in the consumer's node_modules, never\n// bundled into veloria-ui. We require() at runtime so tsup marks it external\n// correctly instead of trying to resolve it at build time.\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst plugin = require(\"tailwindcss/plugin\") as (\n handler: Parameters<typeof import(\"tailwindcss/plugin\")>[0],\n config?: Parameters<typeof import(\"tailwindcss/plugin\")>[1]\n) => ReturnType<typeof import(\"tailwindcss/plugin\")>;\n\n/**\n * Veloria UI Tailwind plugin.\n *\n * Maps the CSS custom properties in atlas.css to Tailwind utilities.\n * Add to your tailwind.config.ts:\n *\n * import { atlasPlugin } from \"veloria-ui/tailwind\";\n * plugins: [atlasPlugin],\n *\n * Or use atlasPreset which also sets darkMode: [\"class\"]:\n *\n * import { atlasPreset } from \"veloria-ui/tailwind\";\n * presets: [atlasPreset],\n */\nexport const atlasPlugin = plugin(\n ({ addBase, addUtilities }) => {\n addBase({\n \"*\": { \"border-color\": \"hsl(var(--border))\" },\n body: {\n \"background-color\": \"hsl(var(--background))\",\n color: \"hsl(var(--foreground))\",\n },\n });\n addUtilities({\n \".text-balance\": { \"text-wrap\": \"balance\" },\n \".text-pretty\": { \"text-wrap\": \"pretty\" },\n });\n },\n {\n theme: {\n extend: {\n colors: {\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n success: {\n DEFAULT: \"hsl(var(--success))\",\n foreground: \"hsl(var(--success-foreground))\",\n },\n warning: {\n DEFAULT: \"hsl(var(--warning))\",\n foreground: \"hsl(var(--warning-foreground))\",\n },\n info: {\n DEFAULT: \"hsl(var(--info))\",\n foreground: \"hsl(var(--info-foreground))\",\n },\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n fontFamily: {\n sans: [\"var(--font-sans)\"],\n mono: [\"var(--font-mono)\"],\n },\n keyframes: {\n \"accordion-down\": {\n from: { height: \"0\" },\n to: { height: \"var(--radix-accordion-content-height)\" },\n },\n \"accordion-up\": {\n from: { height: \"var(--radix-accordion-content-height)\" },\n to: { height: \"0\" },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n }\n);\n\n/** Full preset — includes the plugin + darkMode: [\"class\"]. Recommended for new projects. */\nexport const atlasPreset: Partial<Config> = {\n darkMode: [\"class\"],\n plugins: [atlasPlugin],\n};\n\nexport default atlasPlugin;\n"]}