atlasui-lib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/LICENSE +21 -0
  3. package/README.md +253 -0
  4. package/dist/cli/index.js +364 -0
  5. package/dist/index.d.mts +1027 -0
  6. package/dist/index.d.ts +1027 -0
  7. package/dist/index.js +3954 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/index.mjs +3733 -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 +816 -0
  14. package/dist/provider.js.map +1 -0
  15. package/dist/provider.mjs +780 -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 +301 -0
  21. package/src/cli/registry.ts +139 -0
  22. package/src/components/advanced-forms/index.tsx +567 -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 +608 -0
  27. package/src/components/feedback/index.tsx +554 -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 +411 -0
  34. package/src/hooks/index.ts +271 -0
  35. package/src/hooks/use-toast.tsx +74 -0
  36. package/src/index.ts +353 -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/provider.tsx","../src/components/feedback/index.tsx","../src/utils/cn.ts","../src/components/basic/index.tsx"],"sourcesContent":["/**\n * AtlasProvider — wrap your app with this once.\n *\n * Covers Toast (needed for useToast) and TooltipProvider (so you don't\n * have to wrap every single Tooltip yourself).\n *\n * Usage in app/layout.tsx:\n *\n * import { AtlasProvider } from \"atlasui-lib/provider\";\n *\n * export default function RootLayout({ children }) {\n * return (\n * <html lang=\"en\">\n * <body>\n * <AtlasProvider>{children}</AtlasProvider>\n * </body>\n * </html>\n * );\n * }\n *\n * — JohnDev19, AtlasUI\n */\n\n\"use client\";\n\nimport * as React from \"react\";\nimport { ToastProvider, ToastViewport } from \"./components/feedback\";\nimport { TooltipProvider } from \"./components/basic\";\n\nexport interface AtlasProviderProps {\n children: React.ReactNode;\n /** How long toasts stay on screen in ms. Default: 5000 */\n toastDuration?: number;\n /** Swipe direction to dismiss toasts. Default: \"right\" */\n toastSwipeDirection?: \"up\" | \"down\" | \"left\" | \"right\";\n /** Delay before tooltips open in ms. Default: 300 */\n tooltipDelay?: number;\n}\n\nexport function AtlasProvider({\n children,\n toastDuration = 5000,\n toastSwipeDirection = \"right\",\n tooltipDelay = 300,\n}: AtlasProviderProps) {\n return (\n <ToastProvider duration={toastDuration} swipeDirection={toastSwipeDirection}>\n <TooltipProvider delayDuration={tooltipDelay}>\n {children}\n <ToastViewport />\n </TooltipProvider>\n </ToastProvider>\n );\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\nexport {\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};\n","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 AtlasUI\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","// ─── 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"],"mappings":"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","names":["React","React","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime"]}