@etherealui/react 0.0.0-stage → 0.0.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -2
  3. package/dist/index.d.mts +583 -0
  4. package/dist/index.d.ts +583 -0
  5. package/dist/index.js +5189 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +5189 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/package.json +83 -3
  10. package/src/blocks/app-shell.tsx +441 -0
  11. package/src/blocks/billing-card.tsx +2 -0
  12. package/src/blocks/data-table.tsx +479 -0
  13. package/src/blocks/filter-bar.tsx +134 -0
  14. package/src/blocks/header-navbar.tsx +7 -0
  15. package/src/blocks/metric-grid.tsx +5 -0
  16. package/src/blocks/profile-form.tsx +2 -0
  17. package/src/blocks/security-settings.tsx +2 -0
  18. package/src/blocks/settings-blocks.tsx +406 -0
  19. package/src/blocks/sidebar.tsx +6 -0
  20. package/src/blocks/stat-card.tsx +7 -0
  21. package/src/blocks/stat-cards.tsx +212 -0
  22. package/src/blocks/team-members.tsx +5 -0
  23. package/src/index.ts +114 -0
  24. package/src/primitives/accordion.tsx +61 -0
  25. package/src/primitives/announcement.tsx +33 -0
  26. package/src/primitives/avatar.tsx +156 -0
  27. package/src/primitives/badge.tsx +108 -0
  28. package/src/primitives/breadcrumb.tsx +45 -0
  29. package/src/primitives/button-group.tsx +79 -0
  30. package/src/primitives/button.tsx +165 -0
  31. package/src/primitives/carousel.tsx +84 -0
  32. package/src/primitives/chart.tsx +831 -0
  33. package/src/primitives/checkbox.tsx +26 -0
  34. package/src/primitives/chip.tsx +37 -0
  35. package/src/primitives/close-button.tsx +29 -0
  36. package/src/primitives/color-picker.tsx +62 -0
  37. package/src/primitives/combobox.tsx +123 -0
  38. package/src/primitives/command-palette.tsx +216 -0
  39. package/src/primitives/context-menu.tsx +84 -0
  40. package/src/primitives/date-calendar.tsx +76 -0
  41. package/src/primitives/date-picker.tsx +400 -0
  42. package/src/primitives/dialog.tsx +279 -0
  43. package/src/primitives/divider.tsx +31 -0
  44. package/src/primitives/drawer.tsx +95 -0
  45. package/src/primitives/dropdown-menu.tsx +164 -0
  46. package/src/primitives/file-upload.tsx +123 -0
  47. package/src/primitives/icon-button.tsx +23 -0
  48. package/src/primitives/input.tsx +124 -0
  49. package/src/primitives/modal.tsx +26 -0
  50. package/src/primitives/pagination.tsx +58 -0
  51. package/src/primitives/popover.tsx +28 -0
  52. package/src/primitives/progress.tsx +145 -0
  53. package/src/primitives/radio-group.tsx +63 -0
  54. package/src/primitives/select.tsx +207 -0
  55. package/src/primitives/skeleton.tsx +61 -0
  56. package/src/primitives/slider.tsx +44 -0
  57. package/src/primitives/switch.tsx +146 -0
  58. package/src/primitives/table.tsx +47 -0
  59. package/src/primitives/tabs.tsx +86 -0
  60. package/src/primitives/textarea.tsx +40 -0
  61. package/src/primitives/toast.tsx +71 -0
  62. package/src/primitives/tooltip.tsx +58 -0
  63. package/src/styles/globals.css +49 -0
  64. package/src/templates/control-tower.tsx +41 -0
  65. package/src/templates/executive-analytics.tsx +272 -0
  66. package/src/templates/workspace-settings.tsx +179 -0
  67. package/src/utils/cn.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/primitives/accordion.tsx","../src/primitives/announcement.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/breadcrumb.tsx","../src/primitives/button.tsx","../src/primitives/button-group.tsx","../src/primitives/carousel.tsx","../src/primitives/checkbox.tsx","../src/primitives/chip.tsx","../src/primitives/close-button.tsx","../src/primitives/color-picker.tsx","../src/primitives/combobox.tsx","../src/primitives/command-palette.tsx","../src/primitives/context-menu.tsx","../src/primitives/date-calendar.tsx","../src/primitives/date-picker.tsx","../src/primitives/progress.tsx","../src/primitives/dialog.tsx","../src/primitives/divider.tsx","../src/primitives/drawer.tsx","../src/primitives/dropdown-menu.tsx","../src/primitives/file-upload.tsx","../src/primitives/icon-button.tsx","../src/primitives/input.tsx","../src/primitives/pagination.tsx","../src/primitives/popover.tsx","../src/primitives/radio-group.tsx","../src/primitives/select.tsx","../src/primitives/skeleton.tsx","../src/primitives/slider.tsx","../src/primitives/switch.tsx","../src/primitives/table.tsx","../src/primitives/tabs.tsx","../src/primitives/textarea.tsx","../src/primitives/toast.tsx","../src/primitives/tooltip.tsx","../src/primitives/chart.tsx","../src/blocks/app-shell.tsx","../src/blocks/stat-cards.tsx","../src/blocks/filter-bar.tsx","../src/blocks/data-table.tsx","../src/blocks/settings-blocks.tsx","../src/templates/executive-analytics.tsx","../src/templates/control-tower.tsx","../src/templates/workspace-settings.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n","import * as React from \"react\"\nimport { ChevronDown } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface AccordionItemData {\n id: string\n title: string\n content: string\n}\n\nexport interface AccordionProps {\n items: AccordionItemData[]\n defaultOpenId?: string\n className?: string\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({\n items,\n defaultOpenId,\n className,\n}) => {\n const [openId, setOpenId] = React.useState<string | null>(\n defaultOpenId ?? items[0]?.id ?? null\n )\n return (\n <div\n className={cn(\n \"w-full divide-y divide-zinc-200 rounded-xl border border-zinc-200 bg-white dark:divide-zinc-800 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n {items.map((item) => {\n const isOpen = openId === item.id\n return (\n <div key={item.id}>\n <button\n type=\"button\"\n onClick={() => setOpenId(isOpen ? null : item.id)}\n className=\"flex w-full items-center justify-between px-4 py-3.5 text-left text-xs font-medium text-zinc-900 hover:bg-zinc-50 dark:text-zinc-100 dark:hover:bg-zinc-800/50 cursor-pointer\"\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 text-zinc-400 transition-transform\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n {isOpen && (\n <div className=\"px-4 pb-3.5 text-xs text-zinc-500 dark:text-zinc-400 leading-relaxed\">\n {item.content}\n </div>\n )}\n </div>\n )\n })}\n </div>\n )\n}\nAccordion.displayName = \"Accordion\"\n\n","import * as React from \"react\"\nimport { ArrowRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface AnnouncementProps {\n tag?: string\n title: string\n href?: string\n className?: string\n}\n\nexport const Announcement: React.FC<AnnouncementProps> = ({\n tag = \"New\",\n title,\n href = \"#\",\n className,\n}) => (\n <a\n href={href}\n className={cn(\n \"inline-flex items-center gap-2 rounded-full border border-zinc-200 bg-white px-3 py-1 text-xs text-zinc-700 shadow-2xs transition-colors hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800\",\n className\n )}\n >\n <span className=\"rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\">\n {tag}\n </span>\n <span className=\"font-medium\">{title}</span>\n <ArrowRight className=\"h-3 w-3 text-zinc-400\" />\n </a>\n)\nAnnouncement.displayName = \"Announcement\"\n\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../utils/cn\"\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full font-medium select-none transition-colors\",\n {\n variants: {\n size: {\n xs: \"h-5 w-5 text-[10px]\",\n sm: \"h-6 w-6 text-[11px]\",\n default: \"h-8 w-8 text-xs\",\n lg: \"h-9 w-9 text-sm\",\n xl: \"h-11 w-11 text-sm\",\n },\n tint: {\n neutral:\n \"bg-zinc-200/80 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-200\",\n blue:\n \"bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\",\n emerald:\n \"bg-emerald-100 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-300\",\n amber:\n \"bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\",\n },\n ring: {\n none: \"\",\n subtle: \"ring-1 ring-zinc-200 dark:ring-zinc-800\",\n glow: \"ring-2 ring-blue-500/40\",\n emerald: \"ring-2 ring-emerald-500/40\",\n },\n },\n defaultVariants: {\n size: \"default\",\n tint: \"neutral\",\n ring: \"none\",\n },\n }\n)\n\nexport type AvatarStatusType = \"online\" | \"away\" | \"busy\" | \"offline\"\n\nconst statusColorMap: Record<AvatarStatusType, string> = {\n online: \"bg-emerald-500\",\n away: \"bg-amber-500\",\n busy: \"bg-rose-500\",\n offline: \"bg-zinc-400 dark:bg-zinc-600\",\n}\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n src?: string\n alt?: string\n fallback?: string\n status?: AvatarStatusType\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size, tint, ring, src, alt, fallback, status, children, ...props }, ref) => {\n const [imgError, setImgError] = React.useState(false)\n\n const initials = React.useMemo(() => {\n if (fallback) return fallback.slice(0, 2).toUpperCase()\n if (alt) {\n return alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .slice(0, 2)\n .toUpperCase()\n }\n return \"B\"\n }, [fallback, alt])\n\n return (\n <div className=\"relative inline-flex shrink-0\" ref={ref} {...props}>\n <div className={cn(avatarVariants({ size, tint, ring, className }))}>\n {src && !imgError ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n onError={() => setImgError(true)}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n children || <span className=\"leading-none\">{initials}</span>\n )}\n </div>\n {status && (\n <span\n aria-label={`Status: ${status}`}\n className={cn(\n \"absolute bottom-0 right-0 block rounded-full ring-2 ring-white dark:ring-zinc-950\",\n size === \"xs\" || size === \"sm\" ? \"h-1.5 w-1.5\" : \"h-2.5 w-2.5\",\n statusColorMap[status]\n )}\n />\n )}\n </div>\n )\n }\n)\nAvatar.displayName = \"Avatar\"\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n items: Array<{\n src?: string\n alt: string\n fallback?: string\n tint?: \"neutral\" | \"blue\" | \"emerald\" | \"amber\"\n status?: AvatarStatusType\n }>\n max?: number\n size?: \"xs\" | \"sm\" | \"default\" | \"lg\"\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, items, max = 4, size = \"default\", ...props }, ref) => {\n const visible = items.slice(0, max)\n const remaining = items.length - visible.length\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center -space-x-2\", className)}\n {...props}\n >\n {visible.map((item, idx) => (\n <Avatar\n key={`${item.alt}-${idx}`}\n src={item.src}\n alt={item.alt}\n fallback={item.fallback}\n tint={item.tint || (idx % 2 === 1 ? \"blue\" : \"neutral\")}\n size={size}\n className=\"ring-2 ring-white dark:ring-zinc-950\"\n />\n ))}\n {remaining > 0 && (\n <div\n className={cn(\n avatarVariants({ size, tint: \"neutral\" }),\n \"ring-2 ring-white dark:ring-zinc-950 text-[11px] font-medium z-0\"\n )}\n >\n +{remaining}\n </div>\n )}\n </div>\n )\n }\n)\nAvatarGroup.displayName = \"AvatarGroup\"\n\nexport { Avatar, AvatarGroup, avatarVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-xs font-medium transition-colors select-none\",\n {\n variants: {\n variant: {\n default:\n \"bg-zinc-100 text-zinc-700 border border-zinc-200/80 dark:bg-zinc-800 dark:text-zinc-200 dark:border-zinc-700/80\",\n blue:\n \"bg-blue-50 text-blue-700 border border-blue-200/80 dark:bg-blue-500/15 dark:text-blue-300 dark:border-blue-500/30\",\n glow:\n \"bg-blue-50 text-blue-700 border border-blue-200/80 dark:bg-blue-500/15 dark:text-blue-300 dark:border-blue-500/30\",\n emerald:\n \"bg-emerald-50 text-emerald-700 border border-emerald-200/80 dark:bg-emerald-500/15 dark:text-emerald-300 dark:border-emerald-500/30\",\n amber:\n \"bg-amber-50 text-amber-700 border border-amber-200/80 dark:bg-amber-500/15 dark:text-amber-300 dark:border-amber-500/30\",\n rose:\n \"bg-rose-50 text-rose-700 border border-rose-200/80 dark:bg-rose-500/15 dark:text-rose-300 dark:border-rose-500/30\",\n outline:\n \"bg-transparent text-zinc-600 border border-zinc-200 dark:text-zinc-400 dark:border-zinc-800\",\n mono:\n \"bg-zinc-100 text-zinc-700 border border-zinc-200 dark:bg-zinc-900 dark:text-zinc-300 dark:border-zinc-800 font-mono text-[11px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst dotColorMap: Record<string, string> = {\n default: \"bg-zinc-400\",\n blue: \"bg-blue-500\",\n glow: \"bg-blue-500\",\n emerald: \"bg-emerald-500\",\n amber: \"bg-amber-500\",\n rose: \"bg-rose-500\",\n outline: \"bg-zinc-400\",\n mono: \"bg-blue-500\",\n}\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n dot?: boolean\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = \"default\", dot = false, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant, className }))}\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"h-1.5 w-1.5 rounded-full shrink-0\",\n dotColorMap[variant || \"default\"]\n )}\n />\n )}\n {children}\n </span>\n )\n }\n)\nBadge.displayName = \"Badge\"\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n onRemove?: () => void\n active?: boolean\n}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, children, onRemove, active = false, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors\",\n active\n ? \"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-500/30 dark:bg-blue-500/15 dark:text-blue-300\"\n : \"border-zinc-200 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n className\n )}\n {...props}\n >\n {children}\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"rounded-full p-0.5 text-zinc-400 hover:bg-zinc-200/60 hover:text-zinc-700 dark:hover:bg-zinc-700 dark:hover:text-zinc-200 cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n )\n)\nChip.displayName = \"Chip\"\n\nexport { Badge, Chip, badgeVariants }\n","import * as React from \"react\"\nimport { ChevronRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n}\n\nexport interface BreadcrumbProps {\n items: BreadcrumbItem[]\n className?: string\n}\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({ items, className }) => (\n <nav\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center gap-1.5 text-xs\", className)}\n >\n {items.map((item, idx) => {\n const isLast = idx === items.length - 1\n return (\n <React.Fragment key={item.label}>\n {idx > 0 && (\n <ChevronRight className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />\n )}\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100 transition-colors\"\n >\n {item.label}\n </a>\n ) : (\n <span className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {item.label}\n </span>\n )}\n </React.Fragment>\n )\n })}\n </nav>\n)\nBreadcrumb.displayName = \"Breadcrumb\"\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2, X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30 disabled:pointer-events-none disabled:opacity-50 cursor-pointer select-none\",\n {\n variants: {\n variant: {\n default:\n \"bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-zinc-200 shadow-2xs\",\n primary:\n \"bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-500 shadow-2xs\",\n glow:\n \"bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-500 shadow-2xs\",\n secondary:\n \"bg-zinc-100 text-zinc-900 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-100 dark:hover:bg-zinc-700\",\n outline:\n \"border border-zinc-200 bg-white text-zinc-700 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800\",\n ghost:\n \"text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100\",\n destructive:\n \"bg-rose-600 text-white hover:bg-rose-700 dark:bg-rose-600 dark:hover:bg-rose-500\",\n },\n size: {\n default: \"h-9 px-3.5 py-2 text-xs\",\n sm: \"h-8 rounded-md px-2.5 text-xs\",\n lg: \"h-10 rounded-lg px-5 text-sm\",\n icon: \"h-8 w-8\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, loading = false, children, disabled, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={disabled || loading}\n {...props}\n >\n {loading && <Loader2 className=\"h-3.5 w-3.5 animate-spin shrink-0\" />}\n {children}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport interface CloseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: \"sm\" | \"default\"\n}\n\nconst CloseButton = React.forwardRef<HTMLButtonElement, CloseButtonProps>(\n ({ className, size = \"default\", ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Close\"\n className={cn(\n \"inline-flex items-center justify-center rounded-lg text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\",\n size === \"sm\" ? \"h-6 w-6\" : \"h-8 w-8\",\n className\n )}\n {...props}\n >\n <X className={size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\"} />\n </button>\n )\n)\nCloseButton.displayName = \"CloseButton\"\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n attached?: boolean\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ className, attached = true, ...props }, ref) => (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n \"inline-flex items-center\",\n attached\n ? \"rounded-lg border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900 p-0.5 [&>button]:border-0 [&>button]:rounded-md [&>button]:shadow-none\"\n : \"gap-2\",\n className\n )}\n {...props}\n />\n )\n)\nButtonGroup.displayName = \"ButtonGroup\"\n\nexport interface ToggleGroupItem {\n value: string\n label: React.ReactNode\n icon?: React.ReactNode\n}\n\nexport interface ToggleGroupProps {\n items: ToggleGroupItem[]\n value: string\n onValueChange: (value: string) => void\n size?: \"sm\" | \"default\"\n className?: string\n}\n\nconst ToggleGroup: React.FC<ToggleGroupProps> = ({\n items,\n value,\n onValueChange,\n size = \"default\",\n className,\n}) => {\n return (\n <div\n role=\"group\"\n className={cn(\n \"inline-flex items-center rounded-lg border border-zinc-200 bg-zinc-100/80 dark:border-zinc-800 dark:bg-zinc-900 p-0.5 gap-0.5\",\n className\n )}\n >\n {items.map((item) => {\n const active = item.value === value\n return (\n <button\n key={item.value}\n type=\"button\"\n onClick={() => onValueChange(item.value)}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md font-medium transition-all cursor-pointer\",\n size === \"sm\" ? \"px-2.5 py-1 text-xs\" : \"px-3 py-1.5 text-xs\",\n active\n ? \"bg-white text-zinc-900 shadow-2xs dark:bg-zinc-800 dark:text-zinc-100\"\n : \"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-200\"\n )}\n >\n {item.icon}\n {item.label}\n </button>\n )\n })}\n </div>\n )\n}\nToggleGroup.displayName = \"ToggleGroup\"\n\nexport { Button, CloseButton, ButtonGroup, ToggleGroup, buttonVariants }\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n attached?: boolean\n}\n\nexport const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ className, attached = true, ...props }, ref) => (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n \"inline-flex items-center\",\n attached\n ? \"rounded-lg border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900 p-0.5 [&>button]:border-0 [&>button]:rounded-md [&>button]:shadow-none\"\n : \"gap-2\",\n className\n )}\n {...props}\n />\n )\n)\nButtonGroup.displayName = \"ButtonGroup\"\n\nexport interface ToggleGroupItem {\n value: string\n label: React.ReactNode\n icon?: React.ReactNode\n}\n\nexport interface ToggleGroupProps {\n items: ToggleGroupItem[]\n value: string\n onValueChange: (value: string) => void\n size?: \"sm\" | \"default\"\n className?: string\n}\n\nexport const ToggleGroup: React.FC<ToggleGroupProps> = ({\n items,\n value,\n onValueChange,\n size = \"default\",\n className,\n}) => {\n return (\n <div\n role=\"group\"\n className={cn(\n \"inline-flex items-center rounded-lg border border-zinc-200 bg-zinc-100/80 dark:border-zinc-800 dark:bg-zinc-900 p-0.5 gap-0.5\",\n className\n )}\n >\n {items.map((item) => {\n const active = item.value === value\n return (\n <button\n key={item.value}\n type=\"button\"\n onClick={() => onValueChange(item.value)}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md font-medium transition-all cursor-pointer\",\n size === \"sm\" ? \"px-2.5 py-1 text-xs\" : \"px-3 py-1.5 text-xs\",\n active\n ? \"bg-white text-zinc-900 shadow-2xs dark:bg-zinc-800 dark:text-zinc-100\"\n : \"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-200\"\n )}\n >\n {item.icon}\n {item.label}\n </button>\n )\n })}\n </div>\n )\n}\nToggleGroup.displayName = \"ToggleGroup\"\n\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface CarouselSlide {\n title: string\n subtitle: string\n metric: string\n}\n\nexport interface CarouselProps {\n slides?: CarouselSlide[]\n className?: string\n}\n\nexport const Carousel: React.FC<CarouselProps> = ({\n slides = [\n {\n title: \"Q4 Revenue Velocity\",\n subtitle: \"Net dollar retention across enterprise accounts\",\n metric: \"128.4%\",\n },\n {\n title: \"Global Checkout Conversion\",\n subtitle: \"30-day rolling average across 14 currencies\",\n metric: \"4.82%\",\n },\n {\n title: \"Customer Support SLA\",\n subtitle: \"Median first response time for priority tickets\",\n metric: \"3m 12s\",\n },\n ],\n className,\n}) => {\n const [idx, setIdx] = React.useState(0)\n const current = slides[idx]\n\n return (\n <div\n className={cn(\n \"w-full max-w-md rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[11px] font-medium text-zinc-400\">\n Slide {idx + 1} of {slides.length}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n setIdx((p) => (p - 1 + slides.length) % slides.length)\n }\n className=\"rounded-lg border border-zinc-200 p-1 text-zinc-500 hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setIdx((p) => (p + 1) % slides.length)}\n className=\"rounded-lg border border-zinc-200 p-1 text-zinc-500 hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <div className=\"mt-4 space-y-1\">\n <div className=\"text-2xl font-semibold text-zinc-900 dark:text-zinc-100\">\n {current.metric}\n </div>\n <div className=\"text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n {current.title}\n </div>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {current.subtitle}\n </p>\n </div>\n </div>\n )\n}\nCarousel.displayName = \"Carousel\"\n\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border border-zinc-300 bg-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=checked]:border-blue-600 data-[state=checked]:text-white dark:border-zinc-700 dark:bg-zinc-900 dark:data-[state=checked]:bg-blue-600 cursor-pointer\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-3 w-3 stroke-[2.5]\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\n","import * as React from \"react\"\nimport { X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n onRemove?: () => void\n active?: boolean\n}\n\nexport const Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, children, onRemove, active = false, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors\",\n active\n ? \"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-500/30 dark:bg-blue-500/15 dark:text-blue-300\"\n : \"border-zinc-200 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n className\n )}\n {...props}\n >\n {children}\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"rounded-full p-0.5 text-zinc-400 hover:bg-zinc-200/60 hover:text-zinc-700 dark:hover:bg-zinc-700 dark:hover:text-zinc-200 cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n )\n)\nChip.displayName = \"Chip\"\n\n","import * as React from \"react\"\nimport { X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface CloseButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: \"sm\" | \"default\"\n}\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(({ className, size = \"default\", ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Close\"\n className={cn(\n \"inline-flex items-center justify-center rounded-lg text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\",\n size === \"sm\" ? \"h-6 w-6\" : \"h-8 w-8\",\n className\n )}\n {...props}\n >\n <X className={size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\"} />\n </button>\n))\nCloseButton.displayName = \"CloseButton\"\n\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ColorPickerProps {\n className?: string\n defaultColor?: string\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n className,\n defaultColor = \"#2563eb\",\n}) => {\n const swatches = [\n \"#2563eb\",\n \"#0ea5e9\",\n \"#10b981\",\n \"#f59e0b\",\n \"#f43f5e\",\n \"#8b5cf6\",\n \"#18181b\",\n ]\n const [color, setColor] = React.useState(defaultColor)\n\n return (\n <div\n className={cn(\n \"inline-flex flex-col gap-3 rounded-2xl border border-zinc-200 bg-white p-4 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"h-6 w-6 rounded-lg border border-black/10 shrink-0\"\n style={{ backgroundColor: color }}\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => setColor(e.target.value)}\n className=\"w-28 rounded-lg border border-zinc-200 bg-zinc-50 px-2.5 py-1 font-mono text-xs text-zinc-800 focus:outline-none dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-200\"\n />\n </div>\n <div className=\"flex items-center gap-1.5\">\n {swatches.map((sw) => (\n <button\n key={sw}\n type=\"button\"\n onClick={() => setColor(sw)}\n style={{ backgroundColor: sw }}\n className={cn(\n \"h-6 w-6 rounded-full transition-transform cursor-pointer\",\n color === sw &&\n \"scale-110 ring-2 ring-offset-2 ring-blue-500 dark:ring-offset-zinc-900\"\n )}\n />\n ))}\n </div>\n </div>\n )\n}\nColorPicker.displayName = \"ColorPicker\"\n\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { Check, Search, ChevronsUpDown } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ComboboxOption {\n value: string\n label: string\n badge?: string\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[]\n value: string\n onValueChange: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n className?: string\n}\n\nexport const Combobox: React.FC<ComboboxProps> = ({\n options,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n className,\n}) => {\n const [open, setOpen] = React.useState(false)\n const [query, setQuery] = React.useState(\"\")\n\n const selected = options.find((o) => o.value === value)\n const filtered = React.useMemo(() => {\n if (!query.trim()) return options\n return options.filter((o) =>\n o.label.toLowerCase().includes(query.toLowerCase())\n )\n }, [options, query])\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-xs text-zinc-900 transition-colors hover:bg-zinc-50 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800/60 cursor-pointer\",\n className\n )}\n >\n <span className={cn(\"truncate\", !selected && \"text-zinc-400\")}>\n {selected ? selected.label : placeholder}\n </span>\n <ChevronsUpDown className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={6}\n className=\"z-50 w-64 rounded-xl border border-zinc-200 bg-white p-1.5 text-zinc-900 shadow-lg focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n <div className=\"flex items-center gap-2 border-b border-zinc-200 px-2.5 py-1.5 dark:border-zinc-800\">\n <Search className=\"h-3.5 w-3.5 text-zinc-400\" />\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full bg-transparent text-xs text-zinc-900 placeholder:text-zinc-400 focus:outline-none dark:text-zinc-100\"\n />\n </div>\n <div className=\"mt-1 max-h-52 overflow-y-auto space-y-0.5\">\n {filtered.length === 0 ? (\n <div className=\"py-4 text-center text-xs text-zinc-400\">\n No matching items found.\n </div>\n ) : (\n filtered.map((opt) => {\n const isSelected = opt.value === value\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() => {\n onValueChange(opt.value)\n setOpen(false)\n setQuery(\"\")\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-1.5 text-xs transition-colors cursor-pointer\",\n isSelected\n ? \"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n <span className=\"flex items-center gap-2\">\n <Check\n className={cn(\n \"h-3.5 w-3.5\",\n isSelected\n ? \"opacity-100 text-blue-600 dark:text-blue-400\"\n : \"opacity-0\"\n )}\n />\n {opt.label}\n </span>\n {opt.badge && (\n <span className=\"rounded bg-zinc-100 px-1.5 py-0.5 font-mono text-[10px] text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400\">\n {opt.badge}\n </span>\n )}\n </button>\n )\n })\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\nCombobox.displayName = \"Combobox\"\n\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Search, CornerDownLeft, FileText, Settings, Users, Terminal, BarChart3 } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface CommandItem {\n id: string\n label: string\n category: string\n shortcut?: string\n icon?: React.ReactNode\n onSelect?: () => void\n}\n\nexport interface CommandPaletteProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n items?: CommandItem[]\n placeholder?: string\n enableGlobalShortcut?: boolean\n}\n\nconst defaultCommandItems: CommandItem[] = [\n {\n id: \"overview\",\n label: \"Go to Analytics Overview\",\n category: \"Navigation\",\n shortcut: \"G A\",\n icon: <BarChart3 className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />,\n },\n {\n id: \"customers\",\n label: \"Search Customer Directory\",\n category: \"Navigation\",\n shortcut: \"G C\",\n icon: <Users className=\"h-4 w-4 text-zinc-500\" />,\n },\n {\n id: \"docs-cli\",\n label: \"Copy CLI Installation Command\",\n category: \"Developer\",\n shortcut: \"⌘ C\",\n icon: <Terminal className=\"h-4 w-4 text-zinc-500\" />,\n },\n {\n id: \"invoices\",\n label: \"Export Monthly Invoice PDF\",\n category: \"Billing\",\n shortcut: \"⌘ E\",\n icon: <FileText className=\"h-4 w-4 text-zinc-500\" />,\n },\n {\n id: \"settings\",\n label: \"Open Workspace Preferences\",\n category: \"Settings\",\n shortcut: \"⌘ ,\",\n icon: <Settings className=\"h-4 w-4 text-zinc-500\" />,\n },\n]\n\nexport const CommandPalette: React.FC<CommandPaletteProps> = ({\n open: controlledOpen,\n onOpenChange,\n items = defaultCommandItems,\n placeholder = \"Type a command or search...\",\n enableGlobalShortcut = true,\n}) => {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const [query, setQuery] = React.useState(\"\")\n const [activeIndex, setActiveIndex] = React.useState(0)\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n const setOpen = onOpenChange || setInternalOpen\n\n React.useEffect(() => {\n if (!enableGlobalShortcut) return\n const onKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault()\n setOpen(!isOpen)\n }\n }\n window.addEventListener(\"keydown\", onKeyDown)\n return () => window.removeEventListener(\"keydown\", onKeyDown)\n }, [enableGlobalShortcut, isOpen, setOpen])\n\n const filtered = React.useMemo(() => {\n if (!query.trim()) return items\n const q = query.toLowerCase()\n return items.filter(\n (i) =>\n i.label.toLowerCase().includes(q) ||\n i.category.toLowerCase().includes(q)\n )\n }, [items, query])\n\n const grouped = React.useMemo(() => {\n const map = new Map<string, CommandItem[]>()\n for (const item of filtered) {\n const list = map.get(item.category) || []\n list.push(item)\n map.set(item.category, list)\n }\n return Array.from(map.entries())\n }, [filtered])\n\n React.useEffect(() => {\n setActiveIndex(0)\n }, [query])\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setActiveIndex((prev) => (filtered.length ? (prev + 1) % filtered.length : 0))\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setActiveIndex((prev) =>\n filtered.length ? (prev - 1 + filtered.length) % filtered.length : 0\n )\n } else if (e.key === \"Enter\" && filtered[activeIndex]) {\n e.preventDefault()\n filtered[activeIndex].onSelect?.()\n setOpen(false)\n }\n }\n\n let flatCursor = -1\n\n return (\n <DialogPrimitive.Root open={isOpen} onOpenChange={setOpen}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-xs\" />\n <DialogPrimitive.Content\n onKeyDown={handleKeyDown}\n className=\"fixed left-1/2 top-[18%] z-50 w-full max-w-xl -translate-x-1/2 overflow-hidden rounded-2xl border border-zinc-200 bg-white text-zinc-900 shadow-2xl focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n <DialogPrimitive.Title className=\"sr-only\">\n Command Palette\n </DialogPrimitive.Title>\n <div className=\"flex items-center gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800\">\n <Search className=\"h-4 w-4 text-zinc-400 shrink-0\" />\n <input\n type=\"text\"\n autoFocus\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={placeholder}\n className=\"w-full bg-transparent text-sm text-zinc-900 placeholder:text-zinc-400 focus:outline-none dark:text-zinc-100\"\n />\n <kbd className=\"rounded border border-zinc-200 bg-zinc-100 px-1.5 py-0.5 font-mono text-[10px] text-zinc-500 dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-400\">\n ESC\n </kbd>\n </div>\n\n <div className=\"max-h-80 overflow-y-auto p-2 space-y-3\">\n {grouped.length === 0 ? (\n <div className=\"py-10 text-center text-xs text-zinc-400\">\n No matching results for &ldquo;{query}&rdquo;\n </div>\n ) : (\n grouped.map(([category, groupItems]) => (\n <div key={category} className=\"space-y-1\">\n <div className=\"px-2.5 py-1 text-[10px] font-semibold uppercase tracking-wider text-zinc-400\">\n {category}\n </div>\n {groupItems.map((item) => {\n flatCursor += 1\n const idx = flatCursor\n const isActive = idx === activeIndex\n return (\n <button\n key={item.id}\n type=\"button\"\n onMouseEnter={() => setActiveIndex(idx)}\n onClick={() => {\n item.onSelect?.()\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-xl px-3 py-2 text-xs transition-colors cursor-pointer\",\n isActive\n ? \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\"\n : \"text-zinc-600 hover:bg-zinc-50 dark:text-zinc-300 dark:hover:bg-zinc-800/50\"\n )}\n >\n <span className=\"flex items-center gap-2.5\">\n {item.icon}\n <span className=\"font-medium\">{item.label}</span>\n </span>\n {item.shortcut && (\n <kbd className=\"rounded border border-zinc-200 bg-white px-1.5 py-0.5 font-mono text-[10px] text-zinc-500 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-400\">\n {item.shortcut}\n </kbd>\n )}\n </button>\n )\n })}\n </div>\n ))\n )}\n </div>\n\n <div className=\"flex items-center justify-between border-t border-zinc-200 bg-zinc-50 px-4 py-2 text-[11px] text-zinc-500 dark:border-zinc-800 dark:bg-zinc-950/50 dark:text-zinc-400\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex items-center gap-1\">\n <CornerDownLeft className=\"h-3 w-3\" /> Select\n </span>\n <span>↑↓ Navigate</span>\n </div>\n <span className=\"font-mono text-[10px]\">Quick Search</span>\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ContextMenuAction {\n label: string\n shortcut?: string\n icon?: React.ReactNode\n destructive?: boolean\n onClick?: () => void\n}\n\nexport interface ContextMenuBoxProps\n extends React.HTMLAttributes<HTMLDivElement> {\n actions: ContextMenuAction[]\n}\n\nexport const ContextMenuBox: React.FC<ContextMenuBoxProps> = ({\n actions,\n children,\n className,\n ...props\n}) => {\n const [coords, setCoords] = React.useState<{ x: number; y: number } | null>(\n null\n )\n\n React.useEffect(() => {\n const close = () => setCoords(null)\n window.addEventListener(\"click\", close)\n return () => window.removeEventListener(\"click\", close)\n }, [])\n\n return (\n <div\n onContextMenu={(e) => {\n e.preventDefault()\n const rect = e.currentTarget.getBoundingClientRect()\n setCoords({\n x: Math.min(e.clientX - rect.left, rect.width - 180),\n y: Math.min(e.clientY - rect.top, rect.height - 140),\n })\n }}\n className={cn(\"relative select-none\", className)}\n {...props}\n >\n {children}\n {coords && (\n <div\n style={{ left: coords.x, top: coords.y }}\n className=\"absolute z-40 min-w-[180px] rounded-xl border border-zinc-200 bg-white p-1 text-zinc-900 shadow-xl dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n {actions.map((act, idx) => (\n <button\n key={idx}\n type=\"button\"\n onClick={() => {\n act.onClick?.()\n setCoords(null)\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-1.5 text-xs transition-colors cursor-pointer\",\n act.destructive\n ? \"text-rose-600 hover:bg-rose-50 dark:text-rose-400 dark:hover:bg-rose-500/15\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800\"\n )}\n >\n <span className=\"flex items-center gap-2\">\n {act.icon}\n {act.label}\n </span>\n {act.shortcut && (\n <span className=\"font-mono text-[10px] text-zinc-400\">\n {act.shortcut}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\nContextMenuBox.displayName = \"ContextMenuBox\"\n\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface DateCalendarProps {\n className?: string\n defaultSelectedDay?: number\n}\n\nexport const DateCalendar: React.FC<DateCalendarProps> = ({\n className,\n defaultSelectedDay = 14,\n}) => {\n const [selectedDay, setSelectedDay] = React.useState(defaultSelectedDay)\n const days = Array.from({ length: 30 }, (_, i) => i + 1)\n\n return (\n <div\n className={cn(\n \"w-64 rounded-2xl border border-zinc-200 bg-white p-4 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"mb-3 flex items-center justify-between\">\n <span className=\"text-xs font-semibold text-zinc-900 dark:text-zinc-100\">\n November 2026\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-7 gap-1 text-center text-[10px] font-medium text-zinc-400 mb-1.5\">\n <span>Su</span>\n <span>Mo</span>\n <span>Tu</span>\n <span>We</span>\n <span>Th</span>\n <span>Fr</span>\n <span>Sa</span>\n </div>\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((d) => {\n const active = d === selectedDay\n return (\n <button\n key={d}\n type=\"button\"\n onClick={() => setSelectedDay(d)}\n className={cn(\n \"flex h-7 w-7 items-center justify-center rounded-lg text-xs transition-colors cursor-pointer\",\n active\n ? \"bg-blue-600 font-semibold text-white\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n {d}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\nDateCalendar.displayName = \"DateCalendar\"\n\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport {\n Calendar as CalendarIcon,\n UploadCloud,\n FileText,\n CheckCircle2,\n Trash2,\n ChevronLeft,\n ChevronRight,\n} from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Progress } from \"./progress\"\n\nexport interface DateRangePreset {\n label: string\n value: string\n rangeText: string\n}\n\nconst defaultPresets: DateRangePreset[] = [\n { label: \"Last 7 days\", value: \"7d\", rangeText: \"Oct 31 – Nov 06, 2026\" },\n { label: \"Last 30 days\", value: \"30d\", rangeText: \"Oct 08 – Nov 06, 2026\" },\n { label: \"Last 90 days\", value: \"90d\", rangeText: \"Aug 09 – Nov 06, 2026\" },\n { label: \"Year to date\", value: \"ytd\", rangeText: \"Jan 01 – Nov 06, 2026\" },\n]\n\nexport interface DateRangePickerProps {\n value?: string\n onValueChange?: (preset: DateRangePreset) => void\n className?: string\n}\n\nexport const DateRangePicker: React.FC<DateRangePickerProps> = ({\n value = \"30d\",\n onValueChange,\n className,\n}) => {\n const [selected, setSelected] = React.useState(value)\n const activePreset =\n defaultPresets.find((p) => p.value === selected) || defaultPresets[1]\n\n return (\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-9 items-center gap-2.5 rounded-lg border border-zinc-200 bg-white px-3 text-xs font-medium text-zinc-700 transition-colors hover:bg-zinc-50 focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800 cursor-pointer\",\n className\n )}\n >\n <CalendarIcon className=\"h-3.5 w-3.5 text-zinc-400\" />\n <span>{activePreset.label}</span>\n <span className=\"hidden sm:inline border-l border-zinc-200 pl-2 text-[11px] text-zinc-400 dark:border-zinc-800\">\n {activePreset.rangeText}\n </span>\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"end\"\n sideOffset={6}\n className=\"z-50 w-72 rounded-xl border border-zinc-200 bg-white p-2 text-zinc-900 shadow-lg focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n <div className=\"px-2 py-1.5 text-[11px] font-medium text-zinc-400\">\n Date range\n </div>\n <div className=\"space-y-0.5\">\n {defaultPresets.map((preset) => {\n const isSelected = preset.value === selected\n return (\n <button\n key={preset.value}\n type=\"button\"\n onClick={() => {\n setSelected(preset.value)\n onValueChange?.(preset)\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-2 text-xs transition-colors cursor-pointer\",\n isSelected\n ? \"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n <span className=\"font-medium\">{preset.label}</span>\n <span className=\"text-[11px] text-zinc-400\">\n {preset.rangeText}\n </span>\n </button>\n )\n })}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n\n// Standalone DateCalendar Primitive\nexport const DateCalendar: React.FC<{ className?: string }> = ({ className }) => {\n const [selectedDay, setSelectedDay] = React.useState(14)\n const days = Array.from({ length: 30 }, (_, i) => i + 1)\n\n return (\n <div\n className={cn(\n \"w-64 rounded-2xl border border-zinc-200 bg-white p-4 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"mb-3 flex items-center justify-between\">\n <span className=\"text-xs font-semibold text-zinc-900 dark:text-zinc-100\">\n November 2026\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-7 gap-1 text-center text-[10px] font-medium text-zinc-400 mb-1.5\">\n <span>Su</span>\n <span>Mo</span>\n <span>Tu</span>\n <span>We</span>\n <span>Th</span>\n <span>Fr</span>\n <span>Sa</span>\n </div>\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((d) => {\n const active = d === selectedDay\n return (\n <button\n key={d}\n type=\"button\"\n onClick={() => setSelectedDay(d)}\n className={cn(\n \"flex h-7 w-7 items-center justify-center rounded-lg text-xs transition-colors cursor-pointer\",\n active\n ? \"bg-blue-600 font-semibold text-white\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n {d}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\n\n// ColorPicker Primitive\nexport const ColorPicker: React.FC<{ className?: string }> = ({ className }) => {\n const swatches = [\n \"#2563eb\",\n \"#0ea5e9\",\n \"#10b981\",\n \"#f59e0b\",\n \"#f43f5e\",\n \"#8b5cf6\",\n \"#18181b\",\n ]\n const [color, setColor] = React.useState(swatches[0])\n\n return (\n <div\n className={cn(\n \"inline-flex flex-col gap-3 rounded-2xl border border-zinc-200 bg-white p-4 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"h-6 w-6 rounded-lg border border-black/10 shrink-0\"\n style={{ backgroundColor: color }}\n />\n <input\n type=\"text\"\n value={color}\n onChange={(e) => setColor(e.target.value)}\n className=\"w-28 rounded-lg border border-zinc-200 bg-zinc-50 px-2.5 py-1 font-mono text-xs text-zinc-800 focus:outline-none dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-200\"\n />\n </div>\n <div className=\"flex items-center gap-1.5\">\n {swatches.map((sw) => (\n <button\n key={sw}\n type=\"button\"\n onClick={() => setColor(sw)}\n style={{ backgroundColor: sw }}\n className={cn(\n \"h-6 w-6 rounded-full transition-transform cursor-pointer\",\n color === sw && \"scale-110 ring-2 ring-offset-2 ring-blue-500 dark:ring-offset-zinc-900\"\n )}\n />\n ))}\n </div>\n </div>\n )\n}\n\n// Carousel Primitive\nexport const Carousel: React.FC<{\n slides?: Array<{ title: string; subtitle: string; metric: string }>\n className?: string\n}> = ({\n slides = [\n {\n title: \"Q4 Revenue Velocity\",\n subtitle: \"Net dollar retention across enterprise accounts\",\n metric: \"128.4%\",\n },\n {\n title: \"Global Checkout Conversion\",\n subtitle: \"30-day rolling average across 14 currencies\",\n metric: \"4.82%\",\n },\n {\n title: \"Customer Support SLA\",\n subtitle: \"Median first response time for priority tickets\",\n metric: \"3m 12s\",\n },\n ],\n className,\n}) => {\n const [idx, setIdx] = React.useState(0)\n const current = slides[idx]\n\n return (\n <div\n className={cn(\n \"w-full max-w-md rounded-2xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[11px] font-medium text-zinc-400\">\n Slide {idx + 1} of {slides.length}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => setIdx((p) => (p - 1 + slides.length) % slides.length)}\n className=\"rounded-lg border border-zinc-200 p-1 text-zinc-500 hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setIdx((p) => (p + 1) % slides.length)}\n className=\"rounded-lg border border-zinc-200 p-1 text-zinc-500 hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <div className=\"mt-4 space-y-1\">\n <div className=\"text-2xl font-semibold text-zinc-900 dark:text-zinc-100\">\n {current.metric}\n </div>\n <div className=\"text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n {current.title}\n </div>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {current.subtitle}\n </p>\n </div>\n </div>\n )\n}\n\nexport interface UploadedFileItem {\n name: string\n size: string\n progress: number\n}\n\nexport interface FileDropzoneProps {\n className?: string\n initialFiles?: UploadedFileItem[]\n}\n\nexport const FileDropzone: React.FC<FileDropzoneProps> = ({\n className,\n initialFiles = [\n { name: \"quarterly-report-2026.csv\", size: \"1.4 MB\", progress: 100 },\n { name: \"customer-invoices.pdf\", size: \"420 KB\", progress: 76 },\n ],\n}) => {\n const [files, setFiles] = React.useState<UploadedFileItem[]>(initialFiles)\n const [isDragging, setIsDragging] = React.useState(false)\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n <div\n onDragOver={(e) => {\n e.preventDefault()\n setIsDragging(true)\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={(e) => {\n e.preventDefault()\n setIsDragging(false)\n const dropped = Array.from(e.dataTransfer.files)\n if (dropped.length > 0) {\n setFiles((prev) => [\n ...prev,\n ...dropped.map((f) => ({\n name: f.name,\n size: `${Math.max(1, Math.round(f.size / 1024))} KB`,\n progress: 100,\n })),\n ])\n }\n }}\n onClick={() => {\n setFiles((prev) => [\n ...prev,\n {\n name: `attachment-${prev.length + 1}.pdf`,\n size: \"310 KB\",\n progress: 100,\n },\n ])\n }}\n className={cn(\n \"flex flex-col items-center justify-center rounded-xl border border-dashed p-6 text-center transition-colors cursor-pointer\",\n isDragging\n ? \"border-blue-500 bg-blue-50/50 dark:bg-blue-500/10\"\n : \"border-zinc-300 bg-zinc-50/50 hover:border-zinc-400 dark:border-zinc-800 dark:bg-zinc-900/40 dark:hover:border-zinc-700\"\n )}\n >\n <div className=\"mb-2.5 flex h-9 w-9 items-center justify-center rounded-full bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-300\">\n <UploadCloud className=\"h-4 w-4\" />\n </div>\n <p className=\"text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n Click to upload or drag and drop\n </p>\n <p className=\"mt-1 text-[11px] text-zinc-400\">\n CSV, PDF, JSON, or PNG up to 25MB\n </p>\n </div>\n\n {files.length > 0 && (\n <div className=\"space-y-2\">\n {files.map((file, idx) => (\n <div\n key={`${file.name}-${idx}`}\n className=\"rounded-xl border border-zinc-200 bg-white p-3 space-y-2 dark:border-zinc-800 dark:bg-zinc-900\"\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <FileText className=\"h-4 w-4 text-blue-600 dark:text-blue-400 shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"truncate text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n {file.name}\n </p>\n <p className=\"text-[11px] text-zinc-400\">{file.size}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {file.progress >= 100 && (\n <CheckCircle2 className=\"h-4 w-4 text-emerald-500\" />\n )}\n <button\n type=\"button\"\n onClick={() =>\n setFiles((prev) => prev.filter((_, i) => i !== idx))\n }\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 hover:text-rose-500 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <Progress\n value={file.progress}\n size=\"sm\"\n variant={file.progress >= 100 ? \"emerald\" : \"blue\"}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n variant?: \"blue\" | \"indigo\" | \"emerald\" | \"amber\" | \"rose\" | \"white\"\n size?: \"sm\" | \"default\" | \"lg\"\n showValue?: boolean\n label?: string\n}\n\nconst barColorMap: Record<NonNullable<ProgressProps[\"variant\"]>, string> = {\n blue: \"bg-blue-600 dark:bg-blue-500\",\n indigo: \"bg-blue-600 dark:bg-blue-500\",\n emerald: \"bg-emerald-600 dark:bg-emerald-500\",\n amber: \"bg-amber-500\",\n rose: \"bg-rose-600 dark:bg-rose-500\",\n white: \"bg-zinc-900 dark:bg-zinc-100\",\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n className,\n value,\n max = 100,\n variant = \"blue\",\n size = \"default\",\n showValue = false,\n label,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div className={cn(\"w-full space-y-1.5\", className)} ref={ref} {...props}>\n {(label || showValue) && (\n <div className=\"flex items-center justify-between text-xs\">\n {label && (\n <span className=\"text-zinc-700 dark:text-zinc-300 font-medium\">\n {label}\n </span>\n )}\n {showValue && (\n <span className=\"font-mono text-zinc-500 dark:text-zinc-400\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(\n \"w-full overflow-hidden rounded-full bg-zinc-200/80 dark:bg-zinc-800\",\n size === \"sm\" && \"h-1.5\",\n size === \"default\" && \"h-2\",\n size === \"lg\" && \"h-3\"\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-300\",\n barColorMap[variant]\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n )\n }\n)\nProgress.displayName = \"Progress\"\n\nexport interface CircularProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n size?: number\n strokeWidth?: number\n variant?: \"blue\" | \"indigo\" | \"emerald\" | \"amber\" | \"rose\"\n}\n\nconst strokeColorMap: Record<NonNullable<CircularProgressProps[\"variant\"]>, string> = {\n blue: \"text-blue-600 dark:text-blue-500\",\n indigo: \"text-blue-600 dark:text-blue-500\",\n emerald: \"text-emerald-600 dark:text-emerald-500\",\n amber: \"text-amber-500\",\n rose: \"text-rose-600 dark:text-rose-500\",\n}\n\nconst CircularProgress: React.FC<CircularProgressProps> = ({\n value,\n size = 48,\n strokeWidth = 4,\n variant = \"blue\",\n className,\n ...props\n}) => {\n const clamped = Math.min(100, Math.max(0, value))\n const radius = (size - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const offset = circumference - (clamped / 100) * circumference\n\n return (\n <div\n className={cn(\"relative inline-flex items-center justify-center\", className)}\n style={{ width: size, height: size }}\n {...props}\n >\n <svg width={size} height={size} className=\"-rotate-90 transform\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"transparent\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n className=\"text-zinc-200 dark:text-zinc-800\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"transparent\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={cn(\"transition-all duration-300\", strokeColorMap[variant])}\n />\n </svg>\n <span className=\"absolute font-mono text-[11px] font-medium text-zinc-800 dark:text-zinc-200\">\n {Math.round(clamped)}%\n </span>\n </div>\n )\n}\nCircularProgress.displayName = \"CircularProgress\"\n\nexport { Progress, CircularProgress }\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X, ChevronDown, ChevronRight, ArrowRight, ChevronLeft } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\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\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 backdrop-blur-xs transition-opacity\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-2xl border border-zinc-200 bg-white p-6 text-zinc-900 shadow-2xl focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-lg p-1.5 text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-700 focus:outline-none dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-left\", className)}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 pt-3 border-t border-zinc-200 dark:border-zinc-800\",\n className\n )}\n {...props}\n />\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\n ref={ref}\n className={cn(\"text-base font-semibold leading-none tracking-tight text-zinc-900 dark:text-zinc-100\", className)}\n {...props}\n />\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\n ref={ref}\n className={cn(\"text-xs text-zinc-500 dark:text-zinc-400 leading-relaxed\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\n// Accordion Primitive\nexport interface AccordionItemData {\n id: string\n title: string\n content: string\n}\n\nexport const Accordion: React.FC<{\n items: AccordionItemData[]\n defaultOpenId?: string\n className?: string\n}> = ({ items, defaultOpenId, className }) => {\n const [openId, setOpenId] = React.useState<string | null>(\n defaultOpenId ?? items[0]?.id ?? null\n )\n return (\n <div\n className={cn(\n \"w-full divide-y divide-zinc-200 rounded-xl border border-zinc-200 bg-white dark:divide-zinc-800 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n {items.map((item) => {\n const isOpen = openId === item.id\n return (\n <div key={item.id}>\n <button\n type=\"button\"\n onClick={() => setOpenId(isOpen ? null : item.id)}\n className=\"flex w-full items-center justify-between px-4 py-3.5 text-left text-xs font-medium text-zinc-900 hover:bg-zinc-50 dark:text-zinc-100 dark:hover:bg-zinc-800/50 cursor-pointer\"\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 text-zinc-400 transition-transform\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n {isOpen && (\n <div className=\"px-4 pb-3.5 text-xs text-zinc-500 dark:text-zinc-400 leading-relaxed\">\n {item.content}\n </div>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Announcement Pill Primitive\nexport const Announcement: React.FC<{\n tag?: string\n title: string\n href?: string\n className?: string\n}> = ({ tag = \"New\", title, href = \"#\", className }) => (\n <a\n href={href}\n className={cn(\n \"inline-flex items-center gap-2 rounded-full border border-zinc-200 bg-white px-3 py-1 text-xs text-zinc-700 shadow-2xs transition-colors hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800\",\n className\n )}\n >\n <span className=\"rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\">\n {tag}\n </span>\n <span className=\"font-medium\">{title}</span>\n <ArrowRight className=\"h-3 w-3 text-zinc-400\" />\n </a>\n)\n\n// Breadcrumb Primitive\nexport const Breadcrumb: React.FC<{\n items: Array<{ label: string; href?: string }>\n className?: string\n}> = ({ items, className }) => (\n <nav aria-label=\"Breadcrumb\" className={cn(\"flex items-center gap-1.5 text-xs\", className)}>\n {items.map((item, idx) => {\n const isLast = idx === items.length - 1\n return (\n <React.Fragment key={item.label}>\n {idx > 0 && <ChevronRight className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />}\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100 transition-colors\"\n >\n {item.label}\n </a>\n ) : (\n <span className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {item.label}\n </span>\n )}\n </React.Fragment>\n )\n })}\n </nav>\n)\n\n// Divider Primitive\nexport const Divider: React.FC<{ label?: string; className?: string }> = ({\n label,\n className,\n}) => {\n if (!label) {\n return <hr className={cn(\"border-t border-zinc-200 dark:border-zinc-800\", className)} />\n }\n return (\n <div className={cn(\"relative flex items-center py-2\", className)}>\n <div className=\"grow border-t border-zinc-200 dark:border-zinc-800\" />\n <span className=\"mx-3 shrink text-[11px] font-medium text-zinc-400 uppercase tracking-wider\">\n {label}\n </span>\n <div className=\"grow border-t border-zinc-200 dark:border-zinc-800\" />\n </div>\n )\n}\n\n// Pagination Primitive\nexport const Pagination: React.FC<{\n totalPages?: number\n initialPage?: number\n className?: string\n}> = ({ totalPages = 5, initialPage = 1, className }) => {\n const [page, setPage] = React.useState(initialPage)\n return (\n <div className={cn(\"inline-flex items-center gap-1\", className)}>\n <button\n type=\"button\"\n disabled={page <= 1}\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n {Array.from({ length: totalPages }).map((_, idx) => {\n const num = idx + 1\n const active = num === page\n return (\n <button\n key={num}\n type=\"button\"\n onClick={() => setPage(num)}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-lg text-xs font-medium transition-colors cursor-pointer\",\n active\n ? \"bg-blue-600 text-white\"\n : \"border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n {num}\n </button>\n )\n })}\n <button\n type=\"button\"\n disabled={page >= totalPages}\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )\n}\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface DividerProps {\n label?: string\n className?: string\n}\n\nexport const Divider: React.FC<DividerProps> = ({ label, className }) => {\n if (!label) {\n return (\n <hr\n className={cn(\n \"border-t border-zinc-200 dark:border-zinc-800\",\n className\n )}\n />\n )\n }\n return (\n <div className={cn(\"relative flex items-center py-2\", className)}>\n <div className=\"grow border-t border-zinc-200 dark:border-zinc-800\" />\n <span className=\"mx-3 shrink text-[11px] font-medium text-zinc-400 uppercase tracking-wider\">\n {label}\n </span>\n <div className=\"grow border-t border-zinc-200 dark:border-zinc-800\" />\n </div>\n )\n}\nDivider.displayName = \"Divider\"\n\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nconst Drawer = DialogPrimitive.Root\nconst DrawerTrigger = DialogPrimitive.Trigger\nconst DrawerClose = DialogPrimitive.Close\n\nexport interface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n side?: \"right\" | \"left\"\n}\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-xs transition-opacity\" />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-y-0 z-50 flex h-full w-full max-w-md flex-col border-zinc-200 bg-white p-6 text-zinc-900 shadow-2xl focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n side === \"right\" ? \"right-0 border-l\" : \"left-0 border-r\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-lg p-1.5 text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-700 focus:outline-none dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close drawer</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-1.5 border-b border-zinc-200 pb-4 dark:border-zinc-800\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-base font-semibold text-zinc-900 dark:text-zinc-100\", className)}\n {...props}\n />\n))\nDrawerTitle.displayName = \"DrawerTitle\"\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-xs text-zinc-500 dark:text-zinc-400\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DialogPrimitive.Description.displayName\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex items-center justify-end gap-2 border-t border-zinc-200 pt-4 dark:border-zinc-800\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nexport {\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerDescription,\n DrawerFooter,\n}\n","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { cn } from \"../utils/cn\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 6, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[11rem] overflow-hidden rounded-xl border border-zinc-200 bg-white p-1 text-zinc-900 shadow-lg focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\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 shortcut?: string\n destructive?: boolean\n }\n>(({ className, shortcut, destructive, children, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center justify-between gap-3 rounded-lg px-2.5 py-1.5 text-xs outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n destructive\n ? \"text-rose-600 focus:bg-rose-50 dark:text-rose-400 dark:focus:bg-rose-500/15\"\n : \"text-zinc-700 focus:bg-zinc-100 focus:text-zinc-900 dark:text-zinc-200 dark:focus:bg-zinc-800 dark:focus:text-white\",\n className\n )}\n {...props}\n >\n <span className=\"flex items-center gap-2\">{children}</span>\n {shortcut && (\n <span className=\"font-mono text-[10px] text-zinc-400\">{shortcut}</span>\n )}\n </DropdownMenuPrimitive.Item>\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-zinc-200 dark:bg-zinc-800\", 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>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\"px-2.5 py-1.5 text-[11px] font-semibold text-zinc-400\", className)}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nexport interface ContextMenuAction {\n label: string\n shortcut?: string\n icon?: React.ReactNode\n destructive?: boolean\n onClick?: () => void\n}\n\nexport interface ContextMenuBoxProps extends React.HTMLAttributes<HTMLDivElement> {\n actions: ContextMenuAction[]\n}\n\nconst ContextMenuBox: React.FC<ContextMenuBoxProps> = ({\n actions,\n children,\n className,\n ...props\n}) => {\n const [coords, setCoords] = React.useState<{ x: number; y: number } | null>(null)\n\n React.useEffect(() => {\n const close = () => setCoords(null)\n window.addEventListener(\"click\", close)\n return () => window.removeEventListener(\"click\", close)\n }, [])\n\n return (\n <div\n onContextMenu={(e) => {\n e.preventDefault()\n const rect = e.currentTarget.getBoundingClientRect()\n setCoords({\n x: Math.min(e.clientX - rect.left, rect.width - 180),\n y: Math.min(e.clientY - rect.top, rect.height - 140),\n })\n }}\n className={cn(\"relative select-none\", className)}\n {...props}\n >\n {children}\n {coords && (\n <div\n style={{ left: coords.x, top: coords.y }}\n className=\"absolute z-40 min-w-[180px] rounded-xl border border-zinc-200 bg-white p-1 text-zinc-900 shadow-xl dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n {actions.map((act, idx) => (\n <button\n key={idx}\n type=\"button\"\n onClick={() => {\n act.onClick?.()\n setCoords(null)\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-1.5 text-xs transition-colors cursor-pointer\",\n act.destructive\n ? \"text-rose-600 hover:bg-rose-50 dark:text-rose-400 dark:hover:bg-rose-500/15\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800\"\n )}\n >\n <span className=\"flex items-center gap-2\">\n {act.icon}\n {act.label}\n </span>\n {act.shortcut && (\n <span className=\"font-mono text-[10px] text-zinc-400\">\n {act.shortcut}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\nContextMenuBox.displayName = \"ContextMenuBox\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuGroup,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n ContextMenuBox,\n}\n","import * as React from \"react\"\nimport { UploadCloud, FileText, CheckCircle2, Trash2 } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Progress } from \"./progress\"\n\nexport interface UploadedFileItem {\n name: string\n size: string\n progress: number\n}\n\nexport interface FileDropzoneProps {\n className?: string\n initialFiles?: UploadedFileItem[]\n}\n\nexport const FileDropzone: React.FC<FileDropzoneProps> = ({\n className,\n initialFiles = [\n { name: \"quarterly-report-2026.csv\", size: \"1.4 MB\", progress: 100 },\n { name: \"customer-invoices.pdf\", size: \"420 KB\", progress: 76 },\n ],\n}) => {\n const [files, setFiles] = React.useState<UploadedFileItem[]>(initialFiles)\n const [isDragging, setIsDragging] = React.useState(false)\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n <div\n onDragOver={(e) => {\n e.preventDefault()\n setIsDragging(true)\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={(e) => {\n e.preventDefault()\n setIsDragging(false)\n const dropped = Array.from(e.dataTransfer.files)\n if (dropped.length > 0) {\n setFiles((prev) => [\n ...prev,\n ...dropped.map((f) => ({\n name: f.name,\n size: `${Math.max(1, Math.round(f.size / 1024))} KB`,\n progress: 100,\n })),\n ])\n }\n }}\n onClick={() => {\n setFiles((prev) => [\n ...prev,\n {\n name: `attachment-${prev.length + 1}.pdf`,\n size: \"310 KB\",\n progress: 100,\n },\n ])\n }}\n className={cn(\n \"flex flex-col items-center justify-center rounded-xl border border-dashed p-6 text-center transition-colors cursor-pointer\",\n isDragging\n ? \"border-blue-500 bg-blue-50/50 dark:bg-blue-500/10\"\n : \"border-zinc-300 bg-zinc-50/50 hover:border-zinc-400 dark:border-zinc-800 dark:bg-zinc-900/40 dark:hover:border-zinc-700\"\n )}\n >\n <div className=\"mb-2.5 flex h-9 w-9 items-center justify-center rounded-full bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-300\">\n <UploadCloud className=\"h-4 w-4\" />\n </div>\n <p className=\"text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n Click to upload or drag and drop\n </p>\n <p className=\"mt-1 text-[11px] text-zinc-400\">\n CSV, PDF, JSON, or PNG up to 25MB\n </p>\n </div>\n\n {files.length > 0 && (\n <div className=\"space-y-2\">\n {files.map((file, idx) => (\n <div\n key={`${file.name}-${idx}`}\n className=\"rounded-xl border border-zinc-200 bg-white p-3 space-y-2 dark:border-zinc-800 dark:bg-zinc-900\"\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <FileText className=\"h-4 w-4 text-blue-600 dark:text-blue-400 shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"truncate text-xs font-medium text-zinc-800 dark:text-zinc-200\">\n {file.name}\n </p>\n <p className=\"text-[11px] text-zinc-400\">{file.size}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {file.progress >= 100 && (\n <CheckCircle2 className=\"h-4 w-4 text-emerald-500\" />\n )}\n <button\n type=\"button\"\n onClick={() =>\n setFiles((prev) => prev.filter((_, i) => i !== idx))\n }\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 hover:text-rose-500 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n <Progress\n value={file.progress}\n size=\"sm\"\n variant={file.progress >= 100 ? \"emerald\" : \"blue\"}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\nFileDropzone.displayName = \"FileDropzone\"\n\n","import * as React from \"react\"\nimport { Button, type ButtonProps } from \"./button\"\nimport { cn } from \"../utils/cn\"\n\nexport interface IconButtonProps extends Omit<ButtonProps, \"size\"> {\n label: string\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ label, className, children, ...props }, ref) => (\n <Button\n ref={ref}\n size=\"icon\"\n aria-label={label}\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </Button>\n )\n)\nIconButton.displayName = \"IconButton\"\n\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n prefixText?: string\n suffixText?: string\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type = \"text\", leftIcon, rightIcon, prefixText, suffixText, ...props }, ref) => {\n if (leftIcon || rightIcon || prefixText || suffixText) {\n return (\n <div\n className={cn(\n \"flex h-9 w-full items-center rounded-lg border border-zinc-200 bg-white text-sm text-zinc-900 transition-colors focus-within:border-blue-500 focus-within:ring-2 focus-within:ring-blue-500/20 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n className\n )}\n >\n {prefixText && (\n <span className=\"flex h-full items-center rounded-l-lg border-r border-zinc-200 bg-zinc-50 px-3 text-xs text-zinc-500 dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-300 select-none\">\n {prefixText}\n </span>\n )}\n {leftIcon && (\n <span className=\"pl-3 text-zinc-400 flex items-center shrink-0\">\n {leftIcon}\n </span>\n )}\n <input\n type={type}\n ref={ref}\n className=\"h-full w-full bg-transparent px-3 py-1.5 text-sm text-zinc-900 placeholder:text-zinc-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:text-zinc-100 dark:placeholder:text-zinc-500\"\n {...props}\n />\n {rightIcon && (\n <span className=\"pr-3 text-zinc-400 flex items-center shrink-0\">\n {rightIcon}\n </span>\n )}\n {suffixText && (\n <span className=\"flex h-full items-center border-l border-zinc-200 bg-zinc-50 px-3 text-xs text-zinc-500 dark:border-zinc-800 dark:bg-zinc-800/50 dark:text-zinc-400 select-none\">\n {suffixText}\n </span>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-sm text-zinc-900 placeholder:text-zinc-400 transition-colors focus-visible:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:placeholder:text-zinc-500\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n autoResize?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, autoResize = false, onChange, ...props }, ref) => {\n const innerRef = React.useRef<HTMLTextAreaElement | null>(null)\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (autoResize && innerRef.current) {\n innerRef.current.style.height = \"auto\"\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`\n }\n onChange?.(e)\n }\n\n return (\n <textarea\n ref={(node) => {\n innerRef.current = node\n if (typeof ref === \"function\") ref(node)\n else if (ref) ref.current = node\n }}\n onChange={handleChange}\n className={cn(\n \"flex min-h-[84px] w-full rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 placeholder:text-zinc-400 transition-colors focus-visible:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:placeholder:text-zinc-500\",\n autoResize && \"resize-none overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n optional?: boolean\n}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, optional, children, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"text-xs font-medium text-zinc-700 dark:text-zinc-300 leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 flex items-center justify-between\",\n className\n )}\n {...props}\n >\n <span>{children}</span>\n {optional && <span className=\"text-[11px] font-normal text-zinc-400\">Optional</span>}\n </label>\n )\n)\nLabel.displayName = \"Label\"\n\nexport { Input, Textarea, Label }\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface PaginationProps {\n totalPages?: number\n initialPage?: number\n className?: string\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n totalPages = 5,\n initialPage = 1,\n className,\n}) => {\n const [page, setPage] = React.useState(initialPage)\n return (\n <div className={cn(\"inline-flex items-center gap-1\", className)}>\n <button\n type=\"button\"\n disabled={page <= 1}\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n {Array.from({ length: totalPages }).map((_, idx) => {\n const num = idx + 1\n const active = num === page\n return (\n <button\n key={num}\n type=\"button\"\n onClick={() => setPage(num)}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-lg text-xs font-medium transition-colors cursor-pointer\",\n active\n ? \"bg-blue-600 text-white\"\n : \"border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n {num}\n </button>\n )\n })}\n <button\n type=\"button\"\n disabled={page >= totalPages}\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-600 hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800 cursor-pointer\"\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )\n}\nPagination.displayName = \"Pagination\"\n\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { cn } from \"../utils/cn\"\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 = 6, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl border border-zinc-200 bg-white p-4 text-zinc-900 shadow-lg outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface RadioGroupOption {\n value: string\n label: string\n description?: string\n}\n\nexport interface RadioGroupProps {\n options: RadioGroupOption[]\n value: string\n onValueChange: (val: string) => void\n className?: string\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n options,\n value,\n onValueChange,\n className,\n}) => (\n <div role=\"radiogroup\" className={cn(\"space-y-2\", className)}>\n {options.map((opt) => {\n const checked = opt.value === value\n return (\n <label\n key={opt.value}\n onClick={() => onValueChange(opt.value)}\n className={cn(\n \"flex items-start gap-3 rounded-xl border p-3.5 transition-colors cursor-pointer\",\n checked\n ? \"border-blue-500/50 bg-blue-50/40 dark:border-blue-500/40 dark:bg-blue-500/10\"\n : \"border-zinc-200 bg-white hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900/60 dark:hover:bg-zinc-800/50\"\n )}\n >\n <span\n className={cn(\n \"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border\",\n checked\n ? \"border-blue-600 bg-blue-600 text-white\"\n : \"border-zinc-300 dark:border-zinc-700\"\n )}\n >\n {checked && <span className=\"h-1.5 w-1.5 rounded-full bg-white\" />}\n </span>\n <div className=\"space-y-0.5 text-xs\">\n <div className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {opt.label}\n </div>\n {opt.description && (\n <div className=\"text-zinc-500 dark:text-zinc-400\">\n {opt.description}\n </div>\n )}\n </div>\n </label>\n )\n })}\n </div>\n)\nRadioGroup.displayName = \"RadioGroup\"\n\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { Check, ChevronDown, Search, ChevronsUpDown } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nconst Select = SelectPrimitive.Root\nconst SelectGroup = SelectPrimitive.Group\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-xs text-zinc-900 placeholder:text-zinc-400 transition-colors hover:bg-zinc-50 focus:outline-none focus:ring-2 focus:ring-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800/60 [&>span]:line-clamp-1 cursor-pointer\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />\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 \"relative z-50 max-h-72 min-w-[8rem] overflow-hidden rounded-xl border border-zinc-200 bg-white text-zinc-900 shadow-lg dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = 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-pointer select-none items-center rounded-lg py-1.5 pl-8 pr-2.5 text-xs text-zinc-700 outline-none transition-colors focus:bg-zinc-100 focus:text-zinc-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:text-zinc-200 dark:focus:bg-zinc-800 dark:focus:text-white\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2.5 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-3.5 w-3.5 text-blue-600 dark:text-blue-400\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nexport interface ComboboxOption {\n value: string\n label: string\n badge?: string\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[]\n value: string\n onValueChange: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n className?: string\n}\n\nconst Combobox: React.FC<ComboboxProps> = ({\n options,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n className,\n}) => {\n const [open, setOpen] = React.useState(false)\n const [query, setQuery] = React.useState(\"\")\n\n const selected = options.find((o) => o.value === value)\n const filtered = React.useMemo(() => {\n if (!query.trim()) return options\n return options.filter((o) =>\n o.label.toLowerCase().includes(query.toLowerCase())\n )\n }, [options, query])\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-xs text-zinc-900 transition-colors hover:bg-zinc-50 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800/60 cursor-pointer\",\n className\n )}\n >\n <span className={cn(\"truncate\", !selected && \"text-zinc-400\")}>\n {selected ? selected.label : placeholder}\n </span>\n <ChevronsUpDown className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={6}\n className=\"z-50 w-64 rounded-xl border border-zinc-200 bg-white p-1.5 text-zinc-900 shadow-lg focus:outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\"\n >\n <div className=\"flex items-center gap-2 border-b border-zinc-200 px-2.5 py-1.5 dark:border-zinc-800\">\n <Search className=\"h-3.5 w-3.5 text-zinc-400\" />\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full bg-transparent text-xs text-zinc-900 placeholder:text-zinc-400 focus:outline-none dark:text-zinc-100\"\n />\n </div>\n <div className=\"mt-1 max-h-52 overflow-y-auto space-y-0.5\">\n {filtered.length === 0 ? (\n <div className=\"py-4 text-center text-xs text-zinc-400\">\n No matching items found.\n </div>\n ) : (\n filtered.map((opt) => {\n const isSelected = opt.value === value\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() => {\n onValueChange(opt.value)\n setOpen(false)\n setQuery(\"\")\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-1.5 text-xs transition-colors cursor-pointer\",\n isSelected\n ? \"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\"\n )}\n >\n <span className=\"flex items-center gap-2\">\n <Check\n className={cn(\n \"h-3.5 w-3.5\",\n isSelected ? \"opacity-100 text-blue-600 dark:text-blue-400\" : \"opacity-0\"\n )}\n />\n {opt.label}\n </span>\n {opt.badge && (\n <span className=\"rounded bg-zinc-100 px-1.5 py-0.5 font-mono text-[10px] text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400\">\n {opt.badge}\n </span>\n )}\n </button>\n )\n })\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\nCombobox.displayName = \"Combobox\"\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectItem,\n Combobox,\n}\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"animate-pulse rounded-md bg-zinc-200/80 dark:bg-zinc-800\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardSkeleton({ className }: { className?: string }) {\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-5 space-y-4 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <Skeleton className=\"h-4 w-28\" />\n <Skeleton className=\"h-5 w-14 rounded-full\" />\n </div>\n <Skeleton className=\"h-8 w-36\" />\n <div className=\"space-y-2 pt-2\">\n <Skeleton className=\"h-2.5 w-full\" />\n <Skeleton className=\"h-2.5 w-4/5\" />\n </div>\n </div>\n )\n}\n\nfunction TableRowSkeleton({ rows = 4 }: { rows?: number }) {\n return (\n <div className=\"w-full rounded-xl border border-zinc-200 bg-white divide-y divide-zinc-200 dark:border-zinc-800 dark:bg-zinc-900 dark:divide-zinc-800\">\n {Array.from({ length: rows }).map((_, idx) => (\n <div key={idx} className=\"flex items-center justify-between px-4 py-3 gap-4\">\n <div className=\"flex items-center gap-3\">\n <Skeleton className=\"h-8 w-8 rounded-full\" />\n <div className=\"space-y-1.5\">\n <Skeleton className=\"h-3.5 w-32\" />\n <Skeleton className=\"h-2.5 w-24\" />\n </div>\n </div>\n <Skeleton className=\"h-5 w-16 rounded-md\" />\n <Skeleton className=\"h-3.5 w-20\" />\n <Skeleton className=\"h-7 w-7 rounded-md\" />\n </div>\n ))}\n </div>\n )\n}\n\nexport { Skeleton, CardSkeleton, TableRowSkeleton }\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface SliderProps {\n value: number\n min?: number\n max?: number\n step?: number\n onValueChange?: (val: number) => void\n label?: string\n className?: string\n}\n\nexport const Slider: React.FC<SliderProps> = ({\n value,\n min = 0,\n max = 100,\n step = 1,\n onValueChange,\n label,\n className,\n}) => (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"font-medium text-zinc-700 dark:text-zinc-300\">\n {label}\n </span>\n <span className=\"font-mono text-zinc-500\">{value}%</span>\n </div>\n )}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => onValueChange?.(Number(e.target.value))}\n className=\"h-1.5 w-full cursor-pointer appearance-none rounded-lg bg-zinc-200 accent-blue-600 dark:bg-zinc-800\"\n />\n </div>\n)\nSlider.displayName = \"Slider\"\n\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=unchecked]:bg-zinc-200 dark:data-[state=unchecked]:bg-zinc-800\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 rounded-full bg-white shadow-xs ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0.5\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border border-zinc-300 bg-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-blue-600 data-[state=checked]:border-blue-600 data-[state=checked]:text-white dark:border-zinc-700 dark:bg-zinc-900 dark:data-[state=checked]:bg-blue-600 cursor-pointer\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-3 w-3 stroke-[2.5]\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport interface RadioGroupOption {\n value: string\n label: string\n description?: string\n}\n\nexport interface RadioGroupProps {\n options: RadioGroupOption[]\n value: string\n onValueChange: (val: string) => void\n className?: string\n}\n\nconst RadioGroup: React.FC<RadioGroupProps> = ({\n options,\n value,\n onValueChange,\n className,\n}) => (\n <div role=\"radiogroup\" className={cn(\"space-y-2\", className)}>\n {options.map((opt) => {\n const checked = opt.value === value\n return (\n <label\n key={opt.value}\n onClick={() => onValueChange(opt.value)}\n className={cn(\n \"flex items-start gap-3 rounded-xl border p-3.5 transition-colors cursor-pointer\",\n checked\n ? \"border-blue-500/50 bg-blue-50/40 dark:border-blue-500/40 dark:bg-blue-500/10\"\n : \"border-zinc-200 bg-white hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900/60 dark:hover:bg-zinc-800/50\"\n )}\n >\n <span\n className={cn(\n \"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border\",\n checked\n ? \"border-blue-600 bg-blue-600 text-white\"\n : \"border-zinc-300 dark:border-zinc-700\"\n )}\n >\n {checked && <span className=\"h-1.5 w-1.5 rounded-full bg-white\" />}\n </span>\n <div className=\"space-y-0.5 text-xs\">\n <div className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {opt.label}\n </div>\n {opt.description && (\n <div className=\"text-zinc-500 dark:text-zinc-400\">\n {opt.description}\n </div>\n )}\n </div>\n </label>\n )\n })}\n </div>\n)\n\nexport interface SliderProps {\n value: number\n min?: number\n max?: number\n step?: number\n onValueChange?: (val: number) => void\n label?: string\n className?: string\n}\n\nconst Slider: React.FC<SliderProps> = ({\n value,\n min = 0,\n max = 100,\n step = 1,\n onValueChange,\n label,\n className,\n}) => (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"font-medium text-zinc-700 dark:text-zinc-300\">{label}</span>\n <span className=\"font-mono text-zinc-500\">{value}%</span>\n </div>\n )}\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={(e) => onValueChange?.(Number(e.target.value))}\n className=\"h-1.5 w-full cursor-pointer appearance-none rounded-lg bg-zinc-200 accent-blue-600 dark:bg-zinc-800\"\n />\n </div>\n)\n\nexport { Switch, Checkbox, RadioGroup, Slider }\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport const Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"w-full overflow-x-auto rounded-xl border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\">\n <table\n ref={ref}\n className={cn(\"w-full border-collapse text-left text-xs\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\n \"border-b border-zinc-200 bg-zinc-50/80 text-[11px] font-medium text-zinc-500 dark:border-zinc-800 dark:bg-zinc-950/50 dark:text-zinc-400\",\n className\n )}\n {...props}\n />\n))\nTableHeader.displayName = \"TableHeader\"\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\n \"divide-y divide-zinc-200 dark:divide-zinc-800\",\n className\n )}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../utils/cn\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst tabsListVariants = cva(\"inline-flex items-center text-zinc-500 dark:text-zinc-400\", {\n variants: {\n variant: {\n segmented:\n \"h-9 rounded-lg border border-zinc-200 bg-zinc-100/80 p-1 gap-1 dark:border-zinc-800 dark:bg-zinc-900\",\n underline:\n \"w-full justify-start border-b border-zinc-200 bg-transparent gap-6 px-1 dark:border-zinc-800\",\n pills: \"gap-1.5 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"segmented\",\n },\n})\n\nexport interface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant, className }))}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap text-xs font-medium transition-all focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 cursor-pointer select-none\",\n {\n variants: {\n variant: {\n segmented:\n \"rounded-md px-3 py-1 data-[state=active]:bg-white data-[state=active]:text-zinc-900 data-[state=active]:shadow-2xs hover:text-zinc-900 dark:data-[state=active]:bg-zinc-800 dark:data-[state=active]:text-zinc-100 dark:hover:text-zinc-200\",\n underline:\n \"border-b-2 border-transparent pb-2.5 pt-1 text-zinc-500 data-[state=active]:border-blue-600 data-[state=active]:text-zinc-900 hover:text-zinc-800 dark:text-zinc-400 dark:data-[state=active]:border-blue-500 dark:data-[state=active]:text-zinc-100 dark:hover:text-zinc-200\",\n pills:\n \"rounded-lg px-3 py-1.5 border border-transparent data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200 hover:bg-zinc-100 dark:data-[state=active]:bg-blue-500/15 dark:data-[state=active]:text-blue-300 dark:data-[state=active]:border-blue-500/30 dark:hover:bg-zinc-800\",\n },\n },\n defaultVariants: {\n variant: \"segmented\",\n },\n }\n)\n\nexport interface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, variant, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(tabsTriggerVariants({ variant, className }))}\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(\"mt-3 focus-visible:outline-none\", className)}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n autoResize?: boolean\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, autoResize = false, onChange, ...props }, ref) => {\n const innerRef = React.useRef<HTMLTextAreaElement | null>(null)\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (autoResize && innerRef.current) {\n innerRef.current.style.height = \"auto\"\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`\n }\n onChange?.(e)\n }\n\n return (\n <textarea\n ref={(node) => {\n innerRef.current = node\n if (typeof ref === \"function\") ref(node)\n else if (ref) ref.current = node\n }}\n onChange={handleChange}\n className={cn(\n \"flex min-h-[84px] w-full rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 placeholder:text-zinc-400 transition-colors focus-visible:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100 dark:placeholder:text-zinc-500\",\n autoResize && \"resize-none overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\n","import * as React from \"react\"\nimport { CheckCircle2, AlertTriangle, XCircle, Info, X } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport type ToastVariant = \"success\" | \"error\" | \"warning\" | \"info\"\n\nexport interface ToastItem {\n id: string\n title: string\n description?: string\n variant?: ToastVariant\n}\n\nconst iconMap: Record<ToastVariant, React.ReactNode> = {\n success: <CheckCircle2 className=\"h-4 w-4 text-emerald-600 dark:text-emerald-400 shrink-0\" />,\n error: <XCircle className=\"h-4 w-4 text-rose-600 dark:text-rose-400 shrink-0\" />,\n warning: <AlertTriangle className=\"h-4 w-4 text-amber-600 dark:text-amber-400 shrink-0\" />,\n info: <Info className=\"h-4 w-4 text-blue-600 dark:text-blue-400 shrink-0\" />,\n}\n\nconst borderMap: Record<ToastVariant, string> = {\n success: \"border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\",\n error: \"border-rose-200 bg-rose-50/40 dark:border-rose-500/30 dark:bg-rose-950/20\",\n warning: \"border-amber-200 bg-amber-50/40 dark:border-amber-500/30 dark:bg-amber-950/20\",\n info: \"border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900\",\n}\n\nexport interface ToastCardProps extends Omit<ToastItem, \"id\"> {\n onDismiss?: () => void\n className?: string\n}\n\nexport const ToastCard: React.FC<ToastCardProps> = ({\n title,\n description,\n variant = \"info\",\n onDismiss,\n className,\n}) => {\n return (\n <div\n role=\"status\"\n className={cn(\n \"flex w-full max-w-sm items-start gap-3 rounded-xl border p-3.5 text-zinc-900 shadow-md transition-all dark:text-zinc-100\",\n borderMap[variant],\n className\n )}\n >\n <div className=\"mt-0.5\">{iconMap[variant]}</div>\n <div className=\"flex-1 space-y-1\">\n <p className=\"text-xs font-semibold leading-none text-zinc-900 dark:text-zinc-100\">\n {title}\n </p>\n {description && (\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400 leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"rounded-md p-1 text-zinc-400 hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { cn } from \"../utils/cn\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\nconst Tooltip = TooltipPrimitive.Root\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 6, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-lg border border-zinc-200 bg-zinc-900 px-2.5 py-1.5 text-xs text-white shadow-md dark:border-zinc-800 dark:bg-zinc-100 dark:text-zinc-900\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\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 = 6, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl border border-zinc-200 bg-white p-4 text-zinc-900 shadow-lg outline-none dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-100\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n Popover,\n PopoverTrigger,\n PopoverContent,\n}\n","import * as React from \"react\"\nimport {\n ArrowUpRight,\n TrendingUp,\n Activity,\n PieChart as PieChartIcon,\n Gauge,\n Grid,\n LineChart as LineChartIcon,\n} from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\n\nexport interface ChartDataPoint {\n label: string\n value: number\n secondary?: number\n}\n\nconst DEFAULT_AREA_SERIES: Record<string, ChartDataPoint[]> = {\n \"7d\": [\n { label: \"Mon\", value: 14200, secondary: 11800 },\n { label: \"Tue\", value: 16800, secondary: 13200 },\n { label: \"Wed\", value: 15900, secondary: 14100 },\n { label: \"Thu\", value: 19400, secondary: 15600 },\n { label: \"Fri\", value: 22100, secondary: 17200 },\n { label: \"Sat\", value: 24600, secondary: 18900 },\n { label: \"Sun\", value: 28400, secondary: 21400 },\n ],\n \"30d\": [\n { label: \"Oct 05\", value: 64000, secondary: 52000 },\n { label: \"Oct 10\", value: 72000, secondary: 58000 },\n { label: \"Oct 15\", value: 69500, secondary: 61000 },\n { label: \"Oct 20\", value: 84200, secondary: 67500 },\n { label: \"Oct 25\", value: 96800, secondary: 74200 },\n { label: \"Oct 30\", value: 112400, secondary: 82900 },\n { label: \"Nov 05\", value: 128430, secondary: 94100 },\n ],\n \"90d\": [\n { label: \"Aug\", value: 195000, secondary: 162000 },\n { label: \"Sep\", value: 248000, secondary: 198000 },\n { label: \"Oct\", value: 312000, secondary: 244000 },\n { label: \"Nov\", value: 384500, secondary: 289000 },\n ],\n}\n\nexport interface AreaStatisticChartProps {\n title?: string\n subtitle?: string\n value?: string\n change?: string\n data?: ChartDataPoint[]\n className?: string\n}\n\nexport const AreaStatisticChart: React.FC<AreaStatisticChartProps> = ({\n title = \"Net Revenue & MRR Velocity\",\n subtitle = \"Real-time settled volume vs previous billing cycle\",\n value = \"$128,430\",\n change = \"+18.4%\",\n data,\n className,\n}) => {\n const [range, setRange] = React.useState<\"7d\" | \"30d\" | \"90d\">(\"30d\")\n const [hoverIdx, setHoverIdx] = React.useState<number | null>(null)\n\n const series = data || DEFAULT_AREA_SERIES[range]\n const maxVal = Math.max(...series.map((d) => Math.max(d.value, d.secondary || 0)), 1)\n const width = 540\n const height = 160\n const padX = 16\n const padY = 18\n\n const getCoords = (val: number, idx: number) => {\n const x = padX + (idx / Math.max(series.length - 1, 1)) * (width - padX * 2)\n const y = height - padY - (val / maxVal) * (height - padY * 2)\n return { x, y }\n }\n\n const primaryPoints = series.map((d, i) => getCoords(d.value, i))\n const secondaryPoints = series.map((d, i) =>\n getCoords(d.secondary ?? d.value * 0.75, i)\n )\n\n const linePath = primaryPoints\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x.toFixed(1)},${p.y.toFixed(1)}`)\n .join(\" \")\n\n const secondaryPath = secondaryPoints\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x.toFixed(1)},${p.y.toFixed(1)}`)\n .join(\" \")\n\n const areaPath = `${linePath} L${primaryPoints[primaryPoints.length - 1].x.toFixed(\n 1\n )},${height - padY} L${primaryPoints[0].x.toFixed(1)},${height - padY} Z`\n\n const activePoint = hoverIdx !== null ? series[hoverIdx] : series[series.length - 1]\n\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n <div className=\"flex items-center gap-2\">\n <TrendingUp className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n {title}\n </h3>\n </div>\n <p className=\"mt-0.5 text-xs text-zinc-500 dark:text-zinc-400\">\n {subtitle}\n </p>\n </div>\n\n <div className=\"inline-flex items-center rounded-xl border border-zinc-200 bg-zinc-50 p-0.5 dark:border-zinc-800 dark:bg-zinc-950 self-start\">\n {([\"7d\", \"30d\", \"90d\"] as const).map((r) => (\n <button\n key={r}\n type=\"button\"\n onClick={() => {\n setRange(r)\n setHoverIdx(null)\n }}\n className={cn(\n \"rounded-lg px-2.5 py-1 text-[11px] font-semibold uppercase transition-all cursor-pointer\",\n range === r\n ? \"bg-white text-zinc-900 shadow-2xs dark:bg-zinc-800 dark:text-white\"\n : \"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-200\"\n )}\n >\n {r}\n </button>\n ))}\n </div>\n </div>\n\n {/* Live KPI Readout */}\n <div className=\"mt-4 flex flex-wrap items-baseline justify-between gap-4 border-b border-zinc-100 pb-4 dark:border-zinc-800/80\">\n <div className=\"flex items-baseline gap-2.5\">\n <span className=\"text-2xl font-bold tracking-tight text-zinc-900 dark:text-white\">\n {hoverIdx !== null\n ? `$${activePoint.value.toLocaleString()}`\n : value}\n </span>\n <span className=\"inline-flex items-center gap-0.5 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[11px] font-semibold text-emerald-600 dark:text-emerald-400\">\n <ArrowUpRight className=\"h-3 w-3\" />\n {change}\n </span>\n <span className=\"text-xs text-zinc-400\">\n {hoverIdx !== null ? `on ${activePoint.label}` : \"current period\"}\n </span>\n </div>\n\n <div className=\"flex items-center gap-4 text-[11px] text-zinc-500 dark:text-zinc-400\">\n <span className=\"flex items-center gap-1.5\">\n <span className=\"h-2 w-2 rounded-full bg-blue-600\" />\n Current (${activePoint.value.toLocaleString()})\n </span>\n {activePoint.secondary !== undefined && (\n <span className=\"flex items-center gap-1.5\">\n <span className=\"h-2 w-2 rounded-full bg-zinc-300 dark:bg-zinc-600\" />\n Previous (${activePoint.secondary.toLocaleString()})\n </span>\n )}\n </div>\n </div>\n\n {/* Interactive SVG Area Canvas */}\n <div className=\"mt-4\">\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className=\"h-44 w-full overflow-visible select-none\"\n onMouseLeave={() => setHoverIdx(null)}\n >\n <defs>\n <linearGradient id=\"etherealAreaGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"#2563eb\" stopOpacity=\"0.28\" />\n <stop offset=\"100%\" stopColor=\"#2563eb\" stopOpacity=\"0.0\" />\n </linearGradient>\n </defs>\n\n {[0.2, 0.5, 0.8].map((ratio) => (\n <line\n key={ratio}\n x1={padX}\n x2={width - padX}\n y1={height * ratio}\n y2={height * ratio}\n stroke=\"currentColor\"\n strokeDasharray=\"3 3\"\n className=\"text-zinc-200 dark:text-zinc-800\"\n />\n ))}\n\n <path\n d={secondaryPath}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeDasharray=\"4 4\"\n className=\"text-zinc-300 dark:text-zinc-700\"\n />\n\n <path d={areaPath} fill=\"url(#etherealAreaGrad)\" />\n <path\n d={linePath}\n fill=\"none\"\n stroke=\"#2563eb\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {primaryPoints.map((pt, idx) => {\n const isHovered = hoverIdx === idx\n return (\n <g\n key={series[idx].label}\n className=\"cursor-pointer\"\n onMouseEnter={() => setHoverIdx(idx)}\n >\n {isHovered && (\n <line\n x1={pt.x}\n x2={pt.x}\n y1={padY}\n y2={height - padY}\n stroke=\"#2563eb\"\n strokeWidth=\"1\"\n strokeDasharray=\"2 2\"\n />\n )}\n <circle\n cx={pt.x}\n cy={pt.y}\n r={isHovered ? 5 : 3.5}\n className={cn(\n \"transition-all\",\n isHovered\n ? \"fill-blue-600 stroke-white dark:stroke-zinc-900 stroke-2\"\n : \"fill-white dark:fill-zinc-900 stroke-blue-600 stroke-2\"\n )}\n />\n <rect\n x={pt.x - 24}\n y={0}\n width={48}\n height={height}\n fill=\"transparent\"\n />\n </g>\n )\n })}\n </svg>\n\n <div className=\"mt-2 flex items-center justify-between px-2 text-[11px] font-mono text-zinc-400\">\n {series.map((item, idx) => (\n <span\n key={item.label}\n className={cn(\n hoverIdx === idx && \"font-semibold text-blue-600 dark:text-blue-400\"\n )}\n >\n {item.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport interface BarStatisticChartProps {\n title?: string\n subtitle?: string\n data?: ChartDataPoint[]\n className?: string\n}\n\nconst DEFAULT_BAR_DATA: ChartDataPoint[] = [\n { label: \"Jan\", value: 68, secondary: 52 },\n { label: \"Feb\", value: 74, secondary: 58 },\n { label: \"Mar\", value: 64, secondary: 60 },\n { label: \"Apr\", value: 82, secondary: 66 },\n { label: \"May\", value: 89, secondary: 72 },\n { label: \"Jun\", value: 96, secondary: 78 },\n]\n\nexport const BarStatisticChart: React.FC<BarStatisticChartProps> = ({\n title = \"Monthly Cohort Conversion\",\n subtitle = \"Enterprise vs self-serve onboarding completion (%)\",\n data = DEFAULT_BAR_DATA,\n className,\n}) => {\n const [activeIdx, setActiveIdx] = React.useState<number | null>(null)\n\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100 flex items-center gap-2\">\n <Activity className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n {title}\n </h3>\n <p className=\"mt-0.5 text-xs text-zinc-500 dark:text-zinc-400\">\n {subtitle}\n </p>\n </div>\n <div className=\"flex items-center gap-3 text-[11px] text-zinc-500\">\n <span className=\"flex items-center gap-1.5\">\n <span className=\"h-2.5 w-2.5 rounded-xs bg-blue-600\" />\n Enterprise\n </span>\n <span className=\"flex items-center gap-1.5\">\n <span className=\"h-2.5 w-2.5 rounded-xs bg-zinc-200 dark:bg-zinc-700\" />\n Self-Serve\n </span>\n </div>\n </div>\n\n <div className=\"mt-6 grid grid-cols-6 items-end gap-3 h-44 pt-6 px-2\">\n {data.map((d, idx) => {\n const isHovered = activeIdx === idx\n return (\n <div\n key={d.label}\n onMouseEnter={() => setActiveIdx(idx)}\n onMouseLeave={() => setActiveIdx(null)}\n className=\"group relative flex flex-col items-center gap-2 h-full justify-end cursor-pointer\"\n >\n {isHovered && (\n <div className=\"absolute -top-6 rounded-md bg-zinc-900 px-2 py-0.5 font-mono text-[10px] text-white shadow-sm dark:bg-zinc-100 dark:text-zinc-900\">\n {d.value}%\n </div>\n )}\n <div className=\"w-full flex items-end justify-center gap-1.5 h-full\">\n <div\n style={{ height: `${d.value}%` }}\n className=\"w-full max-w-[18px] rounded-t-md bg-blue-600 transition-all duration-300 group-hover:bg-blue-500\"\n />\n {d.secondary !== undefined && (\n <div\n style={{ height: `${d.secondary}%` }}\n className=\"w-full max-w-[14px] rounded-t-md bg-zinc-200 transition-all duration-300 dark:bg-zinc-700\"\n />\n )}\n </div>\n <span className=\"text-[11px] font-mono text-zinc-500 dark:text-zinc-400\">\n {d.label}\n </span>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport interface LineStatisticChartProps {\n title?: string\n subtitle?: string\n className?: string\n}\n\nconst DEFAULT_LINE_TELEMETRY = [\n { time: \"00:00\", p95: 22, p50: 11 },\n { time: \"04:00\", p95: 19, p50: 10 },\n { time: \"08:00\", p95: 28, p50: 14 },\n { time: \"12:00\", p95: 34, p50: 16 },\n { time: \"16:00\", p95: 25, p50: 12 },\n { time: \"20:00\", p95: 21, p50: 11 },\n { time: \"24:00\", p95: 18, p50: 9 },\n]\n\nexport const LineStatisticChart: React.FC<LineStatisticChartProps> = ({\n title = \"Edge API Response Latency (ms)\",\n subtitle = \"P95 vs P50 global edge worker response time over 24 hours\",\n className,\n}) => {\n const [hoverIdx, setHoverIdx] = React.useState<number | null>(null)\n const width = 520\n const height = 150\n const padX = 18\n const padY = 18\n const maxVal = 45\n\n const toPoint = (val: number, i: number) => ({\n x: padX + (i / (DEFAULT_LINE_TELEMETRY.length - 1)) * (width - padX * 2),\n y: height - padY - (val / maxVal) * (height - padY * 2),\n })\n\n const p95Pts = DEFAULT_LINE_TELEMETRY.map((d, i) => toPoint(d.p95, i))\n const p50Pts = DEFAULT_LINE_TELEMETRY.map((d, i) => toPoint(d.p50, i))\n\n const p95Path = p95Pts\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x.toFixed(1)},${p.y.toFixed(1)}`)\n .join(\" \")\n const p50Path = p50Pts\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x.toFixed(1)},${p.y.toFixed(1)}`)\n .join(\" \")\n\n const current =\n hoverIdx !== null\n ? DEFAULT_LINE_TELEMETRY[hoverIdx]\n : DEFAULT_LINE_TELEMETRY[DEFAULT_LINE_TELEMETRY.length - 1]\n\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100 flex items-center gap-2\">\n <LineChartIcon className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n {title}\n </h3>\n <p className=\"mt-0.5 text-xs text-zinc-500 dark:text-zinc-400\">\n {subtitle}\n </p>\n </div>\n\n <div className=\"flex items-center gap-4 text-xs\">\n <span className=\"flex items-center gap-1.5 font-mono text-zinc-700 dark:text-zinc-200\">\n <span className=\"h-2 w-2 rounded-full bg-blue-600\" />\n P95: <strong>{current.p95}ms</strong>\n </span>\n <span className=\"flex items-center gap-1.5 font-mono text-zinc-700 dark:text-zinc-200\">\n <span className=\"h-2 w-2 rounded-full bg-emerald-500\" />\n P50: <strong>{current.p50}ms</strong>\n </span>\n </div>\n </div>\n\n <div className=\"mt-4\">\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className=\"h-40 w-full overflow-visible select-none\"\n onMouseLeave={() => setHoverIdx(null)}\n >\n {[0.25, 0.5, 0.75].map((r) => (\n <line\n key={r}\n x1={padX}\n x2={width - padX}\n y1={height * r}\n y2={height * r}\n stroke=\"currentColor\"\n strokeDasharray=\"3 3\"\n className=\"text-zinc-200 dark:text-zinc-800\"\n />\n ))}\n\n <path\n d={p95Path}\n fill=\"none\"\n stroke=\"#2563eb\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d={p50Path}\n fill=\"none\"\n stroke=\"#10b981\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {p95Pts.map((pt, i) => (\n <g\n key={DEFAULT_LINE_TELEMETRY[i].time}\n className=\"cursor-pointer\"\n onMouseEnter={() => setHoverIdx(i)}\n >\n <circle\n cx={pt.x}\n cy={pt.y}\n r={hoverIdx === i ? 5 : 3}\n className=\"fill-blue-600 stroke-white dark:stroke-zinc-900 stroke-2\"\n />\n <circle\n cx={p50Pts[i].x}\n cy={p50Pts[i].y}\n r={hoverIdx === i ? 5 : 3}\n className=\"fill-emerald-500 stroke-white dark:stroke-zinc-900 stroke-2\"\n />\n <rect\n x={pt.x - 24}\n y={0}\n width={48}\n height={height}\n fill=\"transparent\"\n />\n </g>\n ))}\n </svg>\n\n <div className=\"mt-2 flex justify-between px-2 font-mono text-[11px] text-zinc-400\">\n {DEFAULT_LINE_TELEMETRY.map((d, i) => (\n <span\n key={d.time}\n className={cn(\n hoverIdx === i && \"font-semibold text-blue-600 dark:text-blue-400\"\n )}\n >\n {d.time}\n </span>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport interface DonutSegment {\n label: string\n value: number\n color: string\n dotClass: string\n}\n\nconst DEFAULT_DONUT_SEGMENTS: DonutSegment[] = [\n { label: \"Enterprise Cloud\", value: 48, color: \"#2563eb\", dotClass: \"bg-blue-600\" },\n { label: \"Growth Team\", value: 32, color: \"#8b5cf6\", dotClass: \"bg-violet-500\" },\n { label: \"Self-Serve Pro\", value: 20, color: \"#10b981\", dotClass: \"bg-emerald-500\" },\n]\n\nexport const DonutStatisticChart: React.FC<{\n title?: string\n segments?: DonutSegment[]\n className?: string\n}> = ({\n title = \"Revenue Distribution by Tier\",\n segments = DEFAULT_DONUT_SEGMENTS,\n className,\n}) => {\n const [activeSegment, setActiveSegment] = React.useState<number | null>(null)\n const total = segments.reduce((acc, s) => acc + s.value, 0)\n const radius = 50\n const circumference = 2 * Math.PI * radius\n let cumulativePercent = 0\n\n const current = activeSegment !== null ? segments[activeSegment] : null\n\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n <PieChartIcon className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n {title}\n </h3>\n </div>\n\n <div className=\"mt-5 flex flex-col items-center gap-6 sm:flex-row sm:justify-around\">\n <div className=\"relative flex h-36 w-36 items-center justify-center shrink-0\">\n <svg className=\"h-36 w-36 -rotate-90\" viewBox=\"0 0 128 128\">\n <circle\n cx=\"64\"\n cy=\"64\"\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14\"\n className=\"text-zinc-100 dark:text-zinc-800\"\n />\n {segments.map((seg, idx) => {\n const strokeDasharray = `${(seg.value / total) * circumference} ${circumference}`\n const strokeDashoffset = -cumulativePercent * circumference\n cumulativePercent += seg.value / total\n\n return (\n <circle\n key={seg.label}\n cx=\"64\"\n cy=\"64\"\n r={radius}\n fill=\"none\"\n stroke={seg.color}\n strokeWidth={activeSegment === idx ? \"17\" : \"14\"}\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n className=\"transition-all duration-200 cursor-pointer\"\n onMouseEnter={() => setActiveSegment(idx)}\n onMouseLeave={() => setActiveSegment(null)}\n />\n )\n })}\n </svg>\n <div className=\"absolute inset-0 flex flex-col items-center justify-center text-center pointer-events-none\">\n <span className=\"text-xl font-bold text-zinc-900 dark:text-white\">\n {current ? `${current.value}%` : \"100%\"}\n </span>\n <span className=\"text-[10px] text-zinc-400\">\n {current ? current.label : \"Total Share\"}\n </span>\n </div>\n </div>\n\n <div className=\"w-full max-w-xs space-y-2.5\">\n {segments.map((seg, idx) => (\n <div\n key={seg.label}\n onMouseEnter={() => setActiveSegment(idx)}\n onMouseLeave={() => setActiveSegment(null)}\n className={cn(\n \"flex items-center justify-between rounded-xl border px-3 py-2 text-xs transition-colors cursor-pointer\",\n activeSegment === idx\n ? \"border-blue-500/40 bg-zinc-50 dark:bg-zinc-800/70\"\n : \"border-zinc-200/70 dark:border-zinc-800\"\n )}\n >\n <span className=\"flex items-center gap-2 font-medium text-zinc-700 dark:text-zinc-200\">\n <span className={cn(\"h-2.5 w-2.5 rounded-full\", seg.dotClass)} />\n {seg.label}\n </span>\n <span className=\"font-mono font-semibold text-zinc-900 dark:text-white\">\n {seg.value}%\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport const RadialStatisticChart: React.FC<{\n title?: string\n score?: number\n className?: string\n}> = ({\n title = \"Workspace Health & SLA Score\",\n score = 98,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Gauge className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n {title}\n </h3>\n </div>\n <span className=\"rounded-full bg-emerald-500/10 px-2.5 py-0.5 text-[11px] font-semibold text-emerald-600 dark:text-emerald-400\">\n Excellent\n </span>\n </div>\n\n <div className=\"mt-5 flex flex-col items-center gap-6 sm:flex-row sm:justify-around\">\n {/* Concentric Activity Rings */}\n <div className=\"relative flex h-36 w-36 items-center justify-center shrink-0\">\n <svg className=\"h-36 w-36 -rotate-90\" viewBox=\"0 0 128 128\">\n <circle\n cx=\"64\"\n cy=\"64\"\n r=\"52\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"10\"\n className=\"text-zinc-100 dark:text-zinc-800\"\n />\n <circle\n cx=\"64\"\n cy=\"64\"\n r=\"52\"\n fill=\"none\"\n stroke=\"#2563eb\"\n strokeWidth=\"10\"\n strokeDasharray=\"326\"\n strokeDashoffset=\"22\"\n strokeLinecap=\"round\"\n />\n <circle\n cx=\"64\"\n cy=\"64\"\n r=\"38\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"10\"\n className=\"text-zinc-100 dark:text-zinc-800\"\n />\n <circle\n cx=\"64\"\n cy=\"64\"\n r=\"38\"\n fill=\"none\"\n stroke=\"#10b981\"\n strokeWidth=\"10\"\n strokeDasharray=\"238\"\n strokeDashoffset=\"28\"\n strokeLinecap=\"round\"\n />\n </svg>\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n <span className=\"text-2xl font-bold text-zinc-900 dark:text-white\">\n {score}\n </span>\n <span className=\"text-[10px] text-zinc-400\">/ 100</span>\n </div>\n </div>\n\n <div className=\"w-full max-w-xs space-y-3 text-xs\">\n <div className=\"space-y-1\">\n <div className=\"flex justify-between\">\n <span className=\"text-zinc-500\">Global Uptime SLA</span>\n <span className=\"font-mono font-semibold text-zinc-900 dark:text-white\">\n 99.98%\n </span>\n </div>\n <div className=\"h-1.5 w-full rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <div className=\"h-full w-[98%] rounded-full bg-blue-600\" />\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex justify-between\">\n <span className=\"text-zinc-500\">Edge Cache Hit Ratio</span>\n <span className=\"font-mono font-semibold text-zinc-900 dark:text-white\">\n 94.2%\n </span>\n </div>\n <div className=\"h-1.5 w-full rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <div className=\"h-full w-[94%] rounded-full bg-emerald-500\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nconst HEATMAP_DATA = [\n 1, 2, 3, 2, 1, 0, 2, 3, 4, 3, 2, 1, 3, 4, 2, 3,\n 2, 3, 4, 3, 2, 1, 3, 4, 2, 1, 3, 2, 4, 3, 1, 2,\n 0, 1, 2, 4, 3, 2, 1, 3, 4, 4, 3, 2, 3, 4, 3, 4,\n 2, 3, 1, 2, 3, 4, 2, 1, 3, 2, 4, 3, 2, 1, 4, 3,\n]\n\nexport const HeatmapStatisticChart: React.FC<{\n title?: string\n subtitle?: string\n className?: string\n}> = ({\n title = \"Deployment & Commit Frequency Heatmap\",\n subtitle = \"64-day production release intensity across workspace repositories\",\n className,\n}) => {\n const [hoveredCell, setHoveredCell] = React.useState<number | null>(null)\n\n return (\n <div\n className={cn(\n \"w-full rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xs dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100 flex items-center gap-2\">\n <Grid className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n {title}\n </h3>\n <p className=\"mt-0.5 text-xs text-zinc-500 dark:text-zinc-400\">\n {subtitle}\n </p>\n </div>\n\n <span className=\"font-mono text-xs text-zinc-500 dark:text-zinc-400\">\n {hoveredCell !== null\n ? `Day ${hoveredCell + 1}: ${HEATMAP_DATA[hoveredCell] * 6} events`\n : \"1,428 total events\"}\n </span>\n </div>\n\n <div className=\"mt-5 grid grid-cols-16 gap-1.5\">\n {HEATMAP_DATA.map((lvl, idx) => (\n <button\n key={idx}\n type=\"button\"\n onMouseEnter={() => setHoveredCell(idx)}\n onMouseLeave={() => setHoveredCell(null)}\n aria-label={`Day ${idx + 1}`}\n className={cn(\n \"h-5 w-full rounded-[4px] transition-transform hover:scale-115 cursor-pointer\",\n lvl === 0 && \"bg-zinc-100 dark:bg-zinc-800\",\n lvl === 1 && \"bg-blue-200 dark:bg-blue-950\",\n lvl === 2 && \"bg-blue-400 dark:bg-blue-800\",\n lvl === 3 && \"bg-blue-500 dark:bg-blue-600\",\n lvl === 4 && \"bg-blue-600 dark:bg-blue-400\"\n )}\n />\n ))}\n </div>\n\n <div className=\"mt-4 flex items-center justify-between text-[11px] text-zinc-400\">\n <span>64 days ago</span>\n <div className=\"flex items-center gap-1\">\n <span>Less</span>\n <span className=\"h-2.5 w-2.5 rounded-[2px] bg-zinc-100 dark:bg-zinc-800\" />\n <span className=\"h-2.5 w-2.5 rounded-[2px] bg-blue-200 dark:bg-blue-950\" />\n <span className=\"h-2.5 w-2.5 rounded-[2px] bg-blue-400 dark:bg-blue-800\" />\n <span className=\"h-2.5 w-2.5 rounded-[2px] bg-blue-600 dark:bg-blue-400\" />\n <span>More</span>\n </div>\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport {\n LayoutDashboard,\n Users,\n Settings,\n Bell,\n Search,\n ChevronRight,\n ChevronDown,\n PanelLeftClose,\n PanelLeftOpen,\n Layers,\n CreditCard,\n FolderKanban,\n BarChart3,\n} from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Avatar } from \"../primitives/avatar\"\nimport { Badge } from \"../primitives/badge\"\nimport { Button } from \"../primitives/button\"\nimport { CommandPalette } from \"../primitives/command-palette\"\n\nexport interface SidebarNavItem {\n id: string\n label: string\n icon?: React.ReactNode\n badge?: string\n active?: boolean\n children?: Array<{ id: string; label: string; active?: boolean }>\n}\n\nconst defaultNavItems: SidebarNavItem[] = [\n {\n id: \"overview\",\n label: \"Overview\",\n icon: <LayoutDashboard className=\"h-4 w-4\" />,\n active: true,\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n icon: <BarChart3 className=\"h-4 w-4\" />,\n children: [\n { id: \"revenue\", label: \"Revenue & MRR\", active: true },\n { id: \"retention\", label: \"Cohort Retention\" },\n { id: \"funnels\", label: \"Conversion Funnels\" },\n ],\n },\n {\n id: \"projects\",\n label: \"Projects\",\n icon: <FolderKanban className=\"h-4 w-4\" />,\n badge: \"12\",\n },\n {\n id: \"customers\",\n label: \"Customers\",\n icon: <Users className=\"h-4 w-4\" />,\n },\n {\n id: \"billing\",\n label: \"Billing\",\n icon: <CreditCard className=\"h-4 w-4\" />,\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <Settings className=\"h-4 w-4\" />,\n },\n]\n\nexport interface SidebarShellProps {\n items?: SidebarNavItem[]\n activeId?: string\n onSelect?: (id: string) => void\n defaultCollapsed?: boolean\n workspaceName?: string\n workspaceTier?: string\n className?: string\n}\n\nexport const SidebarShell: React.FC<SidebarShellProps> = ({\n items = defaultNavItems,\n activeId,\n onSelect,\n defaultCollapsed = false,\n workspaceName = \"Acme Corp\",\n workspaceTier = \"Pro\",\n className,\n}) => {\n const [collapsed, setCollapsed] = React.useState(defaultCollapsed)\n const [selectedId, setSelectedId] = React.useState(activeId || \"overview\")\n const [openGroups, setOpenGroups] = React.useState<Record<string, boolean>>({\n analytics: true,\n })\n\n const currentId = activeId !== undefined ? activeId : selectedId\n\n const handleSelect = (id: string) => {\n setSelectedId(id)\n onSelect?.(id)\n }\n\n return (\n <aside\n className={cn(\n \"flex flex-col border-r border-zinc-200 bg-zinc-50/70 text-zinc-700 transition-all duration-200 select-none shrink-0 dark:border-zinc-800 dark:bg-zinc-900/60 dark:text-zinc-200\",\n collapsed ? \"w-16\" : \"w-60\",\n className\n )}\n >\n {/* Workspace Header */}\n <div className=\"flex h-14 items-center justify-between border-b border-zinc-200 px-3.5 dark:border-zinc-800\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <div className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-blue-600 text-white\">\n <Layers className=\"h-4 w-4\" />\n </div>\n {!collapsed && (\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <p className=\"truncate text-xs font-semibold text-zinc-900 dark:text-zinc-100\">\n {workspaceName}\n </p>\n <span className=\"rounded bg-blue-50 px-1.5 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-500/15 dark:text-blue-300\">\n {workspaceTier}\n </span>\n </div>\n </div>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => setCollapsed(!collapsed)}\n aria-label=\"Toggle sidebar\"\n className=\"rounded-lg p-1.5 text-zinc-400 hover:bg-zinc-200/60 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\"\n >\n {collapsed ? (\n <PanelLeftOpen className=\"h-4 w-4\" />\n ) : (\n <PanelLeftClose className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n\n {/* Navigation List */}\n <div className=\"flex-1 overflow-y-auto p-2.5 space-y-1\">\n {!collapsed && (\n <div className=\"px-2.5 py-1 text-[10px] font-semibold uppercase tracking-wider text-zinc-400\">\n Workspace\n </div>\n )}\n {items.map((item) => {\n const isActive = currentId === item.id\n const hasChildren = Boolean(item.children && item.children.length > 0)\n const isOpen = openGroups[item.id]\n\n return (\n <div key={item.id} className=\"space-y-0.5\">\n <button\n type=\"button\"\n onClick={() => {\n handleSelect(item.id)\n if (hasChildren) {\n setOpenGroups((prev) => ({\n ...prev,\n [item.id]: !prev[item.id],\n }))\n }\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-2.5 py-1.5 text-xs font-medium transition-colors cursor-pointer\",\n isActive\n ? \"bg-zinc-200/75 text-zinc-900 dark:bg-zinc-800 dark:text-white\"\n : \"text-zinc-600 hover:bg-zinc-200/40 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-200\"\n )}\n >\n <span className=\"flex items-center gap-2.5 min-w-0\">\n <span\n className={cn(\n \"shrink-0\",\n isActive\n ? \"text-blue-600 dark:text-blue-400\"\n : \"text-zinc-400\"\n )}\n >\n {item.icon}\n </span>\n {!collapsed && <span className=\"truncate\">{item.label}</span>}\n </span>\n\n {!collapsed && (\n <span className=\"flex items-center gap-1.5\">\n {item.badge && (\n <span className=\"rounded bg-zinc-200/80 px-1.5 py-0.5 text-[10px] text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400\">\n {item.badge}\n </span>\n )}\n {hasChildren && (\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 text-zinc-400 transition-transform\",\n isOpen ? \"rotate-0\" : \"-rotate-90\"\n )}\n />\n )}\n </span>\n )}\n </button>\n\n {!collapsed && hasChildren && isOpen && (\n <div className=\"ml-4 border-l border-zinc-200 pl-2.5 space-y-0.5 dark:border-zinc-800\">\n {item.children!.map((sub) => {\n const subActive = currentId === sub.id\n return (\n <button\n key={sub.id}\n type=\"button\"\n onClick={() => handleSelect(sub.id)}\n className={cn(\n \"flex w-full items-center rounded-md px-2.5 py-1.5 text-xs transition-colors cursor-pointer\",\n subActive\n ? \"text-blue-600 font-medium dark:text-blue-400\"\n : \"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-200\"\n )}\n >\n {sub.label}\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n })}\n </div>\n\n {/* Footer User Pod */}\n <div className=\"border-t border-zinc-200 p-3 dark:border-zinc-800\">\n <div className=\"flex items-center justify-between gap-2.5\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <Avatar fallback=\"SR\" tint=\"blue\" size=\"sm\" status=\"online\" />\n {!collapsed && (\n <div className=\"min-w-0\">\n <p className=\"truncate text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n Saeful Rohman\n </p>\n <p className=\"truncate text-[11px] text-zinc-500\">\n saeful@acme.com\n </p>\n </div>\n )}\n </div>\n </div>\n </div>\n </aside>\n )\n}\n\nexport interface HeaderNavbarProps {\n breadcrumbs?: string[]\n onOpenCommandPalette?: () => void\n className?: string\n}\n\nexport const HeaderNavbar: React.FC<HeaderNavbarProps> = ({\n breadcrumbs = [\"Workspace\", \"Analytics\", \"Overview\"],\n onOpenCommandPalette,\n className,\n}) => {\n const [internalCmdOpen, setInternalCmdOpen] = React.useState(false)\n\n const handleOpenSearch = () => {\n if (onOpenCommandPalette) {\n onOpenCommandPalette()\n } else {\n setInternalCmdOpen(true)\n }\n }\n\n return (\n <>\n <header\n className={cn(\n \"flex h-14 w-full items-center justify-between border-b border-zinc-200 bg-white px-5 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n {/* Breadcrumb Trail */}\n <nav aria-label=\"Breadcrumb\" className=\"flex items-center gap-1.5 text-xs\">\n {breadcrumbs.map((crumb, idx) => {\n const isLast = idx === breadcrumbs.length - 1\n return (\n <React.Fragment key={crumb}>\n {idx > 0 && (\n <ChevronRight className=\"h-3.5 w-3.5 text-zinc-400 shrink-0\" />\n )}\n <span\n className={cn(\n \"truncate\",\n isLast\n ? \"font-medium text-zinc-900 dark:text-zinc-100\"\n : \"text-zinc-500 dark:text-zinc-400\"\n )}\n >\n {crumb}\n </span>\n </React.Fragment>\n )\n })}\n </nav>\n\n {/* Right Controls */}\n <div className=\"flex items-center gap-2.5\">\n <button\n type=\"button\"\n onClick={handleOpenSearch}\n className=\"hidden sm:flex h-8 w-52 items-center justify-between rounded-lg border border-zinc-200 bg-zinc-50 px-2.5 text-xs text-zinc-500 transition-colors hover:border-zinc-300 hover:text-zinc-800 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:text-zinc-100 cursor-pointer\"\n >\n <span className=\"flex items-center gap-2\">\n <Search className=\"h-3.5 w-3.5 text-zinc-400 dark:text-zinc-400\" />\n <span>Quick search...</span>\n </span>\n <kbd className=\"rounded border border-zinc-200 bg-white px-1.5 py-0.5 font-mono text-[10px] text-zinc-500 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300\">\n ⌘K\n </kbd>\n </button>\n\n <button\n type=\"button\"\n aria-label=\"Notifications\"\n className=\"relative flex h-8 w-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-500 hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700 cursor-pointer\"\n >\n <Bell className=\"h-3.5 w-3.5\" />\n <span className=\"absolute right-1.5 top-1.5 h-1.5 w-1.5 rounded-full bg-blue-600\" />\n </button>\n </div>\n </header>\n\n {!onOpenCommandPalette && (\n <CommandPalette\n open={internalCmdOpen}\n onOpenChange={setInternalCmdOpen}\n enableGlobalShortcut={false}\n />\n )}\n </>\n )\n}\n\nexport interface PageHeaderBarProps {\n title: string\n subtitle?: string\n badge?: string\n actions?: React.ReactNode\n className?: string\n}\n\nexport const PageHeaderBar: React.FC<PageHeaderBarProps> = ({\n title,\n subtitle,\n badge,\n actions,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 pb-5 dark:border-zinc-800\",\n className\n )}\n >\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2.5\">\n <h2 className=\"text-lg font-semibold tracking-tight text-zinc-900 dark:text-zinc-100\">\n {title}\n </h2>\n {badge && (\n <Badge variant=\"blue\" dot>\n {badge}\n </Badge>\n )}\n </div>\n {subtitle && (\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">{subtitle}</p>\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n {actions || (\n <>\n <Button variant=\"outline\" size=\"sm\">\n Export report\n </Button>\n <Button variant=\"primary\" size=\"sm\">\n New report\n </Button>\n </>\n )}\n </div>\n </div>\n )\n}\n\nexport interface AppShellProps {\n workspaceName?: string\n planBadge?: string\n breadcrumbs?: string[]\n user?: {\n name: string\n email: string\n initials: string\n avatarSrc?: string\n }\n children?: React.ReactNode\n className?: string\n}\n\nexport const AppShell: React.FC<AppShellProps> = ({\n workspaceName = \"Acme Corp\",\n planBadge = \"Pro\",\n breadcrumbs = [\"Workspace\", \"Overview\"],\n children,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"flex min-h-[600px] w-full overflow-hidden rounded-2xl border border-zinc-200 bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-950\",\n className\n )}\n >\n <SidebarShell\n workspaceName={workspaceName}\n workspaceTier={planBadge}\n />\n <div className=\"flex flex-1 flex-col min-w-0\">\n <HeaderNavbar breadcrumbs={breadcrumbs} />\n <main className=\"flex-1 p-6 space-y-6 overflow-y-auto\">{children}</main>\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ArrowUpRight, ArrowDownRight } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Badge } from \"../primitives/badge\"\nimport { Progress } from \"../primitives/progress\"\n\nexport interface StatMetricCardProps {\n title: string\n value: string\n change: string\n trend?: \"up\" | \"down\" | \"neutral\"\n subtitle?: string\n sparkline?: number[]\n accent?: \"blue\" | \"indigo\" | \"emerald\" | \"amber\" | \"rose\"\n className?: string\n}\n\nconst strokeColors = {\n blue: \"#2563eb\",\n indigo: \"#2563eb\",\n emerald: \"#10b981\",\n amber: \"#f59e0b\",\n rose: \"#f43f5e\",\n}\n\nexport const StatMetricCard: React.FC<StatMetricCardProps> = ({\n title,\n value,\n change,\n trend = \"up\",\n subtitle = \"vs. previous 30 days\",\n sparkline = [28, 34, 31, 45, 42, 56, 64, 61, 78, 86],\n accent = \"blue\",\n className,\n}) => {\n const min = Math.min(...sparkline)\n const max = Math.max(...sparkline)\n const range = Math.max(1, max - min)\n const width = 104\n const height = 34\n\n const points = sparkline\n .map((val, i) => {\n const x = (i / Math.max(1, sparkline.length - 1)) * width\n const y = height - ((val - min) / range) * (height - 8) - 4\n return `${x.toFixed(1)},${y.toFixed(1)}`\n })\n .join(\" \")\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-5 transition-colors dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium text-zinc-500 dark:text-zinc-400\">\n {title}\n </span>\n <Badge\n variant={\n trend === \"up\" ? \"emerald\" : trend === \"down\" ? \"rose\" : \"default\"\n }\n className=\"text-[11px]\"\n >\n {trend === \"up\" ? (\n <ArrowUpRight className=\"h-3 w-3\" />\n ) : (\n <ArrowDownRight className=\"h-3 w-3\" />\n )}\n {change}\n </Badge>\n </div>\n\n <div className=\"mt-3 flex items-end justify-between gap-4\">\n <div>\n <div className=\"text-2xl font-semibold tracking-tight text-zinc-900 dark:text-zinc-100\">\n {value}\n </div>\n <p className=\"mt-1 text-[11px] text-zinc-400 dark:text-zinc-500\">\n {subtitle}\n </p>\n </div>\n\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n className=\"overflow-visible shrink-0\"\n >\n <polyline\n fill=\"none\"\n stroke={strokeColors[accent]}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n points={points}\n />\n </svg>\n </div>\n </div>\n )\n}\n\nexport interface MultiMetricGridProps {\n metrics?: StatMetricCardProps[]\n className?: string\n}\n\nconst defaultMetrics: StatMetricCardProps[] = [\n {\n title: \"Monthly Recurring Revenue\",\n value: \"$128,430\",\n change: \"+14.2%\",\n trend: \"up\",\n subtitle: \"Compared to $112.4k last month\",\n sparkline: [32, 38, 40, 48, 52, 60, 68, 74, 82, 95],\n accent: \"blue\",\n },\n {\n title: \"Active Subscribers\",\n value: \"4,892\",\n change: \"+8.4%\",\n trend: \"up\",\n subtitle: \"312 new trials converted\",\n sparkline: [40, 42, 49, 55, 53, 64, 72, 79, 88, 92],\n accent: \"emerald\",\n },\n {\n title: \"Net Revenue Retention\",\n value: \"118.6%\",\n change: \"+2.1%\",\n trend: \"up\",\n subtitle: \"Enterprise cohort expansion\",\n sparkline: [70, 72, 75, 78, 80, 84, 86, 89, 92, 95],\n accent: \"blue\",\n },\n {\n title: \"Logo Churn Rate\",\n value: \"1.24%\",\n change: \"-0.4%\",\n trend: \"up\",\n subtitle: \"Lowest in 4 quarters\",\n sparkline: [65, 58, 50, 44, 39, 32, 28, 22, 18, 12],\n accent: \"emerald\",\n },\n]\n\nexport const MultiMetricGrid: React.FC<MultiMetricGridProps> = ({\n metrics = defaultMetrics,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4\",\n className\n )}\n >\n {metrics.map((m) => (\n <StatMetricCard key={m.title} {...m} />\n ))}\n </div>\n )\n}\n\nexport interface ProgressMetricCardProps {\n title?: string\n current?: string\n target?: string\n percentage?: number\n statusText?: string\n variant?: \"blue\" | \"indigo\" | \"emerald\" | \"amber\" | \"rose\"\n className?: string\n}\n\nexport const ProgressMetricCard: React.FC<ProgressMetricCardProps> = ({\n title = \"Monthly API Usage\",\n current = \"768,000\",\n target = \"1,000,000 reqs\",\n percentage = 76.8,\n statusText = \"Resets in 9 days • Pay-as-you-go enabled\",\n variant = \"blue\",\n className,\n}) => {\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-5 space-y-4 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium text-zinc-700 dark:text-zinc-200\">\n {title}\n </span>\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n <strong className=\"text-zinc-900 dark:text-white\">{current}</strong> /{\" \"}\n {target}\n </span>\n </div>\n <Progress value={percentage} variant={variant} showValue />\n <p className=\"text-[11px] text-zinc-400 dark:text-zinc-500\">\n {statusText}\n </p>\n </div>\n )\n}\n\nexport type StatCardProps = StatMetricCardProps\nexport const StatCard = StatMetricCard\n","import * as React from \"react\"\nimport { Search, SlidersHorizontal, X, RotateCcw, LayoutGrid, List } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Input } from \"../primitives/input\"\nimport { Button, ToggleGroup } from \"../primitives/button\"\nimport { DateRangePicker } from \"../primitives/date-picker\"\n\nexport interface ActiveFilterPill {\n id: string\n field: string\n value: string\n}\n\nexport interface AdvancedFilterBarProps {\n searchQuery?: string\n onSearchChange?: (q: string) => void\n initialPills?: ActiveFilterPill[]\n className?: string\n}\n\nexport const AdvancedFilterBar: React.FC<AdvancedFilterBarProps> = ({\n searchQuery = \"\",\n onSearchChange,\n initialPills = [\n { id: \"status\", field: \"Status\", value: \"Active, Trialing\" },\n { id: \"plan\", field: \"Plan\", value: \"Enterprise, Pro\" },\n ],\n className,\n}) => {\n const [query, setQuery] = React.useState(searchQuery)\n const [pills, setPills] = React.useState<ActiveFilterPill[]>(initialPills)\n const [viewMode, setViewMode] = React.useState(\"table\")\n\n const handleSearch = (val: string) => {\n setQuery(val)\n onSearchChange?.(val)\n }\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-3.5 space-y-3 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between\">\n <div className=\"flex flex-1 items-center gap-2.5\">\n <Input\n value={query}\n onChange={(e) => handleSearch(e.target.value)}\n placeholder=\"Search customers, emails, or invoices...\"\n leftIcon={<Search className=\"h-3.5 w-3.5\" />}\n className=\"max-w-md\"\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n if (!pills.some((p) => p.id === \"region\")) {\n setPills((prev) => [\n ...prev,\n { id: \"region\", field: \"Region\", value: \"North America\" },\n ])\n }\n }}\n >\n <SlidersHorizontal className=\"h-3.5 w-3.5 text-zinc-400\" />\n Filter\n </Button>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-2\">\n <DateRangePicker />\n <ToggleGroup\n size=\"sm\"\n value={viewMode}\n onValueChange={setViewMode}\n items={[\n {\n value: \"table\",\n label: \"List\",\n icon: <List className=\"h-3.5 w-3.5\" />,\n },\n {\n value: \"grid\",\n label: \"Grid\",\n icon: <LayoutGrid className=\"h-3.5 w-3.5\" />,\n },\n ]}\n />\n </div>\n </div>\n\n {pills.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2 border-t border-zinc-200 pt-2.5 dark:border-zinc-800\">\n <span className=\"text-[11px] font-medium text-zinc-400\">\n Active filters:\n </span>\n {pills.map((pill) => (\n <span\n key={pill.id}\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-zinc-200 bg-zinc-50 px-2.5 py-1 text-xs text-zinc-700 dark:border-zinc-800 dark:bg-zinc-800/70 dark:text-zinc-200\"\n >\n <span className=\"text-zinc-400\">{pill.field}:</span>\n <span className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {pill.value}\n </span>\n <button\n type=\"button\"\n onClick={() =>\n setPills((prev) => prev.filter((item) => item.id !== pill.id))\n }\n className=\"ml-0.5 rounded p-0.5 text-zinc-400 hover:bg-zinc-200/70 hover:text-zinc-700 dark:hover:bg-zinc-700 dark:hover:text-zinc-200 cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n ))}\n <button\n type=\"button\"\n onClick={() => {\n setPills([])\n handleSearch(\"\")\n }}\n className=\"inline-flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white ml-auto cursor-pointer\"\n >\n <RotateCcw className=\"h-3 w-3\" />\n Clear all\n </button>\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport {\n ArrowUpDown,\n Search,\n MoreHorizontal,\n Download,\n Eye,\n Copy,\n Trash2,\n ChevronLeft,\n ChevronRight,\n SlidersHorizontal,\n} from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Avatar } from \"../primitives/avatar\"\nimport { Badge } from \"../primitives/badge\"\nimport { Button } from \"../primitives/button\"\nimport { Checkbox } from \"../primitives/switch\"\nimport { Input } from \"../primitives/input\"\nimport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n} from \"../primitives/dropdown-menu\"\nimport {\n Drawer,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerDescription,\n DrawerFooter,\n} from \"../primitives/drawer\"\nimport { Progress } from \"../primitives/progress\"\n\nexport interface EnterpriseRowData {\n id: string\n customer: string\n email: string\n plan: string\n status: \"active\" | \"trialing\" | \"past_due\" | \"canceled\"\n mrrAmount: number\n mrrFormatted: string\n seatUsage: number\n updatedAt: string\n}\n\nconst defaultRows: EnterpriseRowData[] = [\n {\n id: \"cus-9921\",\n customer: \"Linear Orbit Inc.\",\n email: \"billing@linearorbit.io\",\n plan: \"Enterprise Annual\",\n status: \"active\",\n mrrAmount: 4200,\n mrrFormatted: \"$4,200.00\",\n seatUsage: 84,\n updatedAt: \"2 hours ago\",\n },\n {\n id: \"cus-8840\",\n customer: \"Raycast Labs GmbH\",\n email: \"finance@raycastlabs.de\",\n plan: \"Enterprise Annual\",\n status: \"active\",\n mrrAmount: 3150,\n mrrFormatted: \"$3,150.00\",\n seatUsage: 62,\n updatedAt: \"5 hours ago\",\n },\n {\n id: \"cus-7732\",\n customer: \"chronicle.so\",\n email: \"accounts@chronicle.so\",\n plan: \"Pro Monthly\",\n status: \"trialing\",\n mrrAmount: 890,\n mrrFormatted: \"$890.00\",\n seatUsage: 45,\n updatedAt: \"1 day ago\",\n },\n {\n id: \"cus-6419\",\n customer: \"Northstar Analytics\",\n email: \"ops@northstar.co\",\n plan: \"Scale Annual\",\n status: \"past_due\",\n mrrAmount: 1950,\n mrrFormatted: \"$1,950.00\",\n seatUsage: 92,\n updatedAt: \"2 days ago\",\n },\n {\n id: \"cus-5108\",\n customer: \"Veloce Design Studio\",\n email: \"team@veloce.design\",\n plan: \"Pro Monthly\",\n status: \"active\",\n mrrAmount: 640,\n mrrFormatted: \"$640.00\",\n seatUsage: 38,\n updatedAt: \"3 days ago\",\n },\n]\n\nconst statusBadgeVariant: Record<\n EnterpriseRowData[\"status\"],\n { variant: \"emerald\" | \"blue\" | \"amber\" | \"rose\"; label: string }\n> = {\n active: { variant: \"emerald\", label: \"Active\" },\n trialing: { variant: \"blue\", label: \"Trialing\" },\n past_due: { variant: \"amber\", label: \"Past Due\" },\n canceled: { variant: \"rose\", label: \"Canceled\" },\n}\n\nexport interface EnterpriseDataTableProps {\n data?: EnterpriseRowData[]\n className?: string\n}\n\nexport const EnterpriseDataTable: React.FC<EnterpriseDataTableProps> = ({\n data = defaultRows,\n className,\n}) => {\n const [rows, setRows] = React.useState<EnterpriseRowData[]>(data)\n const [search, setSearch] = React.useState(\"\")\n const [statusFilter, setStatusFilter] = React.useState<string>(\"all\")\n const [sortAsc, setSortAsc] = React.useState(false)\n const [selectedIds, setSelectedIds] = React.useState<Record<string, boolean>>({})\n const [inspectedRow, setInspectedRow] = React.useState<EnterpriseRowData | null>(null)\n const [showPlanCol, setShowPlanCol] = React.useState(true)\n\n const filteredRows = React.useMemo(() => {\n return rows\n .filter((r) => {\n if (statusFilter !== \"all\" && r.status !== statusFilter) return false\n if (!search.trim()) return true\n const q = search.toLowerCase()\n return (\n r.customer.toLowerCase().includes(q) ||\n r.email.toLowerCase().includes(q) ||\n r.id.toLowerCase().includes(q) ||\n r.plan.toLowerCase().includes(q)\n )\n })\n .sort((a, b) =>\n sortAsc ? a.mrrAmount - b.mrrAmount : b.mrrAmount - a.mrrAmount\n )\n }, [rows, search, statusFilter, sortAsc])\n\n const selectedCount = Object.values(selectedIds).filter(Boolean).length\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white overflow-hidden dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n {/* Table Toolbar */}\n <div className=\"flex flex-col gap-3 border-b border-zinc-200 p-4 lg:flex-row lg:items-center lg:justify-between dark:border-zinc-800\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Filter customers...\"\n leftIcon={<Search className=\"h-3.5 w-3.5\" />}\n className=\"w-full sm:w-64\"\n />\n\n <div className=\"flex items-center rounded-lg border border-zinc-200 bg-zinc-100/70 p-0.5 text-xs dark:border-zinc-800 dark:bg-zinc-800/60\">\n {([\"all\", \"active\", \"trialing\", \"past_due\"] as const).map((st) => (\n <button\n key={st}\n type=\"button\"\n onClick={() => setStatusFilter(st)}\n className={cn(\n \"rounded-md px-2.5 py-1 capitalize transition-colors cursor-pointer\",\n statusFilter === st\n ? \"bg-white text-zinc-900 font-medium shadow-2xs dark:bg-zinc-900 dark:text-white\"\n : \"text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-200\"\n )}\n >\n {st.replace(\"_\", \" \")}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {selectedCount > 0 && (\n <Badge variant=\"blue\">{selectedCount} selected</Badge>\n )}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowPlanCol((prev) => !prev)}\n >\n <SlidersHorizontal className=\"h-3.5 w-3.5\" />\n Columns\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"h-3.5 w-3.5\" />\n Export\n </Button>\n </div>\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse text-left text-xs\">\n <thead>\n <tr className=\"border-b border-zinc-200 bg-zinc-50/70 text-[11px] font-medium text-zinc-500 dark:border-zinc-800 dark:bg-zinc-950/40 dark:text-zinc-400\">\n <th className=\"w-10 px-4 py-3\">\n <Checkbox\n checked={\n filteredRows.length > 0 &&\n filteredRows.every((r) => selectedIds[r.id])\n }\n onCheckedChange={(checked) => {\n const next: Record<string, boolean> = {}\n if (checked) {\n filteredRows.forEach((r) => {\n next[r.id] = true\n })\n }\n setSelectedIds(next)\n }}\n />\n </th>\n <th className=\"px-4 py-3\">Customer</th>\n {showPlanCol && <th className=\"px-4 py-3\">Plan</th>}\n <th className=\"px-4 py-3\">Status</th>\n <th className=\"px-4 py-3\">\n <button\n type=\"button\"\n onClick={() => setSortAsc(!sortAsc)}\n className=\"inline-flex items-center gap-1 text-zinc-600 hover:text-zinc-900 dark:text-zinc-300 dark:hover:text-white cursor-pointer\"\n >\n MRR\n <ArrowUpDown className=\"h-3 w-3 text-zinc-400\" />\n </button>\n </th>\n <th className=\"px-4 py-3\">Seat Utilization</th>\n <th className=\"px-4 py-3\">Updated</th>\n <th className=\"px-4 py-3 text-right\">Actions</th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-zinc-200 dark:divide-zinc-800\">\n {filteredRows.length === 0 ? (\n <tr>\n <td\n colSpan={8}\n className=\"py-12 text-center text-xs text-zinc-400\"\n >\n No customers match your filter criteria.\n </td>\n </tr>\n ) : (\n filteredRows.map((row, idx) => {\n const badgeInfo = statusBadgeVariant[row.status]\n return (\n <tr\n key={row.id}\n onClick={() => setInspectedRow(row)}\n className=\"group transition-colors hover:bg-zinc-50 dark:hover:bg-zinc-800/40 cursor-pointer\"\n >\n <td\n className=\"px-4 py-3\"\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={Boolean(selectedIds[row.id])}\n onCheckedChange={(checked) =>\n setSelectedIds((prev) => ({\n ...prev,\n [row.id]: Boolean(checked),\n }))\n }\n />\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2.5\">\n <Avatar\n fallback={row.customer.slice(0, 2)}\n tint={idx % 2 === 0 ? \"blue\" : \"neutral\"}\n size=\"sm\"\n />\n <div>\n <div className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {row.customer}\n </div>\n <div className=\"text-[11px] text-zinc-500\">\n {row.email}\n </div>\n </div>\n </div>\n </td>\n {showPlanCol && (\n <td className=\"px-4 py-3 text-zinc-600 dark:text-zinc-300\">\n {row.plan}\n </td>\n )}\n <td className=\"px-4 py-3\">\n <Badge variant={badgeInfo.variant} dot>\n {badgeInfo.label}\n </Badge>\n </td>\n <td className=\"px-4 py-3 font-medium text-zinc-900 dark:text-zinc-100\">\n {row.mrrFormatted}\n </td>\n <td className=\"px-4 py-3 w-36\">\n <Progress\n value={row.seatUsage}\n size=\"sm\"\n variant={row.seatUsage > 85 ? \"amber\" : \"blue\"}\n />\n </td>\n <td className=\"px-4 py-3 text-zinc-500\">{row.updatedAt}</td>\n <td\n className=\"px-4 py-3 text-right\"\n onClick={(e) => e.stopPropagation()}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"rounded-lg p-1.5 text-zinc-400 hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200 cursor-pointer\"\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n onSelect={() => setInspectedRow(row)}\n >\n <Eye className=\"h-3.5 w-3.5 text-zinc-400\" />\n View details\n </DropdownMenuItem>\n <DropdownMenuItem\n onSelect={() =>\n navigator.clipboard?.writeText(row.id)\n }\n >\n <Copy className=\"h-3.5 w-3.5 text-zinc-400\" />\n Copy customer ID\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n destructive\n onSelect={() =>\n setRows((prev) =>\n prev.filter((item) => item.id !== row.id)\n )\n }\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n Remove customer\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </td>\n </tr>\n )\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination Footer */}\n <div className=\"flex items-center justify-between border-t border-zinc-200 px-4 py-3 text-xs text-zinc-500 dark:border-zinc-800 dark:text-zinc-400\">\n <div>\n Showing <strong className=\"text-zinc-900 dark:text-zinc-100\">1</strong>{\" \"}\n to{\" \"}\n <strong className=\"text-zinc-900 dark:text-zinc-100\">\n {filteredRows.length}\n </strong>{\" \"}\n of{\" \"}\n <strong className=\"text-zinc-900 dark:text-zinc-100\">\n {rows.length}\n </strong>{\" \"}\n results\n </div>\n <div className=\"flex items-center gap-1.5\">\n <Button variant=\"outline\" size=\"sm\" disabled>\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n Previous\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n Next\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n\n {/* Slide-over Inspector Drawer */}\n <Drawer\n open={Boolean(inspectedRow)}\n onOpenChange={(open) => !open && setInspectedRow(null)}\n >\n <DrawerContent side=\"right\">\n {inspectedRow && (\n <>\n <DrawerHeader>\n <div className=\"flex items-center gap-2\">\n <Badge\n variant={statusBadgeVariant[inspectedRow.status].variant}\n dot\n >\n {statusBadgeVariant[inspectedRow.status].label}\n </Badge>\n <span className=\"font-mono text-xs text-zinc-400\">\n {inspectedRow.id}\n </span>\n </div>\n <DrawerTitle className=\"mt-2\">\n {inspectedRow.customer}\n </DrawerTitle>\n <DrawerDescription>\n {inspectedRow.email} • {inspectedRow.plan}\n </DrawerDescription>\n </DrawerHeader>\n\n <div className=\"my-5 space-y-4 overflow-y-auto text-xs\">\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"rounded-xl border border-zinc-200 bg-zinc-50 p-3.5 dark:border-zinc-800 dark:bg-zinc-800/50\">\n <span className=\"text-zinc-500\">Monthly Revenue</span>\n <div className=\"mt-1 text-lg font-semibold text-zinc-900 dark:text-white\">\n {inspectedRow.mrrFormatted}\n </div>\n </div>\n <div className=\"rounded-xl border border-zinc-200 bg-zinc-50 p-3.5 dark:border-zinc-800 dark:bg-zinc-800/50\">\n <span className=\"text-zinc-500\">Seat Utilization</span>\n <div className=\"mt-1 text-lg font-semibold text-zinc-900 dark:text-white\">\n {inspectedRow.seatUsage}%\n </div>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-zinc-200 p-4 space-y-3 dark:border-zinc-800\">\n <div className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n Quota Usage\n </div>\n <Progress\n value={inspectedRow.seatUsage}\n label=\"Team Seats\"\n showValue\n variant=\"blue\"\n />\n <Progress\n value={64}\n label=\"Storage Volume\"\n showValue\n variant=\"emerald\"\n />\n </div>\n </div>\n\n <DrawerFooter>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setInspectedRow(null)}\n >\n Close\n </Button>\n <Button variant=\"primary\" size=\"sm\">\n Edit subscription\n </Button>\n </DrawerFooter>\n </>\n )}\n </DrawerContent>\n </Drawer>\n </div>\n )\n}\n","import * as React from \"react\"\nimport {\n Shield,\n Plus,\n CreditCard,\n Check,\n Smartphone,\n Laptop,\n} from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport { Avatar } from \"../primitives/avatar\"\nimport { Badge } from \"../primitives/badge\"\nimport { Button } from \"../primitives/button\"\nimport { Input, Label, Textarea } from \"../primitives/input\"\nimport { Switch } from \"../primitives/switch\"\nimport {\n Select,\n SelectTrigger,\n SelectValue,\n SelectContent,\n SelectItem,\n} from \"../primitives/select\"\nimport { Progress } from \"../primitives/progress\"\n\nexport const UserProfileFormBlock: React.FC<{ className?: string }> = ({\n className,\n}) => {\n const [saved, setSaved] = React.useState(false)\n const [timezone, setTimezone] = React.useState(\"utc+7\")\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-6 space-y-6 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 pb-5 dark:border-zinc-800\">\n <div className=\"flex items-center gap-4\">\n <Avatar fallback=\"SR\" tint=\"blue\" size=\"xl\" status=\"online\" />\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n Profile details\n </h3>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n Update your photo and personal details here.\n </p>\n </div>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n Change photo\n </Button>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label>Full name</Label>\n <Input defaultValue=\"Saeful Rohman\" />\n </div>\n <div className=\"space-y-2\">\n <Label>Username</Label>\n <Input prefixText=\"ethereal-ui.dev/\" defaultValue=\"saefulrdevs\" />\n </div>\n <div className=\"space-y-2\">\n <Label>Email address</Label>\n <Input type=\"email\" defaultValue=\"saeful@acme.com\" />\n </div>\n <div className=\"space-y-2\">\n <Label>Timezone</Label>\n <Select value={timezone} onValueChange={setTimezone}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select timezone\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"utc+7\">Asia/Jakarta (GMT+07:00)</SelectItem>\n <SelectItem value=\"utc+0\">UTC / London (GMT+00:00)</SelectItem>\n <SelectItem value=\"utc-5\">America/New_York (EST)</SelectItem>\n <SelectItem value=\"utc+9\">Asia/Tokyo (JST)</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"sm:col-span-2 space-y-2\">\n <Label optional>Bio</Label>\n <Textarea\n autoResize\n defaultValue=\"Product engineer focused on design systems and web architecture.\"\n />\n </div>\n </div>\n\n <div className=\"flex items-center justify-end gap-2 border-t border-zinc-200 pt-4 dark:border-zinc-800\">\n <Button variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={() => {\n setSaved(true)\n setTimeout(() => setSaved(false), 2000)\n }}\n >\n {saved ? \"Saved ✓\" : \"Save changes\"}\n </Button>\n </div>\n </div>\n )\n}\n\nexport const SecurityPasswordFormBlock: React.FC<{ className?: string }> = ({\n className,\n}) => {\n const [mfaEnabled, setMfaEnabled] = React.useState(true)\n const [hardwareKey, setHardwareKey] = React.useState(true)\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-6 space-y-6 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex items-start justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100 flex items-center gap-2\">\n <Shield className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n Two-factor authentication &amp; sessions\n </h3>\n <p className=\"mt-1 text-xs text-zinc-500 dark:text-zinc-400\">\n Manage passkeys, authenticator apps, and active devices.\n </p>\n </div>\n <Badge variant=\"emerald\" dot>\n Protected\n </Badge>\n </div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between rounded-xl border border-zinc-200 bg-zinc-50/60 p-4 dark:border-zinc-800 dark:bg-zinc-800/40\">\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n Authenticator App (TOTP)\n </p>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n Use a 6-digit verification code when signing in.\n </p>\n </div>\n <Switch checked={mfaEnabled} onCheckedChange={setMfaEnabled} />\n </div>\n\n <div className=\"flex items-center justify-between rounded-xl border border-zinc-200 bg-zinc-50/60 p-4 dark:border-zinc-800 dark:bg-zinc-800/40\">\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n Passkey / Security Key\n </p>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n Biometric or hardware key sign-in via WebAuthn.\n </p>\n </div>\n <Switch checked={hardwareKey} onCheckedChange={setHardwareKey} />\n </div>\n </div>\n\n <div className=\"space-y-3 border-t border-zinc-200 pt-4 dark:border-zinc-800\">\n <div className=\"text-xs font-medium text-zinc-700 dark:text-zinc-300\">\n Active sessions\n </div>\n <div className=\"divide-y divide-zinc-200 rounded-xl border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800\">\n <div className=\"flex items-center justify-between p-3.5\">\n <div className=\"flex items-center gap-3\">\n <Laptop className=\"h-4 w-4 text-zinc-500\" />\n <div>\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n MacBook Pro • Chrome 134 (Current)\n </p>\n <p className=\"text-[11px] text-zinc-500\">\n Jakarta, Indonesia • Active now\n </p>\n </div>\n </div>\n <Badge variant=\"emerald\">Current</Badge>\n </div>\n <div className=\"flex items-center justify-between p-3.5\">\n <div className=\"flex items-center gap-3\">\n <Smartphone className=\"h-4 w-4 text-zinc-400\" />\n <div>\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n iPhone 16 Pro • Safari\n </p>\n <p className=\"text-[11px] text-zinc-500\">\n Last active 3 hours ago\n </p>\n </div>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n Revoke\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport interface TeamMember {\n id: string\n name: string\n email: string\n fallback: string\n role: string\n status: \"online\" | \"away\" | \"offline\"\n}\n\nexport const TeamRbacTableBlock: React.FC<{ className?: string }> = ({\n className,\n}) => {\n const [members, setMembers] = React.useState<TeamMember[]>([\n {\n id: \"m1\",\n name: \"Saeful Rohman\",\n email: \"saeful@acme.com\",\n fallback: \"SR\",\n role: \"owner\",\n status: \"online\",\n },\n {\n id: \"m2\",\n name: \"Elena Rostova\",\n email: \"elena@acme.com\",\n fallback: \"ER\",\n role: \"admin\",\n status: \"online\",\n },\n {\n id: \"m3\",\n name: \"Marcus Vance\",\n email: \"mvance@acme.com\",\n fallback: \"MV\",\n role: \"member\",\n status: \"away\",\n },\n ])\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white overflow-hidden dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 p-5 dark:border-zinc-800\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n Team members\n </h3>\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n Manage who has access to this workspace and their permissions.\n </p>\n </div>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={() =>\n setMembers((prev) => [\n ...prev,\n {\n id: `m-${prev.length + 1}`,\n name: \"Aria Chen\",\n email: \"aria@acme.com\",\n fallback: \"AC\",\n role: \"member\",\n status: \"online\",\n },\n ])\n }\n >\n <Plus className=\"h-3.5 w-3.5\" />\n Invite member\n </Button>\n </div>\n\n <div className=\"divide-y divide-zinc-200 dark:divide-zinc-800\">\n {members.map((member, idx) => (\n <div\n key={member.id}\n className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between px-5 py-3.5\"\n >\n <div className=\"flex items-center gap-3\">\n <Avatar\n fallback={member.fallback}\n tint={idx % 2 === 0 ? \"blue\" : \"neutral\"}\n status={member.status}\n size=\"default\"\n />\n <div>\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n {member.name}\n </p>\n <p className=\"text-[11px] text-zinc-500\">{member.email}</p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-3\">\n <Select\n value={member.role}\n onValueChange={(newRole) =>\n setMembers((prev) =>\n prev.map((m) =>\n m.id === member.id ? { ...m, role: newRole } : m\n )\n )\n }\n >\n <SelectTrigger className=\"w-36 h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"owner\">Owner</SelectItem>\n <SelectItem value=\"admin\">Admin</SelectItem>\n <SelectItem value=\"member\">Member</SelectItem>\n <SelectItem value=\"viewer\">Billing Viewer</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport const BillingPlanCardBlock: React.FC<{ className?: string }> = ({\n className,\n}) => {\n return (\n <div\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white p-6 space-y-6 dark:border-zinc-800 dark:bg-zinc-900\",\n className\n )}\n >\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 pb-5 dark:border-zinc-800\">\n <div>\n <div className=\"flex items-center gap-2\">\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n Pro Plan\n </h3>\n <Badge variant=\"blue\">Active</Badge>\n </div>\n <p className=\"mt-1 text-xs text-zinc-500 dark:text-zinc-400\">\n Includes unlimited projects, custom domains, and team collaboration.\n </p>\n </div>\n <div className=\"text-right\">\n <div className=\"text-2xl font-bold text-zinc-900 dark:text-zinc-100\">\n $49<span className=\"text-xs font-normal text-zinc-400\">/month</span>\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-3\">\n <div className=\"rounded-xl border border-zinc-200 bg-zinc-50/50 p-4 space-y-2 dark:border-zinc-800 dark:bg-zinc-800/40\">\n <Progress value={78} label=\"Team seats\" showValue variant=\"blue\" />\n <p className=\"text-[11px] text-zinc-500\">39 of 50 seats used</p>\n </div>\n <div className=\"rounded-xl border border-zinc-200 bg-zinc-50/50 p-4 space-y-2 dark:border-zinc-800 dark:bg-zinc-800/40\">\n <Progress\n value={44}\n label=\"Storage volume\"\n showValue\n variant=\"emerald\"\n />\n <p className=\"text-[11px] text-zinc-500\">44 GB of 100 GB</p>\n </div>\n <div className=\"rounded-xl border border-zinc-200 bg-zinc-50/50 p-4 space-y-2 dark:border-zinc-800 dark:bg-zinc-800/40\">\n <Progress value={62} label=\"Monthly bandwidth\" showValue variant=\"blue\" />\n <p className=\"text-[11px] text-zinc-500\">620 GB of 1 TB</p>\n </div>\n </div>\n\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between rounded-xl border border-zinc-200 p-4 dark:border-zinc-800\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-9 w-9 items-center justify-center rounded-lg border border-zinc-200 bg-zinc-50 text-zinc-700 dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-200\">\n <CreditCard className=\"h-4 w-4\" />\n </div>\n <div>\n <p className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n Visa ending in 4242\n </p>\n <p className=\"text-[11px] text-zinc-500\">\n Expires 09/2028 • Default payment method\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"emerald\">\n <Check className=\"h-3 w-3\" /> Verified\n </Badge>\n <Button variant=\"outline\" size=\"sm\">\n Edit card\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { ArrowUpRight, RefreshCw } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport {\n SidebarShell,\n HeaderNavbar,\n PageHeaderBar,\n} from \"../blocks/app-shell\"\nimport { MultiMetricGrid, ProgressMetricCard } from \"../blocks/stat-cards\"\nimport { Badge } from \"../primitives/badge\"\nimport { Button, ToggleGroup } from \"../primitives/button\"\nimport { Avatar } from \"../primitives/avatar\"\nimport { CommandPalette } from \"../primitives/command-palette\"\n\nconst chartSeriesData: Record<\n string,\n Array<{ label: string; revenue: number; signups: number }>\n> = {\n \"30d\": [\n { label: \"Oct 08\", revenue: 62, signups: 48 },\n { label: \"Oct 12\", revenue: 68, signups: 54 },\n { label: \"Oct 16\", revenue: 64, signups: 59 },\n { label: \"Oct 20\", revenue: 75, signups: 66 },\n { label: \"Oct 24\", revenue: 81, signups: 72 },\n { label: \"Oct 28\", revenue: 79, signups: 76 },\n { label: \"Nov 01\", revenue: 89, signups: 84 },\n { label: \"Nov 06\", revenue: 96, signups: 92 },\n ],\n \"7d\": [\n { label: \"Mon\", revenue: 74, signups: 68 },\n { label: \"Tue\", revenue: 79, signups: 72 },\n { label: \"Wed\", revenue: 83, signups: 77 },\n { label: \"Thu\", revenue: 80, signups: 75 },\n { label: \"Fri\", revenue: 88, signups: 85 },\n { label: \"Sat\", revenue: 92, signups: 89 },\n { label: \"Sun\", revenue: 97, signups: 94 },\n ],\n}\n\nconst recentActivity = [\n {\n id: \"act-1\",\n title: \"Linear Orbit Inc. upgraded to Enterprise Annual\",\n meta: \"+$4,200 MRR • Invoice #INV-2094 paid\",\n time: \"12m ago\",\n fallback: \"LO\",\n },\n {\n id: \"act-2\",\n title: \"Raycast Labs added 12 team seats\",\n meta: \"Pro Plan expansion •Prorated billing applied\",\n time: \"42m ago\",\n fallback: \"RL\",\n },\n {\n id: \"act-3\",\n title: \"Weekly financial summary exported\",\n meta: \"Generated by Elena Rostova\",\n time: \"2h ago\",\n fallback: \"ER\",\n },\n]\n\nconst topCustomers = [\n {\n name: \"Linear Orbit Inc.\",\n domain: \"linearorbit.io\",\n fallback: \"LO\",\n mrr: \"$4,200\",\n growth: \"+18.4%\",\n status: \"Enterprise\",\n },\n {\n name: \"Raycast Labs GmbH\",\n domain: \"raycastlabs.de\",\n fallback: \"RL\",\n mrr: \"$3,150\",\n growth: \"+12.1%\",\n status: \"Enterprise\",\n },\n {\n name: \"Northstar Analytics\",\n domain: \"northstar.co\",\n fallback: \"NA\",\n mrr: \"$1,950\",\n growth: \"+9.4%\",\n status: \"Scale\",\n },\n]\n\nexport const ExecutiveAnalyticsTemplate: React.FC<{ className?: string }> = ({\n className,\n}) => {\n const [range, setRange] = React.useState(\"30d\")\n const [cmdOpen, setCmdOpen] = React.useState(false)\n const points = chartSeriesData[range] || chartSeriesData[\"30d\"]\n\n return (\n <div\n className={cn(\n \"flex min-h-[720px] w-full overflow-hidden rounded-2xl border border-zinc-200 bg-zinc-50/40 text-zinc-900 shadow-sm dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100\",\n className\n )}\n >\n <CommandPalette\n open={cmdOpen}\n onOpenChange={setCmdOpen}\n enableGlobalShortcut={false}\n />\n\n <SidebarShell activeId=\"overview\" />\n\n <div className=\"flex flex-1 flex-col min-w-0\">\n <HeaderNavbar\n breadcrumbs={[\"Workspace\", \"Analytics\", \"Overview\"]}\n onOpenCommandPalette={() => setCmdOpen(true)}\n />\n\n <main className=\"flex-1 space-y-6 overflow-y-auto p-6\">\n <PageHeaderBar\n title=\"Analytics Overview\"\n subtitle=\"Track recurring revenue, subscriber retention, and account expansion.\"\n />\n\n <MultiMetricGrid />\n\n <div className=\"grid grid-cols-1 gap-6 xl:grid-cols-3\">\n <div className=\"xl:col-span-2 rounded-xl border border-zinc-200 bg-white p-5 flex flex-col justify-between dark:border-zinc-800 dark:bg-zinc-900\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 pb-4 dark:border-zinc-800\">\n <div>\n <div className=\"flex items-center gap-2\">\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n Revenue &amp; Subscriber Growth\n </h3>\n <Badge variant=\"emerald\">+14.2%</Badge>\n </div>\n <p className=\"mt-0.5 text-xs text-zinc-500 dark:text-zinc-400\">\n Net settled volume across active subscriptions\n </p>\n </div>\n\n <ToggleGroup\n size=\"sm\"\n value={range}\n onValueChange={setRange}\n items={[\n { value: \"7d\", label: \"7d\" },\n { value: \"30d\", label: \"30d\" },\n ]}\n />\n </div>\n\n <div className=\"mt-6 grid grid-cols-8 items-end gap-3 h-48 pt-4 px-2\">\n {points.map((pt) => (\n <div\n key={pt.label}\n className=\"group flex flex-col items-center gap-2 h-full justify-end\"\n >\n <div className=\"w-full flex items-end justify-center gap-1.5 h-full\">\n <div\n style={{ height: `${pt.revenue}%` }}\n className=\"w-full max-w-[18px] rounded-t-md bg-blue-600 transition-all duration-300 group-hover:bg-blue-500\"\n />\n <div\n style={{ height: `${pt.signups}%` }}\n className=\"w-full max-w-[14px] rounded-t-md bg-zinc-200 transition-all duration-300 dark:bg-zinc-700\"\n />\n </div>\n <span className=\"text-[10px] text-zinc-400\">\n {pt.label}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <ProgressMetricCard />\n\n <div className=\"rounded-xl border border-zinc-200 bg-white p-5 space-y-4 dark:border-zinc-800 dark:bg-zinc-900\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-xs font-semibold text-zinc-700 dark:text-zinc-300\">\n Recent Activity\n </h3>\n <RefreshCw className=\"h-3.5 w-3.5 text-zinc-400\" />\n </div>\n\n <div className=\"space-y-3.5\">\n {recentActivity.map((item, idx) => (\n <div\n key={item.id}\n className=\"flex items-start justify-between gap-3 text-xs\"\n >\n <div className=\"flex items-start gap-2.5\">\n <Avatar\n fallback={item.fallback}\n tint={idx % 2 === 0 ? \"blue\" : \"neutral\"}\n size=\"xs\"\n />\n <div>\n <p className=\"font-medium text-zinc-800 dark:text-zinc-200\">\n {item.title}\n </p>\n <p className=\"text-[11px] text-zinc-400\">\n {item.meta}\n </p>\n </div>\n </div>\n <span className=\"text-[10px] text-zinc-400 shrink-0\">\n {item.time}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-zinc-200 bg-white overflow-hidden dark:border-zinc-800 dark:bg-zinc-900\">\n <div className=\"flex items-center justify-between border-b border-zinc-200 px-5 py-3.5 dark:border-zinc-800\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n Top Accounts\n </h3>\n <p className=\"text-xs text-zinc-500\">\n Sorted by monthly recurring revenue\n </p>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n View all\n <ArrowUpRight className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n <div className=\"divide-y divide-zinc-200 dark:divide-zinc-800\">\n {topCustomers.map((cust, i) => (\n <div\n key={cust.name}\n className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between px-5 py-3 text-xs\"\n >\n <div className=\"flex items-center gap-3\">\n <Avatar\n fallback={cust.fallback}\n tint={i % 2 === 0 ? \"blue\" : \"neutral\"}\n size=\"sm\"\n />\n <div>\n <p className=\"font-medium text-zinc-900 dark:text-zinc-100\">\n {cust.name}\n </p>\n <p className=\"text-[11px] text-zinc-400\">{cust.domain}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-6\">\n <Badge variant=\"default\">{cust.status}</Badge>\n <div className=\"text-right\">\n <span className=\"font-semibold text-zinc-900 dark:text-zinc-100\">\n {cust.mrr}\n </span>\n <span className=\"ml-2 text-emerald-600 dark:text-emerald-400\">\n {cust.growth}\n </span>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </main>\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../utils/cn\"\nimport {\n SidebarShell,\n HeaderNavbar,\n PageHeaderBar,\n} from \"../blocks/app-shell\"\nimport { AdvancedFilterBar } from \"../blocks/filter-bar\"\nimport { EnterpriseDataTable } from \"../blocks/data-table\"\n\nexport const ControlTowerTemplate: React.FC<{ className?: string }> = ({\n className,\n}) => {\n return (\n <div\n className={cn(\n \"flex min-h-[720px] w-full overflow-hidden rounded-2xl border border-zinc-200 bg-zinc-50/40 text-zinc-900 shadow-sm dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100\",\n className\n )}\n >\n <SidebarShell activeId=\"customers\" />\n\n <div className=\"flex flex-1 flex-col min-w-0\">\n <HeaderNavbar\n breadcrumbs={[\"Workspace\", \"Customers\", \"Directory\"]}\n />\n\n <main className=\"flex-1 space-y-5 overflow-y-auto p-6\">\n <PageHeaderBar\n title=\"Customer Directory\"\n subtitle=\"Search, filter, and inspect customer subscriptions. Click any row to open the details drawer.\"\n />\n\n <AdvancedFilterBar />\n\n <EnterpriseDataTable />\n </main>\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { KeyRound, Copy, Check, Plus, Eye, EyeOff } from \"lucide-react\"\nimport { cn } from \"../utils/cn\"\nimport {\n SidebarShell,\n HeaderNavbar,\n PageHeaderBar,\n} from \"../blocks/app-shell\"\nimport {\n UserProfileFormBlock,\n SecurityPasswordFormBlock,\n TeamRbacTableBlock,\n BillingPlanCardBlock,\n} from \"../blocks/settings-blocks\"\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"../primitives/tabs\"\nimport { Badge } from \"../primitives/badge\"\nimport { Button } from \"../primitives/button\"\n\nexport const WorkspaceSettingsTemplate: React.FC<{ className?: string }> = ({\n className,\n}) => {\n const [copiedKey, setCopiedKey] = React.useState<string | null>(null)\n const [revealSecret, setRevealSecret] = React.useState(false)\n\n const apiKeys = [\n {\n id: \"key-prod\",\n name: \"Production API Key\",\n token: revealSecret\n ? \"sk_live_99482a7f10c3e81140b29d\"\n : \"sk_live_••••••••••••••••••••9d\",\n scope: \"Read & Write\",\n lastUsed: \"2 minutes ago\",\n },\n {\n id: \"key-ci\",\n name: \"CI/CD Deployment Token\",\n token: \"sk_ci_••••••••••••••••••••4a\",\n scope: \"Read-only\",\n lastUsed: \"3 hours ago\",\n },\n ]\n\n return (\n <div\n className={cn(\n \"flex min-h-[720px] w-full overflow-hidden rounded-2xl border border-zinc-200 bg-zinc-50/40 text-zinc-900 shadow-sm dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100\",\n className\n )}\n >\n <SidebarShell activeId=\"settings\" />\n\n <div className=\"flex flex-1 flex-col min-w-0\">\n <HeaderNavbar\n breadcrumbs={[\"Workspace\", \"Settings\", \"General\"]}\n />\n\n <main className=\"flex-1 space-y-6 overflow-y-auto p-6\">\n <PageHeaderBar\n title=\"Workspace Settings\"\n subtitle=\"Manage your profile, team members, billing plan, and API keys.\"\n />\n\n <Tabs defaultValue=\"general\" className=\"w-full\">\n <TabsList variant=\"underline\">\n <TabsTrigger variant=\"underline\" value=\"general\">\n Profile\n </TabsTrigger>\n <TabsTrigger variant=\"underline\" value=\"team\">\n Team\n </TabsTrigger>\n <TabsTrigger variant=\"underline\" value=\"billing\">\n Billing\n </TabsTrigger>\n <TabsTrigger variant=\"underline\" value=\"apikeys\">\n API Keys\n </TabsTrigger>\n <TabsTrigger variant=\"underline\" value=\"security\">\n Security\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"general\" className=\"pt-4\">\n <UserProfileFormBlock />\n </TabsContent>\n\n <TabsContent value=\"team\" className=\"pt-4\">\n <TeamRbacTableBlock />\n </TabsContent>\n\n <TabsContent value=\"billing\" className=\"pt-4\">\n <BillingPlanCardBlock />\n </TabsContent>\n\n <TabsContent value=\"apikeys\" className=\"pt-4\">\n <div className=\"rounded-xl border border-zinc-200 bg-white p-6 space-y-5 dark:border-zinc-800 dark:bg-zinc-900\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between border-b border-zinc-200 pb-4 dark:border-zinc-800\">\n <div>\n <h3 className=\"text-sm font-semibold text-zinc-900 dark:text-zinc-100 flex items-center gap-2\">\n <KeyRound className=\"h-4 w-4 text-blue-600 dark:text-blue-400\" />\n API Keys\n </h3>\n <p className=\"mt-1 text-xs text-zinc-500 dark:text-zinc-400\">\n Use these keys to authenticate API requests from your backend.\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setRevealSecret(!revealSecret)}\n >\n {revealSecret ? (\n <EyeOff className=\"h-3.5 w-3.5\" />\n ) : (\n <Eye className=\"h-3.5 w-3.5\" />\n )}\n {revealSecret ? \"Hide\" : \"Reveal\"}\n </Button>\n <Button variant=\"primary\" size=\"sm\">\n <Plus className=\"h-3.5 w-3.5\" />\n Create key\n </Button>\n </div>\n </div>\n\n <div className=\"divide-y divide-zinc-200 rounded-xl border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800\">\n {apiKeys.map((k) => (\n <div\n key={k.id}\n className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between p-4\"\n >\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-medium text-zinc-900 dark:text-zinc-100\">\n {k.name}\n </span>\n <Badge variant=\"default\">{k.scope}</Badge>\n </div>\n <p className=\"font-mono text-xs text-zinc-500 dark:text-zinc-400\">\n {k.token}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[11px] text-zinc-400\">\n Used {k.lastUsed}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n navigator.clipboard?.writeText(k.token)\n setCopiedKey(k.id)\n setTimeout(() => setCopiedKey(null), 1500)\n }}\n >\n {copiedKey === k.id ? (\n <Check className=\"h-3.5 w-3.5 text-emerald-500\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n {copiedKey === k.id ? \"Copied\" : \"Copy\"}\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"security\" className=\"pt-4\">\n <SecurityPasswordFormBlock />\n </TabsContent>\n </Tabs>\n </main>\n </div>\n </div>\n )\n}\n"],"mappings":"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","names":["jsx","jsxs","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","jsx","jsxs","React","cva","X","jsx","jsxs","cva","X","React","jsx","jsxs","ButtonGroup","ToggleGroup","React","ChevronRight","jsx","jsxs","ChevronRight","React","jsx","React","X","jsx","jsxs","Chip","X","React","X","jsx","CloseButton","X","React","jsx","jsxs","React","Check","jsx","jsxs","Check","React","Search","jsx","jsxs","Search","React","jsx","jsxs","React","ChevronLeft","ChevronRight","jsx","jsxs","ChevronLeft","ChevronRight","React","PopoverPrimitive","FileText","ChevronLeft","ChevronRight","React","jsx","jsxs","jsx","jsxs","React","DialogPrimitive","X","ChevronDown","ChevronRight","ArrowRight","ChevronLeft","jsx","jsxs","X","jsx","jsxs","React","DialogPrimitive","X","jsx","jsxs","X","React","jsx","jsxs","ContextMenuBox","React","UploadCloud","FileText","CheckCircle2","Trash2","jsx","jsxs","UploadCloud","FileText","CheckCircle2","Trash2","React","jsx","React","jsx","jsxs","Label","React","ChevronLeft","ChevronRight","jsx","jsxs","ChevronLeft","ChevronRight","React","PopoverPrimitive","jsx","jsx","jsxs","React","PopoverPrimitive","Check","ChevronDown","Search","ChevronsUpDown","jsx","jsxs","ChevronDown","Check","Combobox","ChevronsUpDown","Search","jsx","jsxs","jsx","jsxs","React","CheckboxPrimitive","Check","jsx","jsxs","Checkbox","Check","React","jsx","React","cva","jsx","cva","React","jsx","Textarea","CheckCircle2","X","jsx","jsxs","CheckCircle2","X","React","PopoverPrimitive","jsx","PopoverContent","jsx","React","jsx","jsxs","React","Users","Settings","Search","ChevronRight","ChevronDown","BarChart3","Fragment","jsx","jsxs","BarChart3","Users","Settings","ChevronDown","ChevronRight","Search","ArrowUpRight","jsx","jsxs","ArrowUpRight","React","Search","X","List","jsx","jsxs","Search","List","X","React","Search","Trash2","ChevronLeft","ChevronRight","SlidersHorizontal","Fragment","jsx","jsxs","Search","SlidersHorizontal","Checkbox","Trash2","ChevronLeft","ChevronRight","React","CreditCard","Check","jsx","jsxs","Label","CreditCard","Check","React","ArrowUpRight","jsx","jsxs","ArrowUpRight","jsx","jsxs","React","Copy","Check","Plus","Eye","jsx","jsxs","Eye","Plus","Check","Copy"]}