@assure-one/design-system 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +121 -18
- package/dist/index.js +717 -190
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.js +1 -0
- package/dist/tokens/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tokens/reference.ts","../src/tokens/system.ts","../src/lib/cn.ts","../src/primitives/icons.tsx","../src/primitives/accordion.tsx","../src/primitives/alert-dialog.tsx","../src/primitives/alert.tsx","../src/primitives/aspect-ratio.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/blockquote.tsx","../src/primitives/breadcrumb.tsx","../src/primitives/button.tsx","../src/primitives/calendar.tsx","../src/primitives/card.tsx","../src/primitives/checkbox.tsx","../src/primitives/select.tsx","../src/primitives/client-select.tsx","../src/primitives/collapsible.tsx","../src/primitives/coming-soon.tsx","../src/primitives/dialog.tsx","../src/primitives/command-palette.tsx","../src/primitives/confirm-action-button.tsx","../src/primitives/context-menu.tsx","../src/primitives/copy-button.tsx","../src/primitives/popover.tsx","../src/primitives/date-picker.tsx","../src/primitives/dropdown-menu.tsx","../src/primitives/empty-state.tsx","../src/primitives/file-upload.tsx","../src/primitives/form-message.tsx","../src/primitives/hover-card.tsx","../src/primitives/input.tsx","../src/primitives/keyboard-shortcuts-dialog.tsx","../src/primitives/label.tsx","../src/primitives/link-button.tsx","../src/primitives/logo.tsx","../src/primitives/multi-filter-pill.tsx","../src/primitives/multi-select-field.tsx","../src/primitives/otp-input.tsx","../src/primitives/pagination.tsx","../src/lib/phone.ts","../src/primitives/phone-input.tsx","../src/primitives/progress-bar.tsx","../src/primitives/progress-ring.tsx","../src/primitives/radio-group.tsx","../src/primitives/scroll-area.tsx","../src/hooks/use-debounce.ts","../src/primitives/search-input.tsx","../src/primitives/search-select.tsx","../src/primitives/section-header.tsx","../src/primitives/section.tsx","../src/primitives/separator.tsx","../src/primitives/sheet.tsx","../src/primitives/side-drawer.tsx","../src/primitives/skeleton.tsx","../src/primitives/slider.tsx","../src/primitives/star-rating.tsx","../src/primitives/stat.tsx","../src/primitives/stepper.tsx","../src/primitives/submit-button.tsx","../src/primitives/switch.tsx","../src/primitives/table.tsx","../src/primitives/tabs.tsx","../src/primitives/team-member-select.tsx","../src/primitives/textarea.tsx","../src/primitives/toast.tsx","../src/primitives/toggle-group.tsx","../src/primitives/tooltip.tsx","../src/primitives/visually-hidden.tsx","../src/composites/shell.tsx","../src/composites/sidebar.tsx","../src/composites/app-header.tsx","../src/composites/page-header.tsx","../src/composites/data-table.tsx","../src/composites/detail.tsx","../src/composites/activity-list.tsx","../src/composites/kanban.tsx","../src/composites/toolbar.tsx","../src/composites/intent-actions.tsx","../src/composites/intent-atoms.tsx"],"names":["React","Accordion","jsx","AccordionItem","AccordionTrigger","jsxs","AccordionContent","React2","forwardRef","Alert","AlertTitle","AlertDescription","React3","AspectRatio","cva","React4","Avatar","Badge","Blockquote","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","Button","React5","Icon","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","React6","Checkbox","React7","React9","Collapsible","CollapsibleTrigger","CollapsibleContent","ComingSoon","React10","React11","DialogPrimitive2","CommandPrimitive","React12","CopyButton","useState","useCallback","React14","DatePicker","useId","React15","EmptyState","useRef","React16","Input","kbdClass","React17","Label","React18","LinkButton","Link","Image","Fragment","React20","OTPInputRoot","Pagination","PhoneInput","ProgressBar","ProgressRing","RadioGroup","React22","RadioGroupItem","React23","ScrollArea","ScrollBar","useEffect","React24","SearchInput","React25","Section","SectionHead","Separator","React26","React27","SheetPrimitive","DialogPrimitive3","Skeleton","SkeletonText","SkeletonCircle","React29","Slider","StarRating","Stat","Stepper","SubmitButton","React30","Switch","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","React31","Tabs","TabsList","TabsTrigger","TabsContent","React32","Textarea","createContext","useMemo","React33","ToggleGroup","ToggleGroupItem","React34","VisuallyHidden","Shell","Main","Content","Sidebar","SidebarBrand","SidebarSection","SidebarLink","Slot","SidebarLinkBadge","SidebarFooter","SidebarUser","AppHeader","AppHeaderBreadcrumb","AppHeaderTitle","AppHeaderSearch","AppHeaderActions","PageHeader","PageHeaderSpec","PageHeaderSep","DataTable","DataTableToolbar","DataTableSearch","DataTableSpacer","DataTableResultsCount","DataTableHead","DataTableBody","DataTableRow","DataTableHeader","DataTableCell","DataTableCellName","DataTableCellMono","DataTableCellId","DataTableCellDue","DataTableCheckbox","DataTablePagination","DetailGrid","DetailSpine","DetailSpineHeader","DetailSpineSection","DetailSpineStats","DetailMain","ActivityList","ActivityItem","Kanban","KanbanColumn","KanbanCard","Toolbar","FilterChip","PrimaryAction","SecondaryAction","DangerAction","IconAction","LinkAction","Numeric","MutedSpec","Eyebrow","KbdHint"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Reference tokens — Assure Pro raw palette.\n *\n * Programmatic access for theme switching, Figma sync, design tools, etc.\n * Components should NOT consume these directly; use system tokens (./system.ts)\n * or the CSS variables in ./tokens.css.\n *\n * Source: assure-pro-spec/mockups/_shared.css\n */\n\nexport const colors = {\n /* Surfaces */\n bg: \"#FDFDFC\",\n bg2: \"#F7F7F5\",\n bg3: \"#F0F0ED\",\n surface: \"#FFFFFF\",\n surface2: \"#FAFAF8\",\n\n /* Foreground */\n fg: \"#0A0A0A\",\n fg2: \"#38383B\",\n fg3: \"#6B6B70\",\n fg4: \"#9A9AA0\",\n fg5: \"#C4C4C8\",\n\n /* Rules */\n rule: \"#EAEAE6\",\n ruleSoft: \"#F0F0EC\",\n ruleStrong: \"#DADAD4\",\n\n /* Accent (cyan) */\n accent: \"#0066FF\",\n accent2: \"#0052CC\",\n accentTint: \"#E8F0FF\",\n accentHover: \"#005BE6\",\n accentActive: \"#004FCC\",\n\n /* Pro (purple) */\n proBg: \"#F4F1FF\",\n proBgHover: \"#EEE9FF\",\n proBgActive: \"#E4DDFF\",\n proFg: \"#6C42F8\",\n proHover: \"#5E35F2\",\n proActive: \"#5127E8\",\n proDisabled: \"#B7A7F3\",\n proLine: \"#7B5BD8\",\n\n /* Disabled */\n fgDisabled: \"#A7A7AC\",\n bgDisabled: \"#F3F3F1\",\n\n /* Status */\n successFg: \"#1F7A3D\",\n successBg: \"#EAF6EE\",\n successLine: \"#C5E5CF\",\n warningFg: \"#B45F0A\",\n warningBg: \"#FFF3E5\",\n warningLine: \"#F5D5A8\",\n dangerFg: \"#C43838\",\n dangerBg: \"#FBEAEA\",\n dangerLine: \"#ECC5C5\",\n\n /* On-brand */\n fgOnAccent: \"#FFFFFF\",\n fgOnPro: \"#FFFFFF\",\n} as const;\n\nexport const typography = {\n family: {\n display: '\"Geist\", \"Inter\", -apple-system, system-ui, sans-serif',\n body: '\"Inter\", -apple-system, system-ui, sans-serif',\n mono: '\"Geist Mono\", \"JetBrains Mono\", ui-monospace, monospace',\n },\n weight: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n /* Universal entrance ease — applies to every motion primitive */\n ease: \"cubic-bezier(0.2, 0.8, 0.2, 1)\",\n} as const;\n\nexport const radii = {\n btn: \"7px\",\n input: \"7px\",\n pill: \"5px\",\n card: \"12px\",\n icon: \"4px\",\n full: \"9999px\",\n} as const;\n\nexport const shadows = {\n quiet: \"0 1px 2px rgba(10,10,10,0.03)\",\n card: \"0 12px 28px -16px rgba(10,10,10,0.18), 0 1px 2px rgba(10,10,10,0.04)\",\n pop: \"0 30px 80px -30px rgba(10,10,10,0.18), 0 8px 24px -8px rgba(10,10,10,0.06)\",\n focusRing: \"0 0 0 2px rgba(0, 102, 255, 0.18)\",\n} as const;\n\nexport const overlays = {\n hover: \"rgba(10, 10, 10, 0.03)\",\n active: \"rgba(10, 10, 10, 0.05)\",\n} as const;\n\nexport const layout = {\n shellSidebarWidth: \"256px\",\n shellHeaderHeight: \"56px\",\n contentPad: \"32px\",\n} as const;\n\n/**\n * Spacing — 4px base scale. Assure Pro uses arbitrary values in most cases;\n * this scale is exposed for programmatic access (e.g. design-tool sync).\n */\nexport const spacing = {\n unit: \"4px\",\n 4: \"4px\",\n 8: \"8px\",\n 12: \"12px\",\n 16: \"16px\",\n 20: \"20px\",\n 24: \"24px\",\n 28: \"28px\",\n 32: \"32px\",\n 36: \"36px\",\n 40: \"40px\",\n 64: \"64px\",\n 80: \"80px\",\n 180: \"180px\",\n} as const;\n\n/**\n * Surface palette — the four canonical layers. Mirrors --color-bg / -2 /\n * --color-surface / --color-surface-2.\n */\nexport const surfaces = {\n bg: \"#FDFDFC\",\n bg2: \"#F7F7F5\",\n surface: \"#FFFFFF\",\n surface2: \"#FAFAF8\",\n} as const;\n\nexport const motion = {\n ease: {\n outQuart: \"cubic-bezier(0.2, 0.8, 0.2, 1)\",\n out: \"cubic-bezier(0.16, 1, 0.3, 1)\",\n in: \"cubic-bezier(0.7, 0, 0.84, 0)\",\n inOut: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n },\n duration: {\n instant: \"100ms\",\n fast: \"150ms\",\n normal: \"250ms\",\n slow: \"400ms\",\n },\n} as const;\n\nexport const reference = {\n colors,\n typography,\n radii,\n shadows,\n overlays,\n layout,\n motion,\n spacing,\n surfaces,\n} as const;\n\nexport type ReferenceTokens = typeof reference;\nexport type ColorName = keyof typeof colors;\n","/**\n * System tokens — Assure Pro semantic mappings as CSS variable references.\n *\n * Use these from JS (e.g. inline styles, Storybook decorators, motion configs)\n * when you can't use a Tailwind utility class. Component CSS should prefer the\n * generated utilities (`bg-bg`, `text-fg-2`, `border-rule`, `bg-pro-fg`, etc.)\n * which Tailwind 4 emits from `--color-*` tokens declared in ./tokens.css.\n *\n * Themes (.dark) re-map the underlying CSS variables; these references stay valid.\n */\n\nexport const systemTokens = {\n color: {\n /* Surfaces */\n bg: \"var(--color-bg)\",\n bg2: \"var(--color-bg-2)\",\n bg3: \"var(--color-bg-3)\",\n surface: \"var(--color-surface)\",\n surface2: \"var(--color-surface-2)\",\n\n /* Foreground */\n fg: \"var(--color-fg)\",\n fg2: \"var(--color-fg-2)\",\n fg3: \"var(--color-fg-3)\",\n fg4: \"var(--color-fg-4)\",\n fg5: \"var(--color-fg-5)\",\n\n /* Rules */\n rule: \"var(--color-rule)\",\n ruleSoft: \"var(--color-rule-soft)\",\n ruleStrong: \"var(--color-rule-strong)\",\n\n /* Accent (cyan) */\n accent: \"var(--color-accent)\",\n accent2: \"var(--color-accent-2)\",\n accentTint: \"var(--color-accent-tint)\",\n accentHover: \"var(--color-accent-hover)\",\n accentActive: \"var(--color-accent-active)\",\n accentRing: \"var(--color-accent-ring)\",\n\n /* Pro (purple) */\n proBg: \"var(--color-pro-bg)\",\n proBgHover: \"var(--color-pro-bg-hover)\",\n proBgActive: \"var(--color-pro-bg-active)\",\n proFg: \"var(--color-pro-fg)\",\n proHover: \"var(--color-pro-hover)\",\n proActive: \"var(--color-pro-active)\",\n proDisabled: \"var(--color-pro-disabled)\",\n proLine: \"var(--color-pro-line)\",\n proRing: \"var(--color-pro-ring)\",\n\n /* On-brand */\n fgOnAccent: \"var(--color-fg-on-accent)\",\n fgOnPro: \"var(--color-fg-on-pro)\",\n\n /* Disabled */\n fgDisabled: \"var(--color-fg-disabled)\",\n bgDisabled: \"var(--color-bg-disabled)\",\n\n /* Overlays */\n overlayHover: \"var(--color-overlay-hover)\",\n overlayActive: \"var(--color-overlay-active)\",\n\n /* Status */\n successFg: \"var(--color-success-fg)\",\n successBg: \"var(--color-success-bg)\",\n successLine: \"var(--color-success-line)\",\n warningFg: \"var(--color-warning-fg)\",\n warningBg: \"var(--color-warning-bg)\",\n warningLine: \"var(--color-warning-line)\",\n dangerFg: \"var(--color-danger-fg)\",\n dangerBg: \"var(--color-danger-bg)\",\n dangerLine: \"var(--color-danger-line)\",\n },\n\n shadow: {\n quiet: \"var(--shadow-quiet)\",\n card: \"var(--shadow-card)\",\n pop: \"var(--shadow-pop)\",\n focusRing: \"var(--shadow-focus-ring)\",\n },\n\n radius: {\n btn: \"var(--radius-btn)\",\n input: \"var(--radius-input)\",\n pill: \"var(--radius-pill)\",\n card: \"var(--radius-card)\",\n icon: \"var(--radius-icon)\",\n full: \"var(--radius-full)\",\n },\n\n type: {\n family: {\n display: \"var(--font-display)\",\n body: \"var(--font-body)\",\n mono: \"var(--font-mono)\",\n },\n weight: {\n regular: \"var(--font-weight-regular)\",\n medium: \"var(--font-weight-medium)\",\n semibold: \"var(--font-weight-semibold)\",\n bold: \"var(--font-weight-bold)\",\n },\n },\n\n motion: {\n ease: {\n outQuart: \"var(--ease-out-quart)\",\n out: \"var(--ease-out)\",\n in: \"var(--ease-in)\",\n inOut: \"var(--ease-in-out)\",\n },\n duration: {\n instant: \"var(--duration-instant)\",\n fast: \"var(--duration-fast)\",\n normal: \"var(--duration-normal)\",\n slow: \"var(--duration-slow)\",\n },\n },\n\n layout: {\n shellSidebarWidth: \"var(--shell-sidebar-w)\",\n shellHeaderHeight: \"var(--shell-header-h)\",\n contentPad: \"var(--content-pad)\",\n },\n\n z: {\n base: \"var(--z-base)\",\n dropdown: \"var(--z-dropdown)\",\n sticky: \"var(--z-sticky)\",\n overlay: \"var(--z-overlay)\",\n modal: \"var(--z-modal)\",\n toast: \"var(--z-toast)\",\n tooltip: \"var(--z-tooltip)\",\n },\n} as const;\n\nexport type SystemTokens = typeof systemTokens;\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cn } from \"../lib/cn\";\n\ninterface IconProps extends React.SVGAttributes<SVGElement> {\n size?: number;\n}\n\nfunction Icon({\n size = 24,\n className,\n children,\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\"shrink-0\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n {children}\n </svg>\n );\n}\n\nexport function DocumentIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n fill=\"currentColor\"\n opacity=\"0.2\"\n />\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M8 13h8M8 17h8M8 9h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowRightIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 12h14M12 5l7 7-7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function StarIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2l2.09 6.26L20.18 9l-5 4.36L16.82 20 12 16.77 7.18 20l1.64-6.64-5-4.36 6.09-.74L12 2z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n\nexport function SparkleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2l2.09 6.26L20.18 9l-5 4.36L16.82 20 12 16.77 7.18 20l1.64-6.64-5-4.36 6.09-.74L12 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChatBubbleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LightningIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M13 2L3 14h9l-1 8 10-12h-9l1-8z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UsersIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2M9 11a4 4 0 100-8 4 4 0 000 8zM23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FileTextIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M16 13H8M16 17H8M10 9H8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ShieldIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MenuIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12h18M3 6h18M3 18h18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CloseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function CheckIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutDashboardIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"9\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"12\" width=\"7\" height=\"9\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"16\" width=\"7\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function BuildingIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 22V4a2 2 0 012-2h8a2 2 0 012 2v18M2 22h20M10 6h4M10 10h4M10 14h4M10 18h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MapPinIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 1116 0z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"10\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function FileReturnIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M9 15l3-3 3 3M12 12v6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ClipboardCheckIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <rect x=\"9\" y=\"2\" width=\"6\" height=\"4\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M9 14l2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderOpenIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2l-2.5-7a2 2 0 00-2-1.5H5.5A2 2 0 003.5 10L2 17a2 2 0 002 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ReceiptIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M4 2v20l3-2 3 2 3-2 3 2 3-2 3 2V2l-3 2-3-2-3 2-3-2-3 2-3-2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M8 10h8M8 14h4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function CalendarIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 2v4M8 2v4M3 10h18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BarChartIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 20V10M18 20V4M6 20v-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SettingsIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PanelLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M9 3v18\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function PanelLeftCloseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M9 3v18\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M15 9l-3 3 3 3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SunIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TeamIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 21v-2a4 4 0 00-4-4H10a4 4 0 00-4 4v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"7\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M22 11h-4M20 9v4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function MoonIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PaletteIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"13.5\" cy=\"6.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"17.5\" cy=\"10.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"8.5\" cy=\"7.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"6.5\" cy=\"12.5\" r=\"1.5\" fill=\"currentColor\" />\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.04-.23-.29-.38-.63-.38-1.04 0-.83.67-1.5 1.5-1.5H16c3.31 0 6-2.69 6-6 0-5.5-4.5-9.92-10-9.92z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MailIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M22 7l-10 6L2 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function GlobeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BellIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 8A6 6 0 106 8c0 7-3 9-3 9h18s-3-2-3-9zM13.73 21a2 2 0 01-3.46 0\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function WorkflowIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"15\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"9\" y=\"15\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M6 9v3a3 3 0 003 3h6a3 3 0 003-3V9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path d=\"M12 12v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function LinkIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function KeyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.778 7.778 5.5 5.5 0 017.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SearchIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M21 21l-4.35-4.35\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function LogOutIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4M16 17l5-5-5-5M21 12H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TagIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12.586 2.586A2 2 0 0011.172 2H4a2 2 0 00-2 2v7.172a2 2 0 00.586 1.414l8.704 8.704a2.426 2.426 0 003.42 0l6.58-6.58a2.426 2.426 0 000-3.42z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </Icon>\n );\n}\n\nexport function SendIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14.536 21.686a.5.5 0 00.937-.024l6.5-19a.496.496 0 00-.635-.635l-19 6.5a.5.5 0 00-.024.937l7.93 3.18a2 2 0 011.112 1.11z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M21.854 2.147l-10.94 10.939\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TrashIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 6h18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Link2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 17H7A5 5 0 017 7h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 7h2a5 5 0 110 10h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n x2=\"16\"\n y1=\"12\"\n y2=\"12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronUpIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m18 15-6-6-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m6 9 6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PlusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 5v14M5 12h14\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UserCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 20.662V19a2 2 0 012-2h6a2 2 0 012 2v1.662\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PencilIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PhoneIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderClosedIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 20a2 2 0 002-2V8a2 2 0 00-2-2h-7.9a2 2 0 01-1.69-.9L9.6 3.9A2 2 0 007.93 3H4a2 2 0 00-2 2v13a2 2 0 002 2h16z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UploadIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function DownloadIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MoreHorizontalIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n </Icon>\n );\n}\n\nexport function ChevronRightIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m9 18 6-6-6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m15 18-6-6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FileIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function RotateCcwIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12a9 9 0 109-9 9.75 9.75 0 00-6.74 2.74L3 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3 3v5h5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function EyeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7S2 12 2 12z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function ClockIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 6v6h4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutListIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M14 4h7M14 9h7M14 15h7M14 20h7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutGridIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function LockIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 11V7a5 5 0 0110 0v4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderPlusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 20a2 2 0 002-2V8a2 2 0 00-2-2h-7.9a2 2 0 01-1.69-.9L9.6 3.9A2 2 0 007.93 3H4a2 2 0 00-2 2v13a2 2 0 002 2h16z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 10v6M9 13h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MoveIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 9l-3 3 3 3M9 5l3-3 3 3M15 19l-3 3-3-3M19 9l3 3-3 3M2 12h20M12 2v20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LockKeyholeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" />\n <rect x=\"3\" y=\"10\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 10V7a5 5 0 0110 0v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PaperclipIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function AtSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 8v5a3 3 0 006 0v-1a10 10 0 10-4 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ZoomInIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M21 21l-4.35-4.35M11 8v6M8 11h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ZoomOutIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M21 21l-4.35-4.35M8 11h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function XIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function MessageCircleWarningIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 8v4M12 16h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FlagIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LockOpenIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect\n width=\"18\"\n height=\"11\"\n x=\"3\"\n y=\"11\"\n rx=\"2\"\n ry=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M7 11V7a5 5 0 0 1 9.9-1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MessageCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PenSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 3a2.83 2.83 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CopyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect\n x=\"9\"\n y=\"9\"\n width=\"13\"\n height=\"13\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n />\n <path\n d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n />\n </Icon>\n );\n}\n\nexport function MonitorIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 21h8M12 17v4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SmartphoneIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"6\" y=\"2\" width=\"12\" height=\"20\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 18h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function AlertTriangleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"9\"\n x2=\"12\"\n y2=\"13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"17\"\n x2=\"12.01\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowRightSmallIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 12h14M12 5l7 7-7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 12H5M12 19l-7-7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CreditCardIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3 10h18\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M7 15h3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\n/* ─── Icons added in 0.3.0 — single-source migration off lucide-react ────\n * Visual fidelity preserved by porting lucide-react's SVG paths into the\n * catalog's shared `<Icon>` wrapper (24×24 viewBox + currentColor +\n * strokeWidth=1.5 baseline). Names keep the lucide convention with the\n * catalog's `Icon` suffix appended so they compose with the rest of the\n * catalog (e.g. lucide `<Check />` → catalog `<CheckIcon />`).\n * ────────────────────────────────────────────────────────────────────── */\n\nexport function AlertCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 8v4M12 16h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 5v14M19 12l-7 7-7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowUpIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 19V5M5 12l7-7 7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BriefcaseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Building2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 22V4a2 2 0 012-2h8a2 2 0 012 2v18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 12H4a2 2 0 00-2 2v6a2 2 0 002 2h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 9h2a2 2 0 012 2v9a2 2 0 01-2 2h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 6h4M10 10h4M10 14h4M10 18h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CheckCircle2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"m9 12 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronsUpDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m7 15 5 5 5-5M7 9l5-5 5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function CircleDotIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n </Icon>\n );\n}\n\nexport function CommandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 3a3 3 0 00-3 3v12a3 3 0 003 3 3 3 0 003-3 3 3 0 00-3-3H6a3 3 0 00-3 3 3 3 0 003 3 3 3 0 003-3V6a3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3h12a3 3 0 003-3 3 3 0 00-3-3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CornerDownLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m9 10-5 5 5 5M20 4v7a4 4 0 01-4 4H4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function EyeOffIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9.88 9.88a3 3 0 104.24 4.24M10.73 5.08A10.43 10.43 0 0112 5c7 0 10 7 10 7a13.16 13.16 0 01-1.67 2.68M6.61 6.61A13.526 13.526 0 002 12s3 7 10 7a9.74 9.74 0 005.39-1.61M2 2l20 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function HomeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m3 9 9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9 22V12h6v10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function InboxIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M22 12h-6l-2 3h-4l-2-3H2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.45 5.11 2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListChecksIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m3 17 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"m3 7 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13 6h8M13 12h8M13 18h8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MinusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M5 12h14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function SlashIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M22 2 2 22\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function SparklesIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m12 3-1.91 5.79a2 2 0 01-1.3 1.3L3 12l5.79 1.91a2 2 0 011.3 1.3L12 21l1.91-5.79a2 2 0 011.3-1.3L21 12l-5.79-1.91a2 2 0 01-1.3-1.3L12 3Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5 3v4M3 5h4M19 17v4M17 19h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Trash2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M3 6h18\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path\n d=\"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"10\"\n y1=\"11\"\n x2=\"10\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"14\"\n y1=\"11\"\n x2=\"14\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UserIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"7\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\n/* ───────────────────────────────────────────────────────────────────────\n * Round 10 additions (lighttaxes-claude ask) — 17 net-additive exports\n * grouped by tier. Same 24-grid / currentColor / stroke-1.5 baseline as\n * the rest of the catalog. Brand icons (Google, Microsoft) are the only\n * exception: multi-color paths with explicit fills, contract documented\n * on each export.\n * ─────────────────────────────────────────────────────────────────────── */\n\n// Tier A — rich-text editor toolbar (Bold uses the canonical stroke-2 lucide\n// path because the lobes need the heavier weight to read at editor-bar size).\n\nexport function BoldIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 4h8a4 4 0 014 4 4 4 0 01-4 4H6zM6 12h9a4 4 0 014 4 4 4 0 01-4 4H6z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ItalicIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 4h-9M14 20H5M15 4L9 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UnderlineIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 3v7a6 6 0 006 6 6 6 0 006-6V3M4 21h16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function StrikethroughIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M16 4H9a3 3 0 000 6h6a3 3 0 010 6H8M4 12h16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListOrderedIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10 6h11M10 12h11M10 18h11\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 6h1v4M3 10h3M6 18H3l3-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier B — semantic gaps (Info, HelpCircle, DollarSign, Reply). InfoIcon\n// is intentionally the inverse-glyph sibling of AlertCircleIcon: same\n// circle, dot up + line down (lowercase \"i\") vs. line up + dot down\n// (exclamation). Consumers had been conflating the two.\n\nexport function InfoIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 16v-4M12 8h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function HelpCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function DollarSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2v20M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ReplyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 17l-5-5 5-5M4 12h12a4 4 0 010 8h-1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier C — view-switcher trio. WorkflowIcon already in catalog;\n// LayoutGridIcon / LayoutListIcon kept untouched per ask.\n\nexport function KanbanIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"10\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"17\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function TableIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9h18M3 15h18M9 3v18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier D — misc. SortAsc ask intentionally NOT added: same glyph as the\n// existing ArrowUpIcon (M12 19V5 M5 12l7-7 7 7 ≡ M12 5v14 M5 12l7-7 7 7).\n// Consumer rotates ArrowUpIcon 180° for descending — same as the original\n// SortAsc plan would have required.\n\nexport function HistoryIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5M12 7v5l4 2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SaveIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M17 21v-8H7v8M7 3v5h8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n/**\n * LoaderIcon — animated spinner. Render with `className=\"animate-spin\"`\n * (or `motion-safe:animate-spin` if you want to respect `prefers-reduced-\n * motion`; the catalog doesn't gate this itself because the spinner IS\n * the indicator for many flows).\n *\n * Visual contract: a dim full-circle ring + a brighter quarter-arc on top.\n * When rotated, the bright arc creates the \"leading edge\" of the spinner.\n */\nexport function LoaderIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeOpacity={0.25}\n />\n <path\n d=\"M4 12a8 8 0 018-8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier E — brand icons (multi-color, brand-locked). These DO NOT respond\n// to `currentColor` or `color-*` token classes — that's by design. Use\n// only inside OAuth buttons, integration chips, and provider-list UIs.\n// All other \"icon\" usages should stay in the semantic catalog above.\n// Suffixed `BrandIcon` to make the different contract obvious at the\n// call site.\n\n/**\n * GoogleBrandIcon — Google four-color \"G\" mark. Brand-locked colors,\n * does NOT respond to currentColor. Use only in provider-list UIs\n * (OAuth buttons, integration chips). Standard 24-grid.\n */\nexport function GoogleBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n fill=\"#4285F4\"\n d=\"M22 12.27c0-.71-.06-1.4-.18-2.07H12v3.93h5.59a4.78 4.78 0 01-2.07 3.14v2.6h3.34c1.95-1.8 3.08-4.45 3.08-7.6z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 22.5c2.81 0 5.16-.93 6.88-2.52l-3.34-2.6c-.93.62-2.11.99-3.54.99-2.72 0-5.03-1.84-5.86-4.31H2.69v2.69A10.5 10.5 0 0012 22.5z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M6.14 14.06A6.3 6.3 0 015.8 12c0-.71.12-1.4.34-2.06V7.25H2.69A10.5 10.5 0 001.5 12c0 1.7.41 3.3 1.19 4.75l3.45-2.69z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.63c1.53 0 2.91.53 4 1.56l3-3C17.16 2.47 14.8 1.5 12 1.5A10.5 10.5 0 002.69 7.25l3.45 2.69C7 7.47 9.28 5.63 12 5.63z\"\n />\n </Icon>\n );\n}\n\n/**\n * MicrosoftBrandIcon — Microsoft four-square mark in red / green / blue /\n * yellow. Brand-locked colors, does NOT respond to currentColor. Use\n * inside Microsoft OAuth signin buttons, Outlook / Office integration\n * chips, and similar provider-list UIs. Standard 24-grid (10×10 squares\n * with 2u gaps).\n */\nexport function MicrosoftBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </Icon>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronDownIcon } from \"./icons\";\n/* -------------------------------------------------------------------------- */\n/* Accordion root */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\n\nexport const Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionProps\n>(function Accordion({ className, ...props }, ref) {\n return (\n <AccordionPrimitive.Root\n ref={ref}\n className={cn(\"divide-rule divide-y\", className)}\n {...props}\n />\n );\n});\nAccordion.displayName = AccordionPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionItem */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionItemProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>;\n\nexport const AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemProps\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item ref={ref} className={cn(className)} {...props} />;\n});\nAccordionItem.displayName = AccordionPrimitive.Item.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionTrigger */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionTriggerProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>;\n\nexport const AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerProps\n>(function AccordionTrigger({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"group text-fg flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg-2\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\"\n aria-hidden=\"true\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionContent */\n/* Uses Radix's --radix-accordion-content-height CSS var for smooth open/close */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionContentProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>;\n\nexport const AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentProps\n>(function AccordionContent({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"text-fg-2 overflow-hidden text-sm\",\n \"data-[state=closed]:animate-[accordion-up_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"data-[state=open]:animate-[accordion-down_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"motion-reduce:animate-none\",\n )}\n {...props}\n >\n <div className={cn(\"pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * AlertDialog — Radix UI alert-dialog primitive, Assure Pro skin.\n *\n * Public API preserved (every export exists with at least the same\n * call-site shape as the prior hand-rolled implementation):\n * AlertDialog, AlertDialogTrigger, AlertDialogContent,\n * AlertDialogHeader, AlertDialogTitle, AlertDialogDescription,\n * AlertDialogFooter, AlertDialogAction, AlertDialogCancel\n *\n * NEW (additive): AlertDialogPortal, AlertDialogOverlay are exported\n * for advanced composition (matches shadcn convention).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst AlertDialog = AlertDialogPrimitive.Root;\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full max-w-lg\",\n \"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto\",\n \"rounded-card border-rule bg-surface shadow-pop border p-6\",\n \"font-body text-fg\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:-translate-y-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"mb-4 flex flex-col gap-1.5\", className)} {...props} />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-fg-3 text-sm\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(\n \"rounded-btn inline-flex h-10 items-center justify-center px-4 text-sm font-medium whitespace-nowrap\",\n \"bg-destructive text-destructive-foreground transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-destructive/90\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, children, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n \"rounded-btn border-rule-strong bg-surface inline-flex h-10 items-center justify-center border px-4 text-sm font-medium whitespace-nowrap\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n >\n {children ?? \"Cancel\"}\n </AlertDialogPrimitive.Cancel>\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Alert — inline banner. Variants align with the three Assure status families\n * (success, warning, danger) plus a cyan-accent `info` (per spec §3 — three\n * statuses, not five).\n */\nexport const alertVariants = cva(\n cn(\n \"flex items-center gap-3 rounded-card border p-4\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n info: \"bg-accent-tint border-[color:var(--color-accent-tint)] text-accent-2 [&_svg]:text-accent-2\",\n success: \"bg-success-bg border-success-line text-success-fg [&_svg]:text-success-fg\",\n warning: \"bg-warning-bg border-warning-line text-warning-fg [&_svg]:text-warning-fg\",\n destructive: \"bg-danger-bg border-danger-line text-danger-fg [&_svg]:text-danger-fg\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n },\n);\n\nconst variantIcons = {\n info: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7v4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n success: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M5.5 8l2 2 3.5-3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n warning: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M7.13 2.5a1 1 0 011.74 0l5.5 9.5A1 1 0 0113.5 13.5h-11a1 1 0 01-.87-1.5l5.5-9.5z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path d=\"M8 6v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n destructive: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M5.5 5.5l5 5M10.5 5.5l-5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n} as const;\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { variant = \"info\", children, className, ...props },\n ref,\n) {\n const v = variant ?? \"info\";\n return (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant: v }), className)} {...props}>\n <span className=\"shrink-0\">{variantIcons[v]}</span>\n <div className=\"flex-1\">{children}</div>\n </div>\n );\n});\n\nAlert.displayName = \"Alert\";\n\nexport const AlertTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function AlertTitle({ className, children, ...props }, ref) {\n return (\n <h4 ref={ref} className={cn(\"text-sm leading-tight font-semibold\", className)} {...props}>\n {children}\n </h4>\n );\n },\n);\n\nAlertTitle.displayName = \"AlertTitle\";\n\nexport const AlertDescription = forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(function AlertDescription({ className, ...props }, ref) {\n return <p ref={ref} className={cn(\"text-sm opacity-90\", className)} {...props} />;\n});\n\nAlertDescription.displayName = \"AlertDescription\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nimport { cn } from \"../lib/cn\";\n\ninterface AspectRatioProps extends React.ComponentPropsWithoutRef<\n typeof AspectRatioPrimitive.Root\n> {\n ratio?: number;\n children: React.ReactNode;\n}\n\nexport const AspectRatio = React.forwardRef<\n React.ElementRef<typeof AspectRatioPrimitive.Root>,\n AspectRatioProps\n>(function AspectRatio({ className, ratio = 16 / 9, ...props }, ref) {\n return (\n <AspectRatioPrimitive.Root\n ref={ref}\n ratio={ratio}\n className={cn(\"overflow-hidden\", className)}\n {...props}\n />\n );\n});\nAspectRatio.displayName = AspectRatioPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Sizing + status */\n/* */\n/* Per spec §5.22: */\n/* - `initials` (default): bg-bg-3 + text-fg-2, 500 medium, no border. */\n/* Use for client/contact/anonymous initials — the most common case. */\n/* - `branded`: bg-pro-bg + text-pro-fg + D8CFFF rule. Reserved for firm */\n/* members (the logged-in user, team-member assignment cells). */\n/* - `image`: the variant is irrelevant when `src` is provided; the image */\n/* covers the fallback. */\n/* -------------------------------------------------------------------------- */\n\nconst avatarVariants = cva(\n cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full\",\n \"font-mono font-medium\",\n ),\n {\n variants: {\n size: {\n xs: \"size-5 text-[9px]\",\n sm: \"size-7 text-[10px]\",\n md: \"size-9 text-[11px]\",\n lg: \"size-12 text-sm\",\n xl: \"size-16 text-base\",\n },\n variant: {\n initials: \"bg-bg-3 text-fg-2\",\n branded: \"border border-[#D8CFFF] bg-pro-bg text-pro-fg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"initials\",\n },\n },\n);\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\nconst statusStyles = {\n online: \"bg-success-fg\",\n away: \"bg-warning-fg\",\n busy: \"bg-danger-fg\",\n offline: \"bg-fg-4\",\n} as const;\n\nconst statusDotSizes: Record<AvatarSize, string> = {\n xs: \"size-1.5\",\n sm: \"size-2\",\n md: \"size-2.5\",\n lg: \"size-3\",\n xl: \"size-3.5\",\n};\n\n/* -------------------------------------------------------------------------- */\n/* Initials helper */\n/* -------------------------------------------------------------------------- */\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n}\n\n/* -------------------------------------------------------------------------- */\n/* Avatar */\n/* Wraps Radix Root/Image/Fallback. Preserves the legacy contract: */\n/* - `src` -> renders Radix Image */\n/* - `name` -> initials fallback (auto-computed) */\n/* - `alt` -> image alt (defaults to name) */\n/* - `size` -> xs|sm|md|lg|xl */\n/* - `status` -> online|away|busy|offline (renders a corner dot) */\n/* -------------------------------------------------------------------------- */\n\ninterface AvatarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>, \"children\">,\n VariantProps<typeof avatarVariants> {\n src?: string | null;\n alt?: string;\n name?: string;\n status?: keyof typeof statusStyles;\n}\n\nexport const Avatar = React.forwardRef<React.ElementRef<typeof AvatarPrimitive.Root>, AvatarProps>(\n function Avatar(\n { src, alt, name, size = \"md\", variant = \"initials\", status, className, ...props },\n ref,\n ) {\n const initials = name ? getInitials(name) : \"?\";\n const resolvedSize: AvatarSize = size ?? \"md\";\n\n return (\n <span className=\"relative inline-flex\">\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size: resolvedSize, variant }), className)}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n src={src}\n alt={alt ?? name ?? \"Avatar\"}\n className=\"aspect-square size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n delayMs={src ? 200 : 0}\n className=\"flex size-full items-center justify-center\"\n aria-label={name || \"Unknown user\"}\n >\n {initials}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n {status && (\n <span\n className={cn(\n \"ring-bg absolute right-0 bottom-0 block rounded-full ring-2\",\n statusDotSizes[resolvedSize],\n statusStyles[status],\n )}\n aria-label={status}\n />\n )}\n </span>\n );\n },\n);\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Badge — status atom. Variants port the `.pill` family in `_shared.css`\n * (lines 257-289). Default variant is the neutral pill.\n */\nexport const badgeVariants = cva(\n cn(\n \"inline-flex items-center gap-1 rounded-pill border font-medium\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n default: \"bg-pro-fg text-fg-on-pro border-transparent\",\n secondary: \"bg-bg-2 text-fg-3 border-rule\",\n destructive: \"bg-danger-bg text-danger-fg border-danger-line\",\n success: \"bg-success-bg text-success-fg border-success-line\",\n warning: \"bg-warning-bg text-warning-fg border-warning-line\",\n info: \"bg-accent-tint text-accent-2 border-[color:var(--color-accent-tint)]\",\n outline: \"border-rule bg-transparent text-fg-2\",\n },\n size: {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-0.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n dot?: boolean;\n icon?: React.ReactNode;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant, size, dot, icon, children, className, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {dot && <span className=\"size-1.5 rounded-full bg-current\" aria-hidden=\"true\" />}\n {icon && (\n <span className=\"inline-flex size-3.5 shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n {children}\n </span>\n );\n});\n\nBadge.displayName = \"Badge\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Blockquote — semantic quote with optional attribution. Uses `font-display`\n * (Geist) at a comfortable reading scale; smart quotes are wrapped automatically.\n */\n\ninterface BlockquoteProps extends React.BlockquoteHTMLAttributes<HTMLQuoteElement> {\n author?: string;\n role?: string;\n}\n\nexport const Blockquote = forwardRef<HTMLQuoteElement, BlockquoteProps>(function Blockquote(\n { children, author, role: authorRole, className, ...props },\n ref,\n) {\n return (\n <figure>\n <blockquote\n ref={ref}\n className={cn(\n \"font-display text-fg text-xl leading-relaxed tracking-[-0.022em] md:text-2xl\",\n className,\n )}\n {...props}\n >\n <p>“{children}”</p>\n </blockquote>\n {author && (\n <figcaption className=\"mt-4\">\n <cite className=\"text-fg text-sm font-semibold not-italic\">{author}</cite>\n {authorRole && <span className=\"text-fg-3 block text-sm\">{authorRole}</span>}\n </figcaption>\n )}\n </figure>\n );\n});\n\nBlockquote.displayName = \"Blockquote\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronRightIcon } from \"./icons\";\n/**\n * Breadcrumb — semantic navigation primitive. Uses the catalog `ChevronRightIcon` as the\n * default separator. Current page (BreadcrumbPage) leans on Pro purple to\n * mirror the active-state language used elsewhere in the firm app.\n *\n * Public API preserved: Breadcrumb / BreadcrumbList / BreadcrumbItem /\n * BreadcrumbLink / BreadcrumbPage / BreadcrumbSeparator.\n */\n\nexport type BreadcrumbProps = React.HTMLAttributes<HTMLElement>;\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { className, ...props },\n ref,\n) {\n return <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(className)} {...props} />;\n});\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport type BreadcrumbListProps = React.HTMLAttributes<HTMLOListElement>;\n\nexport const BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n ref={ref}\n className={cn(\"text-fg-3 flex flex-wrap items-center gap-1.5 text-sm\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nexport type BreadcrumbItemProps = React.HTMLAttributes<HTMLLIElement>;\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return (\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n );\n },\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport type BreadcrumbLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n function BreadcrumbLink({ className, children, ...props }, ref) {\n return (\n <a\n ref={ref}\n className={cn(\n \"text-fg-3 inline-flex items-center gap-1\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"rounded-icon focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n >\n {children}\n </a>\n );\n },\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nexport type BreadcrumbPageProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n role=\"link\"\n aria-disabled=\"true\"\n className={cn(\"text-fg font-medium\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport type BreadcrumbSeparatorProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbSeparator = forwardRef<HTMLSpanElement, BreadcrumbSeparatorProps>(\n function BreadcrumbSeparator({ children, className, ...props }, ref) {\n return (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-fg-5 inline-flex items-center [&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon strokeWidth={1.75} />}\n </span>\n );\n },\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Button — Assure Pro action atom.\n *\n * Variants port the `.btn-*` rules in `_shared.css` (lines 164-203):\n * - primary → bg-pro-fg (Pro purple, the firm app's brand identity)\n * - secondary → ghost surface bg-bg-2\n * - destructive → bg-danger-fg\n * - success → bg-success-fg\n * - ghost → transparent, hover:bg-bg-2\n * - outline → bordered surface (matches `.btn-ghost` from spec)\n * - link → text-accent (cyan) with underline-on-hover\n * - accent → bg-accent (cyan CTA per spec §6.2)\n *\n * Sizes match shadcn convention; default `md` matches spec's 8px/14px padding.\n * Use `asChild` to render as a different element (e.g. an anchor / next/link).\n */\nexport const buttonVariants = cva(\n cn(\n \"inline-flex items-center justify-center rounded-btn font-medium whitespace-nowrap\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"motion-reduce:transition-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n ),\n {\n variants: {\n variant: {\n primary: \"bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active\",\n secondary: \"bg-bg-2 text-fg-2 border border-rule hover:bg-bg-3 hover:border-rule-strong\",\n destructive: \"bg-danger-fg text-white hover:bg-danger-fg/90 active:bg-danger-fg/80\",\n success: \"bg-success-fg text-white hover:bg-success-fg/90 active:bg-success-fg/80\",\n ghost: \"bg-transparent text-fg-2 hover:bg-bg-2 hover:text-fg\",\n outline: \"border border-rule-strong bg-bg text-fg-2 hover:bg-bg-2 hover:border-fg-4\",\n link: \"bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto\",\n accent: \"bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active\",\n },\n size: {\n sm: \"h-8 px-3 text-sm gap-1.5\",\n md: \"h-10 px-4 text-sm gap-2\",\n lg: \"h-12 px-6 text-base gap-2\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /** Render as the child element via Radix `Slot` (shadcn pattern). */\n asChild?: boolean;\n loading?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n}\n\nconst Spinner = () => (\n <svg className=\"size-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-25\"\n />\n <path\n d=\"M4 12a8 8 0 018-8\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-75\"\n />\n </svg>\n);\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant,\n size,\n asChild = false,\n loading,\n iconLeft,\n iconRight,\n disabled,\n children,\n className,\n ...props\n },\n ref,\n) {\n const Comp = asChild ? Slot : \"button\";\n\n // Slot collapses into a single child, so when asChild we render only children.\n if (asChild) {\n return (\n <Comp ref={ref} className={cn(buttonVariants({ variant, size }), className)} {...props}>\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n ref={ref}\n disabled={disabled || loading}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {loading ? (\n <Spinner />\n ) : (\n iconLeft && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconLeft}\n </span>\n )\n )}\n {children}\n {iconRight && !loading && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </Comp>\n );\n});\n\nButton.displayName = \"Button\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker, type DayPickerProps } from \"react-day-picker\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Calendar — react-day-picker, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * <Calendar selected onSelect highlights minDate maxDate />\n *\n * Prop semantics intentionally unchanged:\n * - `selected` accepts `Date | null` (legacy null-instead-of-undefined).\n * - `onSelect` is invoked with a non-null `Date` (legacy never emitted null).\n * - `highlights` translates to react-day-picker `modifiers`.\n *\n * NEW (additive): consumers may pass any DayPickerProps (mode, disabled,\n * fromDate, toDate, etc.) by typing the component as DayPicker. This file\n * intentionally narrows the public contract; richer usage should compose\n * DayPicker directly.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type CalendarHighlightColor = \"primary\" | \"success\" | \"warning\" | \"destructive\";\n\nexport interface CalendarHighlight {\n date: Date;\n color?: CalendarHighlightColor;\n}\n\nexport interface CalendarProps extends Omit<\n DayPickerProps,\n \"mode\" | \"selected\" | \"onSelect\" | \"modifiers\" | \"modifiersClassNames\"\n> {\n selected?: Date | null;\n onSelect?: (date: Date) => void;\n highlights?: CalendarHighlight[];\n minDate?: Date;\n maxDate?: Date;\n className?: string;\n}\n\nconst HIGHLIGHT_COLORS: Record<CalendarHighlightColor, string> = {\n primary: \"after:bg-pro-fg\",\n success: \"after:bg-success-fg\",\n warning: \"after:bg-warning-fg\",\n destructive: \"after:bg-danger-fg\",\n};\n\nconst DOT_BASE =\n \"after:content-[''] after:absolute after:bottom-1 after:left-1/2 after:size-1 after:-translate-x-1/2 after:rounded-full\";\n\nexport function Calendar({\n selected,\n onSelect,\n highlights = [],\n minDate,\n maxDate,\n className,\n classNames,\n ...props\n}: CalendarProps) {\n /**\n * Bucket highlight dates by color so we can hand each color its own\n * `modifier` + `modifierClassName` pair (rdp doesn't allow per-day\n * className via the modifiers prop directly).\n */\n const { modifiers, modifiersClassNames } = React.useMemo(() => {\n const buckets: Partial<Record<CalendarHighlightColor, Date[]>> = {};\n for (const h of highlights) {\n const key = h.color ?? \"primary\";\n (buckets[key] ??= []).push(h.date);\n }\n\n const mods: Record<string, Date[]> = {};\n const modClasses: Record<string, string> = {};\n for (const [color, dates] of Object.entries(buckets) as [CalendarHighlightColor, Date[]][]) {\n const key = `assure-highlight-${color}`;\n mods[key] = dates;\n modClasses[key] = cn(\"relative\", DOT_BASE, HIGHLIGHT_COLORS[color]);\n }\n return { modifiers: mods, modifiersClassNames: modClasses };\n }, [highlights]);\n\n // Translate the legacy min/max props into rdp's `disabled` matcher form.\n const disabledMatcher = React.useMemo(() => {\n if (!minDate && !maxDate) return undefined;\n if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];\n if (minDate) return { before: minDate };\n return { after: maxDate as Date };\n }, [minDate, maxDate]);\n\n return (\n <DayPicker\n mode=\"single\"\n selected={selected ?? undefined}\n onSelect={(d) => {\n if (d) onSelect?.(d);\n }}\n disabled={disabledMatcher}\n modifiers={modifiers}\n modifiersClassNames={modifiersClassNames}\n showOutsideDays\n components={{\n Chevron: ({ orientation, className: chevClass }) => {\n const Icon = orientation === \"right\" ? ChevronRightIcon : ChevronLeftIcon;\n return <Icon className={cn(\"text-fg-3 size-4\", chevClass)} aria-hidden=\"true\" />;\n },\n }}\n className={cn(\"font-body text-fg select-none\", className)}\n classNames={{\n root: \"p-3 min-w-[280px]\",\n months: \"flex flex-col gap-4\",\n month: \"space-y-3\",\n month_caption:\n \"flex h-8 items-center justify-center font-display text-[13px] font-medium text-fg\",\n caption_label: \"tabular-nums\",\n nav: \"flex items-center justify-between absolute left-3 right-3 top-3\",\n button_previous:\n \"inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none\",\n button_next:\n \"inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 text-center text-[11px] font-medium uppercase tracking-wide text-fg-4 pb-1\",\n weeks: \"\",\n week: \"flex w-full mt-1\",\n day: \"flex-1 text-center relative p-0\",\n day_button: cn(\n \"inline-flex size-8 w-full items-center justify-center rounded-input font-mono tabular-nums text-[13px] text-fg\",\n \"transition-colors duration-[var(--duration-instant)] motion-reduce:transition-none\",\n \"hover:bg-bg-2\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ),\n today: \"[&_button]:font-semibold [&_button]:text-accent\",\n selected:\n \"[&_button]:bg-pro-fg [&_button]:text-fg-on-pro [&_button]:hover:bg-pro-hover [&_button]:focus-visible:bg-pro-fg\",\n outside: \"[&_button]:text-fg-5\",\n disabled: \"[&_button]:text-fg-disabled\",\n hidden: \"invisible\",\n ...classNames,\n }}\n {...props}\n />\n );\n}\n\nCalendar.displayName = \"Calendar\";\n","import { forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Card — surface container. Default surfaces use the `.surface` rule from\n * `_shared.css` (12px radius, 1px rule border, surface bg). Three variants:\n *\n * default — settled card on the page (current behavior, unchanged)\n * interactive — clickable card; hover darkens the border\n * flat — borderless / shadowless transparent surface, for nesting\n * inside Dialog/Sheet/Card without double-border\n */\n\nexport const cardVariants = cva(\"rounded-card border border-rule bg-surface text-fg shadow-quiet\", {\n variants: {\n variant: {\n default: \"\",\n interactive:\n \"cursor-pointer transition-[border-color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:border-rule-strong motion-reduce:transition-none\",\n flat: \"border-0 bg-transparent shadow-none\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nexport type CardVariants = VariantProps<typeof cardVariants>;\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement>, CardVariants {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, variant, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(cardVariants({ variant }), className)} {...props} />;\n});\nCard.displayName = \"Card\";\n\nexport const CardHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"grid auto-cols-fr grid-cols-[1fr_auto] items-start gap-1.5 p-6 [.border-b]:pb-4\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CardTitle({ className, children, ...props }, ref) {\n return (\n <h3\n ref={ref}\n className={cn(\"text-fg text-base leading-tight font-medium\", className)}\n {...props}\n >\n {children}\n </h3>\n );\n },\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(function CardDescription({ className, ...props }, ref) {\n return <p ref={ref} className={cn(\"text-fg-3 text-sm\", className)} {...props} />;\n});\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardContent({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />;\n },\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"border-rule flex items-center gap-2 border-t p-6\", className)}\n {...props}\n />\n );\n },\n);\nCardFooter.displayName = \"CardFooter\";\n\nexport const CardAction = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardAction({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"col-start-2 row-start-1 self-center\", className)} {...props} />\n );\n },\n);\nCardAction.displayName = \"CardAction\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, MinusIcon } from \"./icons\";\ninterface CheckboxProps extends Omit<\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n \"checked\" | \"defaultChecked\"\n> {\n /** Optional inline label rendered to the right of the box */\n label?: string;\n /** Tri-state support: true | false | \"indeterminate\" */\n checked?: boolean | \"indeterminate\";\n defaultChecked?: boolean | \"indeterminate\";\n /** Convenience: render with indeterminate state. Mirrors legacy prop. */\n indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(function Checkbox(\n { label, indeterminate, checked, defaultChecked, className, id: providedId, ...props },\n ref,\n) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n // Resolve tri-state from either explicit `checked` or legacy `indeterminate`.\n const resolvedChecked: CheckboxPrimitive.CheckboxProps[\"checked\"] = indeterminate\n ? \"indeterminate\"\n : checked;\n\n return (\n <div className=\"inline-flex items-center gap-2\">\n <CheckboxPrimitive.Root\n ref={ref}\n id={id}\n checked={resolvedChecked}\n defaultChecked={defaultChecked}\n className={cn(\n \"peer border-rule-strong bg-surface text-fg-on-pro flex size-4 shrink-0 items-center justify-center rounded-[4px] border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"hover:border-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[state=checked]:border-pro-fg data-[state=checked]:bg-pro-fg\",\n \"data-[state=indeterminate]:border-pro-fg data-[state=indeterminate]:bg-pro-fg\",\n \"disabled:bg-bg-disabled disabled:border-rule disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {resolvedChecked === \"indeterminate\" ? (\n <MinusIcon className=\"size-3\" strokeWidth={3} aria-hidden=\"true\" />\n ) : (\n <CheckIcon className=\"size-3\" strokeWidth={3} aria-hidden=\"true\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n )}\n </div>\n );\n});\n\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Select — Radix UI select primitive, Assure Pro skin.\n *\n * Public API preserved (the convenience wrapper):\n * <Select options={...} value placeholder onValueChange searchable />\n * - the original `Select` accepted `options: SelectOption[]`. Consumers\n * across firm + portal use that shape and we keep it.\n *\n * NEW (additive, shadcn parity) — composable lower-level slots so callers\n * can build their own trees:\n * SelectTrigger, SelectValue, SelectContent, SelectItem, SelectLabel,\n * SelectSeparator, SelectGroup, SelectScrollUpButton, SelectScrollDownButton\n *\n * Note: The legacy `Select` rendered Radix-incompatible custom slots (it\n * accepted `children` as raw JSX wrapping `<SelectTrigger />` /\n * `<SelectContent />` with no props). The new `Select` keeps the\n * options-driven path; for full composition use `SelectRoot` + the\n * lower-level slots directly.\n *\n * `searchable` prop: not natively supported by Radix Select. We accept the\n * prop to preserve the API but NO-OP it (warns in dev). Migrate searchable\n * UX to <SearchSelect /> (cmdk-based combobox).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst SelectRoot = 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 \"rounded-input border-rule-strong bg-surface font-body text-fg flex h-9 w-full items-center justify-between gap-2 border px-3 py-2 text-[13px]\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:text-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"data-[placeholder]:text-fg-4\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n \"[&>span]:line-clamp-1 [&>span]:text-left\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon\n className=\"text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] data-[state=open]:rotate-180 motion-reduce:transition-none\"\n aria-hidden=\"true\"\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\"text-fg-3 flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" aria-hidden=\"true\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\"text-fg-3 flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" aria-hidden=\"true\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.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 position={position}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop relative z-[var(--z-dropdown)] max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-hidden border\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"motion-reduce:transition-none\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n className,\n )}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.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 \"rounded-pill relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=checked]:bg-pro-bg data-[state=checked]:text-pro-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\n/* ─── Convenience wrapper ───────────────────────────────────────────── */\n\n/**\n * SelectOption shape — preserved verbatim from the legacy Select:\n * { value, label, disabled?, labelSuffix? }\n */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n labelSuffix?: React.ReactNode;\n}\n\nexport interface SelectProps {\n /** Option list. Required to preserve legacy API. */\n options: SelectOption[];\n /** Controlled value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n /** Accepted for back-compat. NO-OP — see file header for migration. */\n searchable?: boolean;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n className?: string;\n /** Forwarded to the trigger. */\n triggerClassName?: string;\n /** Forwarded to the content. */\n contentClassName?: string;\n /** aria-invalid + danger styling on trigger. */\n \"aria-invalid\"?: boolean;\n /** aria-label fallback when there is no visible label. */\n \"aria-label\"?: string;\n}\n\n/**\n * Convenience `Select` — preserved options-driven API.\n *\n * For full composition, import the lower-level slots:\n * <SelectRoot>\n * <SelectTrigger><SelectValue /></SelectTrigger>\n * <SelectContent>\n * <SelectGroup>\n * <SelectLabel>Label</SelectLabel>\n * <SelectItem value=\"…\">…</SelectItem>\n * </SelectGroup>\n * </SelectContent>\n * </SelectRoot>\n */\nfunction Select({\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Select...\",\n searchable,\n disabled,\n name,\n required,\n className,\n triggerClassName,\n contentClassName,\n \"aria-invalid\": ariaInvalid,\n \"aria-label\": ariaLabel,\n}: SelectProps) {\n if (process.env.NODE_ENV !== \"production\" && searchable) {\n console.warn(\n \"[Select] `searchable` is not supported by Radix Select. Use <SearchSelect /> for filterable selection.\",\n );\n }\n\n return (\n <SelectRoot\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n name={name}\n required={required}\n >\n <SelectTrigger\n aria-invalid={ariaInvalid || undefined}\n aria-label={ariaLabel}\n className={cn(triggerClassName, className)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent className={contentClassName}>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} disabled={opt.disabled}>\n <span className=\"flex items-center gap-1.5 truncate\">\n {opt.label}\n {opt.labelSuffix}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n );\n}\nSelect.displayName = \"Select\";\n\nexport {\n Select,\n SelectRoot,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { SelectContent, SelectItem, SelectRoot, SelectTrigger, SelectValue } from \"./select\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * ClientSelect — single-client picker, built on the new Radix-based\n * `Select` primitive.\n *\n * Public API preserved verbatim:\n * <ClientSelect\n * clients value onChange\n * name error className placeholder\n * />\n *\n * Behavioural notes:\n * - `value` is `string | null`; we map null → empty SelectValue (Radix\n * requires non-empty `value` strings on items, so the cleared state\n * is represented by no selection at all).\n * - The hidden `<input name=…>` is preserved so the component still\n * submits inside form posts; it carries `value ?? \"\"`.\n * - Each option shows `label` and an optional secondary `email` line.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type ClientSelectOption = {\n id: string;\n label: string;\n email?: string;\n};\n\ninterface ClientSelectProps {\n clients: ClientSelectOption[];\n value: string | null;\n onChange: (clientId: string | null) => void;\n name?: string;\n error?: string;\n className?: string;\n placeholder?: string;\n}\n\nexport function ClientSelect({\n clients,\n value,\n onChange,\n name = \"client_id\",\n error,\n className,\n placeholder = \"Select a client...\",\n}: ClientSelectProps) {\n // Radix Select uses controlled `value: string | undefined` (no null,\n // and no \"\" allowed on items). Bridge null ↔ undefined.\n const radixValue = value ?? undefined;\n\n const handleChange = (next: string) => {\n onChange(next === \"\" ? null : next);\n };\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n {/* Hidden field — preserved so existing form posts keep working. */}\n <input type=\"hidden\" name={name} value={value ?? \"\"} />\n\n <SelectRoot value={radixValue} onValueChange={handleChange}>\n <SelectTrigger aria-invalid={!!error || undefined} aria-label={placeholder}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {clients.length === 0 ? (\n <div className=\"text-fg-3 px-3 py-6 text-center text-xs\">No clients yet</div>\n ) : (\n clients.map((c) => (\n <SelectItem key={c.id} value={c.id}>\n <span className=\"flex flex-col\">\n <span className=\"text-fg text-[13px] font-medium\">{c.label}</span>\n {c.email && <span className=\"text-fg-3 text-xs\">{c.email}</span>}\n </span>\n </SelectItem>\n ))\n )}\n </SelectContent>\n </SelectRoot>\n\n {error && (\n <p role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nClientSelect.displayName = \"ClientSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Collapsible */\n/* Thin wrapper over Radix's @radix-ui/react-collapsible primitives. */\n/* -------------------------------------------------------------------------- */\n\ntype CollapsibleProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root>;\n\nexport const Collapsible = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Root>,\n CollapsibleProps\n>(function Collapsible({ className, ...props }, ref) {\n return <CollapsiblePrimitive.Root ref={ref} className={cn(className)} {...props} />;\n});\nCollapsible.displayName = CollapsiblePrimitive.Root.displayName;\n\ntype CollapsibleTriggerProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>;\n\nexport const CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger({ className, ...props }, ref) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex w-full items-center\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n />\n );\n});\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;\n\ntype CollapsibleContentProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>;\n\nexport const CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(function CollapsibleContent({ className, ...props }, ref) {\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden\",\n \"data-[state=closed]:animate-[collapsible-up_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"data-[state=open]:animate-[collapsible-down_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"motion-reduce:animate-none\",\n className,\n )}\n {...props}\n />\n );\n});\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon } from \"./icons\";\n/**\n * ComingSoon — placeholder pattern for unreleased modules. Pro-tinted icon\n * halo, dashed Assure border, \"In Development\" pill.\n *\n * Public API preserved: `icon`, `title`, `description`, `features`.\n */\nexport interface ComingSoonProps extends React.HTMLAttributes<HTMLDivElement> {\n icon: React.ReactNode;\n title: string;\n description: string;\n features: string[];\n}\n\nexport const ComingSoon = forwardRef<HTMLDivElement, ComingSoonProps>(function ComingSoon(\n { icon, title, description, features, className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center px-6 py-16\", className)}\n {...props}\n >\n <div\n className={cn(\n \"rounded-card border-rule-strong w-full max-w-lg border border-dashed\",\n \"bg-surface shadow-quiet p-10 text-center\",\n )}\n >\n {/* Eyebrow */}\n <div className=\"text-pro-fg mb-5 font-mono text-[11px] font-normal tracking-[0.14em] uppercase\">\n Coming soon\n </div>\n\n {/* Pro-tinted icon halo */}\n <div\n className={cn(\n \"mx-auto mb-4 flex size-12 items-center justify-center\",\n \"rounded-icon bg-pro-bg text-pro-fg [&>svg]:size-6\",\n )}\n >\n {icon}\n </div>\n\n <h1 className=\"font-display text-fg text-xl font-medium tracking-[-0.022em]\">{title}</h1>\n <p className=\"text-fg-3 mt-1.5 text-sm\">{description}</p>\n\n <ul className=\"mt-6 space-y-2 text-left\">\n {features.map((feature) => (\n <li key={feature} className=\"text-fg-2 flex items-center gap-2 text-sm\">\n <CheckIcon\n className=\"text-success-fg size-3.5 shrink-0\"\n strokeWidth={2.5}\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n\n <div className=\"mt-6\">\n <span\n className={cn(\n \"rounded-pill inline-flex items-center border px-2.5 py-0.5\",\n \"text-xs font-medium\",\n \"bg-pro-bg text-pro-fg border-[color:var(--color-pro-bg-active)]\",\n )}\n >\n In Development\n </span>\n </div>\n </div>\n </div>\n );\n});\n\nComingSoon.displayName = \"ComingSoon\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Dialog — Radix UI overlay primitive, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle,\n * DialogDescription, DialogFooter, DialogClose\n *\n * NEW (additive): DialogPortal, DialogOverlay are also exported for\n * advanced composition (matches shadcn convention).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogSizeStyles = {\n sm: \"max-w-sm\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n full: \"max-w-[calc(100vw-2rem)]\",\n} as const;\n\ninterface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n size?: keyof typeof dialogSizeStyles;\n /**\n * If false, the built-in close button is hidden. Default: true.\n * Use `<DialogClose>` inside content to render your own close UI.\n */\n showCloseButton?: boolean;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ size = \"md\", showCloseButton = true, className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full\",\n \"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto\",\n \"rounded-card border-rule bg-surface shadow-pop border p-6\",\n \"font-body text-fg\",\n // motion: scale + fade keyed off data-state\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:-translate-y-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n dialogSizeStyles[size],\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n className={cn(\n \"absolute top-4 right-4 inline-flex size-7 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n/* ─── DialogClose ────────────────────────────────────────────────────────\n * Backwards-compat note: the prior implementation rendered an absolute-\n * positioned close button by default and styled it as such. The new\n * DialogContent renders that close affordance built-in. The DialogClose\n * primitive is now a transparent wrapper around `Radix.Close`, used as a\n * dismiss action inside DialogFooter etc. (e.g. <DialogClose><Button …/></>).\n * ───────────────────────────────────────────────────────────────────── */\nconst DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close ref={ref} className={cn(className)} {...props} />\n));\nDialogClose.displayName = \"DialogClose\";\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"mb-4 flex flex-col gap-1.5 pr-8\", className)} {...props} />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end\",\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(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\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-fg-3 text-sm\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nimport { cn } from \"../lib/cn\";\nimport { Dialog, DialogPortal, DialogOverlay } from \"./dialog\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport { SearchIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * CommandPalette — `cmdk` rendered inside the Assure Pro Dialog.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * CommandPalette({ items, open, onOpenChange, placeholder })\n * export type { CommandItem }\n *\n * Behavior preserved:\n * - Cmd/Ctrl+K toggles open (when uncontrolled, or always)\n * - Up/Down/Enter/Escape navigation (provided by `cmdk`)\n * - Filter against label, description, group, and keywords\n * - Grouped item rendering with sticky group headings\n * - Optional per-item shortcut + icon\n * - Dismiss-on-select\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface CommandItem {\n id: string;\n label: string;\n description?: string;\n group?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect: () => void;\n keywords?: string[];\n}\n\ninterface CommandPaletteProps {\n items: CommandItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n}\n\nexport type { CommandItem };\n\n/* ── Kbd token — matches `_shared.css` .kbd lines 292-306 ───────────── */\nconst kbdClass = cn(\n \"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]\",\n \"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon\",\n \"[border-bottom-width:1.5px]\",\n);\n\n/* ── Group items, preserving insertion order ────────────────────────── */\nfunction groupItems(items: CommandItem[]): Array<[string, CommandItem[]]> {\n const groups = new Map<string, CommandItem[]>();\n for (const item of items) {\n const key = item.group ?? \"\";\n const existing = groups.get(key);\n if (existing) existing.push(item);\n else groups.set(key, [item]);\n }\n return Array.from(groups.entries());\n}\n\nexport function CommandPalette({\n items,\n open: controlledOpen,\n onOpenChange,\n placeholder = \"Type a command or search...\",\n}: CommandPaletteProps) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) setInternalOpen(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n // Cmd/Ctrl + K toggles the palette globally.\n React.useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault();\n setOpen(!open);\n }\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n const grouped = groupItems(items);\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n aria-label=\"Command palette\"\n className={cn(\n \"fixed top-[20vh] left-1/2 z-[var(--z-modal)] w-full max-w-xl -translate-x-1/2\",\n \"rounded-card border-rule bg-surface shadow-pop overflow-hidden border\",\n \"font-body text-fg\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n )}\n >\n <DialogPrimitive.Title className=\"sr-only\">Command palette</DialogPrimitive.Title>\n <DialogPrimitive.Description className=\"sr-only\">\n Search and run commands\n </DialogPrimitive.Description>\n <CommandPrimitive\n label=\"Command palette\"\n className={cn(\n \"flex flex-col\",\n // Hide a group's heading when the group has no visible children\n \"[&_[cmdk-group]:not([hidden])_~_[cmdk-group]]:border-t-0\",\n )}\n >\n {/* ── Search input ──────────────────────────────────── */}\n <div className=\"border-rule relative border-b\">\n <SearchIcon\n className=\"text-fg-3 pointer-events-none absolute top-1/2 left-4 size-4 -translate-y-1/2\"\n aria-hidden=\"true\"\n />\n <CommandPrimitive.Input\n placeholder={placeholder}\n className={cn(\n \"text-fg w-full border-none bg-transparent py-3.5 pr-4 pl-11 text-sm\",\n \"placeholder:text-fg-3 outline-none\",\n \"focus:ring-0 focus:outline-none focus-visible:ring-0\",\n )}\n />\n </div>\n\n {/* ── Results ───────────────────────────────────────── */}\n <CommandPrimitive.List\n className={cn(\n \"scrollbar-thin max-h-[380px] overflow-y-auto py-1\",\n \"[&_[cmdk-group-heading]]:px-4 [&_[cmdk-group-heading]]:py-1.5\",\n \"[&_[cmdk-group-heading]]:font-mono [&_[cmdk-group-heading]]:text-[11px]\",\n \"[&_[cmdk-group-heading]]:tracking-[0.14em] [&_[cmdk-group-heading]]:uppercase\",\n \"[&_[cmdk-group-heading]]:text-fg-3\",\n )}\n >\n <CommandPrimitive.Empty className=\"text-fg-3 py-8 text-center text-sm\">\n No results found.\n </CommandPrimitive.Empty>\n\n {grouped.map(([group, groupItemsList]) => (\n <CommandPrimitive.Group\n key={group || \"_ungrouped\"}\n heading={group || undefined}\n className=\"py-1\"\n >\n {groupItemsList.map((item) => (\n <CommandPrimitive.Item\n key={item.id}\n value={`${item.id} ${item.label} ${item.description ?? \"\"} ${item.group ?? \"\"} ${(item.keywords ?? []).join(\" \")}`}\n keywords={item.keywords}\n onSelect={() => {\n item.onSelect();\n setOpen(false);\n }}\n className={cn(\n \"rounded-btn mx-1.5 flex cursor-pointer items-center gap-3 px-3 py-2\",\n \"text-left transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] outline-none motion-reduce:transition-none\",\n \"data-[selected=true]:bg-overlay-hover\",\n \"aria-selected:bg-overlay-hover\",\n )}\n >\n {item.icon && (\n <div\n className={cn(\n \"rounded-icon flex size-8 shrink-0 items-center justify-center\",\n item.group === \"Create\" ? \"bg-pro-bg text-pro-fg\" : \"bg-bg-2 text-fg-3\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </div>\n )}\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-fg text-sm font-medium\">{item.label}</div>\n {item.description && (\n <div className=\"text-fg-3 truncate text-xs\">{item.description}</div>\n )}\n </div>\n\n {item.shortcut && (\n <kbd className={cn(kbdClass, \"hidden shrink-0 sm:inline-flex\")}>\n {item.shortcut}\n </kbd>\n )}\n </CommandPrimitive.Item>\n ))}\n </CommandPrimitive.Group>\n ))}\n </CommandPrimitive.List>\n\n {/* ── Footer keyboard hints ─────────────────────────── */}\n <div className=\"border-rule bg-bg-2/40 text-fg-3 flex flex-wrap items-center gap-4 border-t px-4 py-2.5\">\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>↑↓</kbd>\n Navigate\n </span>\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>↵</kbd>\n Select\n </span>\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>esc</kbd>\n Close\n </span>\n </div>\n </CommandPrimitive>\n </DialogPrimitive.Content>\n </DialogPortal>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"./alert-dialog\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * ConfirmActionButton — drop-in confirmation gate around any trigger.\n *\n * Composes AlertDialog + a caller-supplied trigger to retire native\n * window.confirm() and the ad-hoc \"useState + dialog + handler\" boilerplate\n * that recurs around destructive actions. Pressure-tested against 8\n * unrelated consumer sites before absorption.\n *\n * The async onConfirm + internal pending state keeps both Action and\n * Cancel disabled mid-await — preventing the double-fire bug where a\n * user clicks Confirm, sees no immediate feedback, and clicks again.\n *\n * <ConfirmActionButton\n * trigger={<Button variant=\"destructive\">Cancel invoice</Button>}\n * title=\"Cancel this invoice?\"\n * description=\"This cannot be undone. The invoice will be marked cancelled.\"\n * confirmLabel=\"Cancel invoice\"\n * cancelLabel=\"Keep invoice\"\n * onConfirm={handleCancel}\n * />\n *\n * If onConfirm throws, the dialog stays open so the consumer can surface\n * the error (e.g. via Toast). The dialog also refuses to close via ESC,\n * overlay click, or Cancel while a confirmation is in flight.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface ConfirmActionButtonProps {\n /** Element rendered as the dialog trigger via `<AlertDialogTrigger asChild>`. */\n trigger: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n /** Awaited; dialog closes after resolve, stays open on reject. */\n onConfirm: () => void | Promise<void>;\n /** When true (default) the Action button uses the destructive palette;\n * when false it uses the Pro primary palette (bg-pro-fg). */\n destructive?: boolean;\n /** Forwarded to AlertDialogContent for one-off layout overrides. */\n contentClassName?: string;\n}\n\nexport function ConfirmActionButton({\n trigger,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n destructive = true,\n contentClassName,\n}: ConfirmActionButtonProps) {\n const [open, setOpen] = React.useState(false);\n const [pending, setPending] = React.useState(false);\n\n const handleConfirm = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setPending(true);\n try {\n await onConfirm();\n setOpen(false);\n } finally {\n setPending(false);\n }\n };\n\n return (\n <AlertDialog\n open={open}\n onOpenChange={(next) => {\n if (pending) return;\n setOpen(next);\n }}\n >\n <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>\n <AlertDialogContent className={contentClassName}>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={pending}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction\n disabled={pending}\n onClick={handleConfirm}\n className={cn(\n !destructive &&\n \"bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active\",\n )}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * ContextMenu — Radix UI context-menu primitive, Assure Pro skin.\n *\n * Public API preserved:\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem (with `destructive` prop), ContextMenuSeparator\n *\n * NEW (additive, shadcn parity):\n * ContextMenuLabel, ContextMenuGroup, ContextMenuPortal,\n * ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent,\n * ContextMenuCheckboxItem, ContextMenuRadioGroup, ContextMenuRadioItem,\n * ContextMenuShortcut\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst ContextMenu = ContextMenuPrimitive.Root;\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=open]:bg-bg-2 data-[state=open]:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"text-fg-3 ml-auto size-4\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[10rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\ninterface ContextMenuItemProps extends React.ComponentPropsWithoutRef<\n typeof ContextMenuPrimitive.Item\n> {\n destructive?: boolean;\n inset?: boolean;\n}\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n ContextMenuItemProps\n>(({ className, destructive, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n destructive && \"text-danger-fg focus:bg-danger-bg focus:text-danger-fg\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\"text-fg-4 ml-auto font-mono text-[11px] tracking-wider\", className)}\n {...props}\n />\n);\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","\"use client\";\n\nimport { forwardRef, useCallback, useState } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, CopyIcon } from \"./icons\";\ninterface CopyButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n feedbackDuration?: number;\n}\n\n/**\n * CopyButton — single-click clipboard copy with check-mark feedback.\n * Renders the lucide `Copy` icon by default; pass `children` to override.\n */\nexport const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(function CopyButton(\n { value, feedbackDuration = 2000, className, children, ...props },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), feedbackDuration);\n }, [value, feedbackDuration]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={handleCopy}\n className={cn(\n \"rounded-icon text-fg-3 inline-flex items-center justify-center p-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"motion-reduce:transition-none\",\n className,\n )}\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n {...props}\n >\n {copied ? (\n <CheckIcon size={16} aria-hidden=\"true\" />\n ) : (\n (children ?? <CopyIcon size={16} aria-hidden=\"true\" />)\n )}\n </button>\n );\n});\n\nCopyButton.displayName = \"CopyButton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Popover — Radix UI popover primitive, Assure Pro skin.\n *\n * Public API preserved:\n * Popover, PopoverTrigger, PopoverContent\n *\n * NEW (additive): PopoverAnchor, PopoverPortal, PopoverClose are\n * exported for advanced composition.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nconst PopoverPortal = PopoverPrimitive.Portal;\nconst PopoverClose = PopoverPrimitive.Close;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", side = \"bottom\", sideOffset = 8, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-72 border p-4 outline-none\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverAnchor, PopoverPortal, PopoverClose, PopoverContent };\n","\"use client\";\n\nimport { forwardRef, useCallback, useId, useImperativeHandle, useRef, useState } from \"react\";\nimport { format, parse, isValid } from \"date-fns\";\n\nimport { cn } from \"../lib/cn\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nimport { CalendarIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * DatePicker — Popover + Calendar + masked text input.\n *\n * Public API preserved EXACTLY:\n * - `value` / `defaultValue` are ISO `YYYY-MM-DD` strings (what 988 firm +\n * 174 portal call sites pass today).\n * - The displayed value in the trigger input is `MM/DD/YYYY`.\n * - `onChange` is invoked with a synthetic event of shape\n * `{ target: { name?: string; value: string } }` where `value` is the\n * ISO string. Call sites depend on this synthetic shape — do NOT change.\n * - `min` / `max` are ISO strings — gate the calendar grid.\n * - A hidden `<input name>` mirrors the ISO value for native form posts.\n * - `forwardRef<HTMLInputElement>` points to the visible text input.\n *\n * Re-exports the legacy ISO/display helpers + the placeholder constant.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface DatePickerProps {\n value?: string;\n defaultValue?: string;\n onChange?: (event: { target: { name?: string; value: string } }) => void;\n name?: string;\n id?: string;\n label?: string;\n error?: string;\n disabled?: boolean;\n required?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n className?: string;\n min?: string;\n max?: string;\n \"aria-label\"?: string;\n}\n\nexport const DATE_DISPLAY_PLACEHOLDER = \"MM/DD/YYYY\";\n\nconst ISO_RE = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DISPLAY_RE = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nexport function isoToDisplay(iso: string | undefined | null): string {\n if (!iso) return \"\";\n const m = ISO_RE.exec(iso);\n if (!m) return \"\";\n return `${m[2]}/${m[3]}/${m[1]}`;\n}\n\nexport function displayToIso(display: string): string {\n const m = DISPLAY_RE.exec(display);\n if (!m) return \"\";\n const [, mm, dd, yyyy] = m;\n // Re-validate by round-tripping through date-fns.\n const parsed = parse(`${mm}/${dd}/${yyyy}`, \"MM/dd/yyyy\", new Date());\n if (!isValid(parsed)) return \"\";\n if (\n parsed.getFullYear() !== Number(yyyy) ||\n parsed.getMonth() + 1 !== Number(mm) ||\n parsed.getDate() !== Number(dd)\n ) {\n return \"\";\n }\n return `${yyyy}-${mm}-${dd}`;\n}\n\nfunction applyMask(input: string): string {\n const digits = input.replace(/\\D/g, \"\").slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction isoToDate(iso: string): Date | undefined {\n if (!iso) return undefined;\n const parsed = parse(iso, \"yyyy-MM-dd\", new Date());\n return isValid(parsed) ? parsed : undefined;\n}\n\nfunction dateToIso(d: Date): string {\n return format(d, \"yyyy-MM-dd\");\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n name,\n id: providedId,\n label,\n error,\n disabled,\n required,\n autoFocus,\n placeholder = DATE_DISPLAY_PLACEHOLDER,\n className,\n min,\n max,\n \"aria-label\": ariaLabel,\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const isControlled = value !== undefined;\n\n const [internalIso, setInternalIso] = useState<string>(\n isControlled ? (value ?? \"\") : (defaultValue ?? \"\"),\n );\n const [display, setDisplay] = useState<string>(() =>\n isoToDisplay(isControlled ? value : defaultValue),\n );\n const [open, setOpen] = useState(false);\n\n // React-to-controlled-prop changes without a sync useEffect.\n const [lastPropValue, setLastPropValue] = useState<string | undefined>(value);\n if (isControlled && value !== lastPropValue) {\n setLastPropValue(value);\n const nextIso = value ?? \"\";\n setInternalIso(nextIso);\n if (displayToIso(display) !== nextIso) {\n setDisplay(isoToDisplay(nextIso));\n }\n }\n\n const iso = isControlled ? (value ?? \"\") : internalIso;\n\n const textRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(ref, () => textRef.current as HTMLInputElement);\n\n const emit = useCallback(\n (nextIso: string) => {\n onChange?.({ target: { name, value: nextIso } });\n },\n [name, onChange],\n );\n\n const handleTextChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = applyMask(e.target.value);\n setDisplay(masked);\n const nextIso = displayToIso(masked);\n if (nextIso !== iso) {\n if (!isControlled) setInternalIso(nextIso);\n emit(nextIso);\n } else if (!nextIso && iso) {\n if (!isControlled) setInternalIso(\"\");\n emit(\"\");\n }\n },\n [iso, isControlled, emit],\n );\n\n const handleCalendarSelect = useCallback(\n (d: Date) => {\n const nextIso = dateToIso(d);\n setDisplay(isoToDisplay(nextIso));\n if (!isControlled) setInternalIso(nextIso);\n emit(nextIso);\n setOpen(false);\n // Restore focus to the text field for keyboard continuity.\n requestAnimationFrame(() => textRef.current?.focus());\n },\n [isControlled, emit],\n );\n\n const minDate = isoToDate(min ?? \"\");\n const maxDate = isoToDate(max ?? \"\");\n const selectedDate = isoToDate(iso);\n\n return (\n <div className={cn(\"w-full\", className)}>\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n {required && (\n <span className=\"text-danger-fg ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"relative\">\n <input\n ref={textRef}\n id={id}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n value={display}\n onChange={handleTextChange}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n // Forwarding consumer-supplied autoFocus on a date input is intentional\n // (e.g. inline edit cells, return-from-modal flows). Decision lives at the call site.\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n aria-label={ariaLabel}\n className={cn(\n \"rounded-input bg-surface text-fg flex h-9 w-full border font-mono text-[13px] tabular-nums\",\n \"border-rule-strong px-3 py-2 pr-10\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:font-body placeholder:text-fg-4\",\n \"focus-visible:border-accent focus-visible:outline-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n )}\n />\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n aria-label=\"Open calendar\"\n className={cn(\n \"rounded-r-input text-fg-3 absolute inset-y-0 right-0 flex w-10 items-center justify-center\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed\",\n )}\n >\n <CalendarIcon className=\"size-4\" aria-hidden=\"true\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n sideOffset={6}\n className=\"w-auto p-0\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Calendar\n selected={selectedDate ?? null}\n onSelect={handleCalendarSelect}\n minDate={minDate}\n maxDate={maxDate}\n defaultMonth={selectedDate ?? minDate ?? undefined}\n />\n </PopoverContent>\n </Popover>\n {name && <input type=\"hidden\" name={name} value={iso} />}\n </div>\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * DropdownMenu — Radix UI dropdown-menu primitive, Assure Pro skin.\n *\n * Public API preserved:\n * DropdownMenu, DropdownMenuTrigger, DropdownMenuContent,\n * DropdownMenuItem (with `destructive` prop), DropdownMenuSeparator,\n * DropdownMenuLabel, DropdownMenuGroup\n *\n * NEW (additive, shadcn parity):\n * DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubTrigger,\n * DropdownMenuSubContent, DropdownMenuCheckboxItem,\n * DropdownMenuRadioGroup, DropdownMenuRadioItem,\n * DropdownMenuShortcut\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=open]:bg-bg-2 data-[state=open]:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"text-fg-3 ml-auto size-4\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 6, align = \"start\", ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[10rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\ninterface DropdownMenuItemProps extends React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> {\n /** Render as a destructive (danger) action. */\n destructive?: boolean;\n /** Increase left padding to align with checkbox/radio items. */\n inset?: boolean;\n}\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, destructive, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n destructive && \"text-danger-fg focus:bg-danger-bg focus:text-danger-fg\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.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(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\"text-fg-4 ml-auto font-mono text-[11px] tracking-wider\", className)}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * EmptyState — restated with Assure Pro tokens. Display headline (Geist),\n * fg-3 description, neutral icon halo on bg-2.\n *\n * Public API preserved: `icon`, `title`, `description`, `action`.\n */\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(\n { icon, title, description, action, className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col items-center justify-center px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n \"mb-4 flex size-12 items-center justify-center rounded-full\",\n \"bg-bg-2 text-fg-4 [&>svg]:size-6\",\n )}\n >\n {icon}\n </div>\n )}\n <h3 className=\"font-display text-fg text-base font-medium tracking-[-0.02em]\">{title}</h3>\n {description && <p className=\"text-fg-3 mt-1 max-w-sm text-sm\">{description}</p>}\n {action && <div className=\"mt-5\">{action}</div>}\n </div>\n );\n});\n\nEmptyState.displayName = \"EmptyState\";\n","\"use client\";\n\nimport { useCallback, useId, useRef, useState } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { UploadIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * FileUpload — custom drag-drop + file picker.\n *\n * Public API preserved:\n * <FileUpload accept maxSize multiple onFilesSelected disabled className />\n *\n * Restyled with Assure Pro tokens:\n * - dashed `border-rule-strong` drop zone, rounded-card\n * - hover/drag-over uses Pro purple (bg-pro-bg / border-pro-line / text-pro-fg)\n * - catalog `UploadIcon`\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface FileUploadProps extends React.HTMLAttributes<HTMLDivElement> {\n accept?: string;\n maxSize?: number;\n multiple?: boolean;\n onFilesSelected?: (files: File[]) => void;\n disabled?: boolean;\n}\n\nexport function FileUpload({\n accept,\n maxSize,\n multiple,\n onFilesSelected,\n disabled,\n className,\n children,\n ...props\n}: FileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = useId();\n const [isDragOver, setIsDragOver] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const validateFiles = useCallback(\n (files: File[]): File[] => {\n setError(null);\n const acceptTypes = accept ? accept.split(\",\").map((t) => t.trim()) : null;\n\n const valid = files.filter((file) => {\n if (acceptTypes) {\n const ext = `.${file.name.split(\".\").pop()?.toLowerCase()}`;\n const matchesType = acceptTypes.some(\n (type) =>\n type === ext ||\n type === file.type ||\n (type.endsWith(\"/*\") && file.type.startsWith(type.replace(\"/*\", \"/\"))),\n );\n if (!matchesType) {\n setError(`File type not accepted: ${file.name}`);\n return false;\n }\n }\n if (maxSize && file.size > maxSize) {\n setError(`File too large: ${file.name} (max ${formatBytes(maxSize)})`);\n return false;\n }\n return true;\n });\n\n return valid;\n },\n [accept, maxSize],\n );\n\n function handleFiles(fileList: FileList) {\n const files = Array.from(fileList);\n const valid = validateFiles(multiple ? files : files.slice(0, 1));\n if (valid.length > 0) onFilesSelected?.(valid);\n }\n\n function handleDrop(e: React.DragEvent) {\n e.preventDefault();\n setIsDragOver(false);\n if (disabled) return;\n handleFiles(e.dataTransfer.files);\n }\n\n return (\n <div className={cn(\"w-full\", className)} {...props}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <label\n htmlFor={inputId}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setIsDragOver(true);\n }}\n onDragLeave={() => setIsDragOver(false)}\n onDrop={handleDrop}\n className={cn(\n \"flex flex-col items-center justify-center gap-2\",\n \"rounded-card border-rule-strong bg-surface border border-dashed\",\n \"font-body p-8 text-center\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n // Hover (when not disabled)\n !disabled && \"hover:border-pro-line hover:bg-pro-bg/40\",\n // Drag-over → Pro purple highlight\n isDragOver && \"border-pro-line bg-pro-bg\",\n disabled && \"border-rule bg-bg-disabled text-fg-disabled cursor-not-allowed\",\n !disabled && \"cursor-pointer\",\n )}\n >\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(e) => {\n if (e.target.files) handleFiles(e.target.files);\n // Reset value so the same file can be re-selected\n e.target.value = \"\";\n }}\n className=\"fixed -top-[9999px] -left-[9999px] opacity-0\"\n disabled={disabled}\n tabIndex={-1}\n />\n {children ?? (\n <>\n <div\n className={cn(\n \"rounded-icon flex size-10 items-center justify-center transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n isDragOver ? \"bg-pro-fg text-fg-on-pro\" : \"bg-pro-bg text-pro-fg\",\n )}\n aria-hidden=\"true\"\n >\n <UploadIcon className=\"size-5\" />\n </div>\n <div className=\"text-fg-3 text-sm\">\n <span className=\"text-fg font-medium\">Click to upload</span> or drag and drop\n </div>\n {accept && <p className=\"text-fg-4 font-mono text-[10.5px]\">Accepted: {accept}</p>}\n {maxSize && (\n <p className=\"text-fg-4 font-mono text-[10.5px]\">Max size: {formatBytes(maxSize)}</p>\n )}\n </>\n )}\n </label>\n {error && (\n <p role=\"alert\" className=\"text-danger-fg mt-2 text-sm\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n","import { cn } from \"../lib/cn\";\n\nimport { AlertCircleIcon, CheckCircle2Icon } from \"./icons\";\ninterface FormErrorProps extends React.HTMLAttributes<HTMLParagraphElement> {\n children: React.ReactNode;\n}\n\n/**\n * Inline form error — paired below an input to communicate validation failure.\n * Uses architectural --color-danger-fg token.\n */\nexport function FormError({ children, className, ...props }: FormErrorProps) {\n return (\n <p\n role=\"alert\"\n className={cn(\"text-danger-fg flex items-center gap-1.5 text-xs leading-tight\", className)}\n {...props}\n >\n <AlertCircleIcon className=\"size-3.5 shrink-0\" strokeWidth={2} aria-hidden=\"true\" />\n <span>{children}</span>\n </p>\n );\n}\n\ninterface FormSuccessProps extends React.HTMLAttributes<HTMLParagraphElement> {\n children: React.ReactNode;\n}\n\n/**\n * Inline form success — paired below an input to confirm a saved value.\n * Uses architectural --color-success-fg token.\n */\nexport function FormSuccess({ children, className, ...props }: FormSuccessProps) {\n return (\n <p\n role=\"status\"\n className={cn(\"text-success-fg flex items-center gap-1.5 text-xs leading-tight\", className)}\n {...props}\n >\n <CheckCircle2Icon className=\"size-3.5 shrink-0\" strokeWidth={2} aria-hidden=\"true\" />\n <span>{children}</span>\n </p>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * HoverCard — Radix UI hover-card primitive, Assure Pro skin.\n *\n * Public API preserved:\n * HoverCard, HoverCardTrigger, HoverCardContent\n *\n * NEW (additive): HoverCardPortal is exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst HoverCard = HoverCardPrimitive.Root;\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\nconst HoverCardPortal = HoverCardPrimitive.Portal;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", side = \"bottom\", sideOffset = 8, ...props }, ref) => (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-64 border p-4 outline-none\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardPortal, HoverCardContent };\n","\"use client\";\n\nimport { forwardRef, useId, useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { EyeIcon, EyeOffIcon } from \"./icons\";\n/**\n * Input variants. Mirrors the raw HTML `<input>` styled per Assure Pro tokens\n * (rule-strong border, surface bg, accent focus ring).\n */\nconst inputVariants = cva(\n [\n \"flex w-full rounded-input border bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n ],\n {\n variants: {\n variant: {\n default: \"border-rule-strong\",\n ghost: \"border-transparent bg-transparent focus-visible:bg-surface\",\n },\n inputSize: {\n sm: \"h-8 px-2.5 py-1 text-xs\",\n md: \"h-9 px-3 py-2 text-[13px]\",\n lg: \"h-11 px-3.5 py-2.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inputSize: \"md\",\n },\n },\n);\n\nexport type InputVariants = VariantProps<typeof inputVariants>;\n\ninterface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">, InputVariants {\n label?: string;\n error?: string;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n label,\n error,\n prefixIcon,\n suffixIcon,\n variant,\n inputSize,\n type = \"text\",\n className,\n id: providedId,\n ...props\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n const inputType = isPassword && showPassword ? \"text\" : type;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n {prefixIcon && (\n <span\n className=\"text-fg-4 pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 [&>svg]:size-4\"\n aria-hidden=\"true\"\n >\n {prefixIcon}\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type={inputType}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n className={cn(\n inputVariants({ variant, inputSize }),\n prefixIcon && \"pl-9\",\n (suffixIcon || isPassword) && \"pr-9\",\n className,\n )}\n {...props}\n />\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"text-fg-4 hover:text-fg absolute top-1/2 right-2.5 -translate-y-1/2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none\"\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n tabIndex={-1}\n >\n {showPassword ? (\n <EyeOffIcon className=\"size-4\" aria-hidden=\"true\" />\n ) : (\n <EyeIcon className=\"size-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n {suffixIcon && !isPassword && (\n <span\n className=\"text-fg-4 pointer-events-none absolute top-1/2 right-3 -translate-y-1/2 [&>svg]:size-4\"\n aria-hidden=\"true\"\n >\n {suffixIcon}\n </span>\n )}\n </div>\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n});\n\nInput.displayName = \"Input\";\n\nexport { inputVariants };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"./dialog\";\n\nimport { CommandIcon, CornerDownLeftIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * KeyboardShortcutsDialog — global `?` toggled help dialog.\n *\n * Public API preserved: zero props (consumer-hostile by design).\n * Mount once near the app root; press `?` anywhere outside an editable\n * field to toggle.\n *\n * Built on the Assure Pro `Dialog` primitive (Radix UI). Renders a clean\n * 2-column grid of shortcuts using `<kbd>` styled per `_shared.css` .kbd.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst SHORTCUT_SECTIONS = [\n {\n title: \"Create\",\n icon: <CornerDownLeftIcon className=\"size-3\" />,\n shortcuts: [\n { keys: [\"C\"], description: \"New Client\" },\n { keys: [\"T\"], description: \"Create Task\" },\n { keys: [\"E\"], description: \"New Engagement\" },\n { keys: [\"M\"], description: \"Compose Message\" },\n ],\n },\n {\n title: \"Go to\",\n icon: null,\n shortcuts: [\n { keys: [\"G\", \"O\"], description: \"Overview\" },\n { keys: [\"G\", \"C\"], description: \"Clients\" },\n { keys: [\"G\", \"W\"], description: \"Workflow\" },\n { keys: [\"G\", \"D\"], description: \"Documents\" },\n { keys: [\"G\", \"B\"], description: \"Billing\" },\n { keys: [\"G\", \"M\"], description: \"Communications\" },\n { keys: [\"G\", \"A\"], description: \"Calendar\" },\n { keys: [\"G\", \"R\"], description: \"Reports\" },\n { keys: [\"G\", \"S\"], description: \"Settings\" },\n ],\n },\n {\n title: \"General\",\n icon: <CommandIcon className=\"size-3\" />,\n shortcuts: [\n { keys: [\"⌘\", \"K\"], description: \"Command palette\" },\n { keys: [\"/\"], description: \"Focus search\" },\n { keys: [\"?\"], description: \"Keyboard shortcuts\" },\n { keys: [\"Esc\"], description: \"Close / go back\" },\n ],\n },\n] as const;\n\n/* ── Kbd token — matches `_shared.css` .kbd lines 292-306 ───────────── */\nconst kbdClass = cn(\n \"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]\",\n \"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon\",\n \"[border-bottom-width:1.5px]\",\n);\n\nexport function KeyboardShortcutsDialog() {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n const target = e.target as HTMLElement | null;\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n target?.isContentEditable\n ) {\n return;\n }\n\n if (e.key === \"?\" && !e.metaKey && !e.ctrlKey && !e.altKey) {\n e.preventDefault();\n setOpen((prev) => !prev);\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, []);\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent size=\"md\" className=\"p-0\">\n <DialogHeader className=\"border-rule mb-0 border-b px-5 py-4 pr-12\">\n <DialogTitle className=\"text-sm font-semibold\">Keyboard Shortcuts</DialogTitle>\n </DialogHeader>\n\n <div className=\"scrollbar-thin max-h-[60vh] overflow-y-auto px-5 py-4\">\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-5\">\n {SHORTCUT_SECTIONS.map((section) => (\n <div key={section.title} className={cn(section.title === \"Go to\" && \"row-span-2\")}>\n <h3\n className={cn(\n \"mb-2.5 inline-flex items-center gap-1.5\",\n \"text-fg-3 font-mono text-[11px] tracking-[0.14em] uppercase\",\n )}\n >\n {section.icon}\n {section.title}\n </h3>\n <div className=\"space-y-1.5\">\n {section.shortcuts.map((shortcut) => (\n <div\n key={shortcut.description}\n className=\"flex items-center justify-between gap-3 py-1\"\n >\n <span className=\"text-fg text-sm\">{shortcut.description}</span>\n <div className=\"flex shrink-0 items-center gap-1\">\n {shortcut.keys.map((key, i) => (\n <React.Fragment key={i}>\n {i > 0 && <span className=\"text-fg-4 mx-0.5 text-[11px]\">then</span>}\n <kbd className={kbdClass}>{key}</kbd>\n </React.Fragment>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"border-rule bg-bg-2/40 border-t px-5 py-3\">\n <p className=\"text-fg-3 text-[11px]\">\n Press <kbd className={kbdClass}>?</kbd> anytime to toggle this dialog\n </p>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst labelVariants = cva(\n \"text-[13px] font-medium leading-none text-fg select-none peer-disabled:cursor-not-allowed peer-disabled:text-fg-disabled has-[+input:disabled]:text-fg-disabled\",\n);\n\ninterface LabelProps\n extends\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<React.ElementRef<typeof LabelPrimitive.Root>, LabelProps>(\n function Label({ children, required, className, ...props }, ref) {\n return (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props}>\n {children}\n {required && (\n <span className=\"text-danger-fg ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </LabelPrimitive.Root>\n );\n },\n);\n\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { labelVariants };\n","import Link from \"next/link\";\nimport { forwardRef } from \"react\";\n\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../lib/cn\";\n\ntype ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"destructive\"\n | \"success\"\n | \"ghost\"\n | \"outline\"\n | \"link\"\n | \"accent\";\n\ntype ButtonSize = \"sm\" | \"md\" | \"lg\";\n\ninterface LinkButtonProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\n/**\n * LinkButton — visually identical to `<Button>` but renders a `next/link`.\n * Shares `buttonVariants` so styling stays in lock-step.\n */\nexport const LinkButton = forwardRef<HTMLAnchorElement, LinkButtonProps>(function LinkButton(\n { href, variant = \"primary\", size = \"md\", iconLeft, iconRight, children, className, ...props },\n ref,\n) {\n return (\n <Link\n ref={ref}\n href={href}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {iconLeft && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n {children}\n {iconRight && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </Link>\n );\n});\n\nLinkButton.displayName = \"LinkButton\";\n","import Image from \"next/image\";\nimport Link from \"next/link\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Logo — Assure Pro wordmark. Per spec §4 and §6.2, the firm-app brand is\n * \"Assure Pro\": \"Assure\" in fg + \"Pro\" in pro-fg purple, set in Geist\n * (font-display). Mirrors the `.wordmark` rule in `_shared.css` (lines 226-249).\n *\n * Public API kept stable: `size`, `href`, `showText`, `inverted`, plus the\n * style-override hooks (`className`, `iconClassName`, `textClassName`).\n */\n\nconst sizeStyles = {\n sm: { icon: 20, text: \"text-sm\", gap: \"gap-2\" },\n md: { icon: 24, text: \"text-[17px]\", gap: \"gap-2.5\" },\n lg: { icon: 32, text: \"text-xl\", gap: \"gap-3\" },\n} as const;\n\ninterface LogoProps {\n size?: keyof typeof sizeStyles;\n href?: string;\n showText?: boolean;\n className?: string;\n iconClassName?: string;\n textClassName?: string;\n /** When true, render on dark/brand surfaces (white \"Assure\" + lighter \"Pro\"). */\n inverted?: boolean;\n}\n\nexport function Logo({\n size = \"md\",\n href = \"/\",\n showText = true,\n className,\n iconClassName,\n textClassName,\n inverted = false,\n}: LogoProps) {\n const s = sizeStyles[size];\n\n return (\n <Link\n href={href}\n className={cn(\"inline-flex items-center\", s.gap, className)}\n aria-label=\"Assure Pro\"\n >\n <Image\n src=\"/brand/mark.svg\"\n alt=\"\"\n width={s.icon}\n height={s.icon}\n priority\n className={cn(\"flex-shrink-0\", iconClassName)}\n />\n {showText && (\n <span\n className={cn(\n \"font-display font-semibold tracking-[-0.025em]\",\n s.text,\n inverted ? \"text-white\" : \"text-fg\",\n textClassName,\n )}\n >\n <span>Assure</span>{\" \"}\n <span className={cn(\"font-medium\", inverted ? \"text-pro-fg\" : \"text-pro-fg\")}>Pro</span>\n </span>\n )}\n </Link>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * MultiFilterPill — toolbar filter chip with multi-select dropdown.\n *\n * Matches the `.toolbar .filter-chip` mockup pattern used on the Clients\n * list. Inactive: neutral surface. Active (1+ selected): pro-purple tint\n * with a clear (X) affordance and a count or single-label.\n *\n * Public API preserved:\n * <MultiFilterPill\n * label icon\n * selected (Set<string>)\n * options ({ key, label, dot? }[])\n * onToggle onClear\n * />\n *\n * Implementation: Radix Popover (already refactored) with custom\n * checkbox-style menu items for multi-select. Closing the popover does\n * not auto-clear; that behaviour stays the caller's choice.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface MultiFilterPillProps {\n label: string;\n icon?: React.ReactNode;\n selected: Set<string>;\n options: { key: string; label: string; dot?: string }[];\n onToggle: (key: string) => void;\n onClear: () => void;\n}\n\nexport function MultiFilterPill({\n label,\n icon,\n selected,\n options,\n onToggle,\n onClear,\n}: MultiFilterPillProps) {\n const active = selected.size > 0;\n const displayLabel = active\n ? selected.size === 1\n ? (options.find((o) => o.key === [...selected][0])?.label ?? label)\n : `${label} · ${selected.size}`\n : label;\n\n return (\n <Popover>\n <PopoverTrigger\n className={cn(\n \"rounded-pill font-body inline-flex items-center gap-1.5 border px-2.5 py-1 text-xs font-medium\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n active\n ? \"border-pro-line bg-pro-bg text-pro-fg hover:bg-pro-bg-hover\"\n : \"border-rule bg-surface text-fg-2 hover:border-rule-strong hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {icon && (\n <span className=\"[&>svg]:size-3.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"truncate\">{displayLabel}</span>\n {active ? (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onClear();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n e.preventDefault();\n onClear();\n }\n }}\n className={cn(\n \"ml-0.5 inline-flex size-4 items-center justify-center rounded-full\",\n \"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-pro-bg-active\",\n \"focus-visible:bg-pro-bg-active focus-visible:outline-none\",\n )}\n aria-label={`Clear ${label} filter`}\n >\n <XIcon className=\"size-3\" aria-hidden=\"true\" />\n </span>\n ) : (\n <ChevronDownIcon className=\"text-fg-4 size-3 shrink-0\" aria-hidden=\"true\" />\n )}\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n sideOffset={6}\n className=\"w-auto max-w-[280px] min-w-[180px] p-1\"\n >\n <ul\n className=\"scrollbar-thin max-h-[280px] overflow-y-auto\"\n role=\"listbox\"\n aria-multiselectable\n >\n {options.map((opt) => {\n const isSelected = selected.has(opt.key);\n return (\n <li key={opt.key} role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => onToggle(opt.key)}\n className={cn(\n \"rounded-pill flex w-full cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:bg-bg-2 focus-visible:text-fg\",\n )}\n >\n <span\n className={cn(\n \"flex size-4 shrink-0 items-center justify-center rounded-[3px] border transition-colors duration-[var(--duration-fast)] motion-reduce:transition-none\",\n isSelected\n ? \"border-pro-fg bg-pro-fg text-fg-on-pro\"\n : \"border-rule-strong bg-surface\",\n )}\n aria-hidden=\"true\"\n >\n {isSelected && <CheckIcon className=\"size-3\" />}\n </span>\n {opt.dot && (\n <span\n className={cn(\"size-2 shrink-0 rounded-full\", opt.dot)}\n aria-hidden=\"true\"\n />\n )}\n <span className=\"truncate\">{opt.label}</span>\n </button>\n </li>\n );\n })}\n </ul>\n {active && (\n <>\n <div className=\"bg-rule -mx-1 my-1 h-px\" aria-hidden=\"true\" />\n <button\n type=\"button\"\n onClick={onClear}\n className={cn(\n \"rounded-pill flex w-full items-center justify-center px-2 py-1.5 text-[12px] outline-none\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:bg-bg-2 focus-visible:text-fg\",\n )}\n >\n Clear selection\n </button>\n </>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nMultiFilterPill.displayName = \"MultiFilterPill\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * MultiSelectField — comma-separated multi-toggle pill group.\n *\n * A row of pill buttons; clicking one toggles its membership in the\n * selection set. Selection is encoded as a single comma-separated string\n * (matches the legacy contract used by FormData submissions).\n *\n * Public API preserved:\n * <MultiSelectField label options value onChange className />\n *\n * Style: Assure Pro pills — `rounded-pill`, pro-purple when selected,\n * neutral surface with `border-rule-strong` when unselected.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface MultiSelectFieldProps {\n label: string;\n options: string[];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n /** Visual size; default \"md\" matches the form-row default. */\n size?: \"sm\" | \"md\";\n /** Optional id, used to associate the visible label with the group. */\n id?: string;\n}\n\nexport function MultiSelectField({\n label,\n options,\n value,\n onChange,\n className,\n size = \"md\",\n id,\n}: MultiSelectFieldProps) {\n const selected = React.useMemo(\n () => new Set(value ? value.split(\",\").filter(Boolean) : []),\n [value],\n );\n\n const toggle = (option: string) => {\n const next = new Set(selected);\n if (next.has(option)) {\n next.delete(option);\n } else {\n next.add(option);\n }\n onChange(Array.from(next).join(\",\"));\n };\n\n const generatedId = React.useId();\n const groupId = id ?? generatedId;\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n id={`${groupId}-label`}\n className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\"\n >\n {label}\n </div>\n <div role=\"group\" aria-labelledby={`${groupId}-label`} className=\"flex flex-wrap gap-1.5\">\n {options.map((option) => {\n const isSelected = selected.has(option);\n return (\n <button\n key={option}\n type=\"button\"\n onClick={() => toggle(option)}\n aria-pressed={isSelected}\n className={cn(\n \"rounded-pill font-body inline-flex items-center border font-medium\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n size === \"sm\" ? \"px-2.5 py-0.5 text-xs\" : \"px-3 py-1 text-xs\",\n isSelected\n ? \"border-pro-line bg-pro-bg text-pro-fg hover:bg-pro-bg-hover\"\n : \"border-rule-strong bg-surface text-fg-2 hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {option}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nMultiSelectField.displayName = \"MultiSelectField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput as OTPInputRoot, REGEXP_ONLY_DIGITS } from \"input-otp\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * OTPInput — `input-otp` library, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * <OTPInput name length error autoFocus defaultValue />\n *\n * Behavior preserved:\n * - Numeric-only entry (REGEXP_ONLY_DIGITS).\n * - The underlying form input carries `name` so native form posts continue\n * to receive a single concatenated value (matching legacy hidden-input).\n * - `defaultValue` seeds the field for uncontrolled usage.\n * - `error` toggles invalid styling + renders a centered error message.\n *\n * NEW (additive): consumers may pass `value` / `onChange` for controlled\n * usage; `onComplete` for auto-submit on full entry.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface OTPInputProps {\n name: string;\n length?: number;\n error?: string;\n autoFocus?: boolean;\n className?: string;\n defaultValue?: string;\n /** Optional controlled value (additive). */\n value?: string;\n /** Optional controlled onChange (additive). */\n onChange?: (value: string) => void;\n /** Optional callback fired when all slots are filled (additive). */\n onComplete?: (value: string) => void;\n /** Optional id for the underlying input (additive). */\n id?: string;\n /** Optional disabled flag (additive). */\n disabled?: boolean;\n}\n\nexport function OTPInput({\n name,\n length = 6,\n error,\n autoFocus = false,\n className,\n defaultValue,\n value,\n onChange,\n onComplete,\n id,\n disabled,\n}: OTPInputProps) {\n const errorId = id ? `${id}-error` : undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\n <OTPInputRoot\n name={name}\n id={id}\n maxLength={length}\n pattern={REGEXP_ONLY_DIGITS}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n // OTP inputs are typically the focus target of the screen they appear on\n // (e.g. step-up auth, post-redirect verification). Consumer opts in via prop.\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n defaultValue={defaultValue}\n value={value}\n onChange={onChange}\n onComplete={onComplete}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n containerClassName={cn(\n \"flex items-center justify-center gap-2.5\",\n // §5.17: disabled tints slot bg + border + text via token cascade,\n // not opacity (which destroys contrast on character readouts).\n \"has-[:disabled]:cursor-not-allowed\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:bg-bg-disabled\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:border-rule\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:text-fg-disabled\",\n )}\n render={({ slots }) => (\n <div className=\"flex items-center gap-2.5\" role=\"group\" aria-label=\"One-time password\">\n {slots.map((slot, idx) => (\n <OTPSlot key={idx} {...slot} hasError={!!error} />\n ))}\n </div>\n )}\n />\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg text-center text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nOTPInput.displayName = \"OTPInput\";\n\ninterface OTPSlotProps {\n isActive: boolean;\n char: string | null;\n hasFakeCaret: boolean;\n hasError: boolean;\n}\n\nfunction OTPSlot({ isActive, char, hasFakeCaret, hasError }: OTPSlotProps) {\n return (\n <div\n className={cn(\n \"relative flex h-12 w-10 items-center justify-center\",\n \"rounded-input bg-surface text-fg border font-mono text-lg tabular-nums\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"sm:h-14 sm:w-12 sm:text-xl\",\n \"border-rule-strong\",\n isActive && \"border-accent z-10 [box-shadow:var(--shadow-focus-ring)]\",\n hasError && \"border-danger-line\",\n hasError && isActive && \"border-danger-fg [box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n )}\n aria-hidden=\"true\"\n >\n {char}\n {hasFakeCaret && !char && (\n <div\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center\"\n aria-hidden=\"true\"\n >\n <div className=\"bg-fg h-5 w-px opacity-80 motion-safe:animate-pulse\" />\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"./icons\";\n/**\n * Pagination — custom (no Radix equivalent).\n * Restyled to Assure Pro tokens: tabular-nums numerals, mono context label,\n * cyan accent for the current page (matches the `.tab.is-active` treatment\n * in `_shared.css`), `border-rule` divider boundaries.\n *\n * Public API preserved for 988 firm + 174 portal call sites:\n * currentPage, totalPages, onPageChange, siblingCount, totalItems, pageSize.\n */\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n /** Total item count — enables \"Showing X–Y of Z\" label */\n totalItems?: number;\n /** Items per page — used with totalItems for range display */\n pageSize?: number;\n}\n\nfunction getPageNumbers(current: number, total: number, siblings: number): (number | \"ellipsis\")[] {\n const range = (start: number, end: number) =>\n Array.from({ length: end - start + 1 }, (_, i) => start + i);\n\n const totalSlots = siblings * 2 + 5;\n if (total <= totalSlots) return range(1, total);\n\n const leftSibling = Math.max(current - siblings, 2);\n const rightSibling = Math.min(current + siblings, total - 1);\n\n const showLeftEllipsis = leftSibling > 2;\n const showRightEllipsis = rightSibling < total - 1;\n\n if (!showLeftEllipsis && showRightEllipsis) {\n const leftRange = range(1, 3 + 2 * siblings);\n return [...leftRange, \"ellipsis\", total];\n }\n\n if (showLeftEllipsis && !showRightEllipsis) {\n const rightRange = range(total - (2 + 2 * siblings), total);\n return [1, \"ellipsis\", ...rightRange];\n }\n\n return [1, \"ellipsis\", ...range(leftSibling, rightSibling), \"ellipsis\", total];\n}\n\nconst NAV_BUTTON = cn(\n \"inline-flex size-7 items-center justify-center rounded-btn text-fg-3\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n);\n\nconst PAGE_BUTTON_BASE = cn(\n \"inline-flex h-7 min-w-7 items-center justify-center rounded-btn px-2\",\n \"text-xs font-medium tabular-nums\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n);\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n totalItems,\n pageSize,\n className,\n ...props\n },\n ref,\n) {\n if (totalPages <= 1) return null;\n\n const pages = getPageNumbers(currentPage, totalPages, siblingCount);\n\n // Range label: \"1–10 of 47\" or fallback to \"Page 1 of 5\"\n let contextLabel: string;\n if (totalItems != null && pageSize != null) {\n const start = (currentPage - 1) * pageSize + 1;\n const end = Math.min(currentPage * pageSize, totalItems);\n contextLabel = `${start}–${end} of ${totalItems}`;\n } else {\n contextLabel = `Page ${currentPage} of ${totalPages}`;\n }\n\n return (\n <nav\n ref={ref}\n aria-label=\"Pagination\"\n className={cn(\"flex items-center justify-between gap-4\", className)}\n {...props}\n >\n {/* Context label — mono, tabular-nums, fg-4 */}\n <span className=\"text-fg-4 shrink-0 font-mono text-[11px] tracking-[0.02em] tabular-nums\">\n {contextLabel}\n </span>\n\n {/* Page controls */}\n <div className=\"flex items-center gap-0.5\">\n {/* Previous */}\n <button\n type=\"button\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n className={NAV_BUTTON}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n\n {/* Page numbers */}\n {pages.map((page, i) =>\n page === \"ellipsis\" ? (\n <span\n key={`ellipsis-${i}`}\n className=\"text-fg-5 flex h-7 w-5 items-center justify-center select-none\"\n aria-hidden=\"true\"\n >\n <MoreHorizontalIcon className=\"size-3.5\" />\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n onClick={() => onPageChange(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n className={cn(\n PAGE_BUTTON_BASE,\n page === currentPage\n ? \"bg-accent-tint text-accent-2 border border-[color:var(--color-accent-tint)]\"\n : \"text-fg-3 hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {page}\n </button>\n ),\n )}\n\n {/* Next */}\n <button\n type=\"button\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n className={NAV_BUTTON}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </nav>\n );\n});\n\nPagination.displayName = \"Pagination\";\n","export function stripToDigits(input: string): string {\n return input.replace(/\\D/g, \"\").slice(0, 10);\n}\n\nexport function formatPhoneDisplay(raw: string): string {\n const digits = stripToDigits(raw);\n if (digits.length === 0) return \"\";\n if (digits.length <= 3) return `(${digits}`;\n if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n","\"use client\";\n\nimport { forwardRef, useCallback, useRef, useState } from \"react\";\n\nimport { Input } from \"./input\";\nimport { stripToDigits, formatPhoneDisplay } from \"../lib/phone\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * PhoneInput — wraps the new <Input> primitive with US phone formatting.\n *\n * Public API preserved EXACTLY:\n * - Extends Input, minus `type` (forced to \"tel\") and the `value` /\n * `onChange` / `defaultValue` overrides documented below.\n * - `value` / `defaultValue` are RAW digits (e.g. \"5551234567\").\n * - The displayed value in the field is formatted \"(555) 123-4567\".\n * - In controlled mode `onChange` fires with a synthetic event whose\n * `target.value` is the raw digit string. Call sites depend on this.\n * - In uncontrolled mode a hidden `<input name>` mirrors the raw digits\n * so native form posts still work.\n *\n * NEW (additive): forwardRef<HTMLInputElement>, label/error/prefix/suffix,\n * size variants, etc. flow through Input.\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype InputProps = React.ComponentProps<typeof Input>;\n\ninterface PhoneInputProps extends Omit<InputProps, \"type\" | \"onChange\" | \"value\" | \"defaultValue\"> {\n value?: string;\n defaultValue?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(function PhoneInput(\n { value, defaultValue, onChange, name, ...props },\n ref,\n) {\n const isControlled = value !== undefined;\n const [internalDigits, setInternalDigits] = useState(() => stripToDigits(defaultValue ?? \"\"));\n\n const hiddenRef = useRef<HTMLInputElement>(null);\n\n const digits = isControlled ? stripToDigits(value) : internalDigits;\n const displayValue = formatPhoneDisplay(digits);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = stripToDigits(e.target.value);\n\n if (isControlled && onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: raw },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n } else {\n setInternalDigits(raw);\n if (hiddenRef.current) {\n hiddenRef.current.value = raw;\n }\n }\n },\n [isControlled, onChange],\n );\n\n return (\n <>\n <Input\n {...props}\n ref={ref}\n type=\"tel\"\n name={isControlled ? name : undefined}\n value={displayValue}\n onChange={handleChange}\n inputMode=\"tel\"\n autoComplete={props.autoComplete ?? \"tel-national\"}\n />\n {!isControlled && name && (\n <input type=\"hidden\" ref={hiddenRef} name={name} defaultValue={digits} />\n )}\n </>\n );\n});\n\nPhoneInput.displayName = \"PhoneInput\";\n","\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ProgressBar — Radix-driven determinate (or indeterminate) progress meter.\n * Track sits on `bg-3`; fills follow the status palette. Variants are an\n * explicit cva enum; if `variant` is omitted, it auto-resolves from value:\n * <50% → default (Pro purple)\n * ≥50% → warning\n * ≥80% → success\n *\n * Public API preserved: `value`, `max`, `label`, `showPercentage`, `variant`.\n * Pass `value={null}` (or omit when in-doubt) to render Radix's indeterminate\n * state — but for back-compat we still accept `value: number`.\n */\nexport const progressBarVariants = cva(\n \"h-full rounded-full transition-[width,background-color] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]\",\n {\n variants: {\n variant: {\n default: \"bg-pro-fg\",\n success: \"bg-success-fg\",\n warning: \"bg-warning-fg\",\n destructive: \"bg-danger-fg\",\n info: \"bg-accent\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressBarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>, \"value\">,\n VariantProps<typeof progressBarVariants> {\n /** 0..max. Set to `null` for an indeterminate track. */\n value: number | null;\n max?: number;\n label?: string;\n showPercentage?: boolean;\n}\n\nexport const ProgressBar = forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressBarProps\n>(function ProgressBar(\n { value, max = 100, label, showPercentage, variant, className, ...props },\n ref,\n) {\n const isIndeterminate = value == null;\n const percentage = isIndeterminate ? 0 : Math.min(100, Math.max(0, (value / max) * 100));\n\n const resolvedVariant =\n variant ??\n (!isIndeterminate && percentage >= 80\n ? \"success\"\n : !isIndeterminate && percentage >= 50\n ? \"warning\"\n : \"default\");\n\n return (\n <div className={cn(\"w-full\", className)}>\n {(label || showPercentage) && (\n <div className=\"mb-1.5 flex items-center justify-between text-sm\">\n {label && <span className=\"text-fg-2 font-medium\">{label}</span>}\n {showPercentage && !isIndeterminate && (\n <span className=\"text-fg-3 font-mono text-xs tabular-nums\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n value={isIndeterminate ? null : value}\n max={max}\n aria-label={label ?? \"Progress\"}\n className=\"bg-bg-3 relative h-2 w-full overflow-hidden rounded-full\"\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n progressBarVariants({ variant: resolvedVariant }),\n isIndeterminate &&\n \"absolute inset-y-0 left-0 w-1/3 animate-[progress-indeterminate_1.4s_var(--ease-out-quart)_infinite]\",\n )}\n style={isIndeterminate ? undefined : { width: `${percentage}%` }}\n />\n </ProgressPrimitive.Root>\n {/* Indeterminate keyframes (scoped, no token leakage). */}\n {isIndeterminate && (\n <style>{`\n @keyframes progress-indeterminate {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(400%); }\n }\n `}</style>\n )}\n </div>\n );\n});\n\nProgressBar.displayName = \"ProgressBar\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ProgressRing — custom SVG ring meter (no Radix equivalent).\n * Track is `bg-3`, the indicator picks up the active variant. Variants and\n * value-driven auto-resolve mirror ProgressBar so consumers can mix freely.\n *\n * Public API preserved: `value`, `max`, `size`, `strokeWidth`, `label`, `sublabel`.\n */\n\nexport const progressRingVariants = cva(\n \"transition-[stroke-dashoffset,stroke] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]\",\n {\n variants: {\n variant: {\n default: \"text-pro-fg\",\n success: \"text-success-fg\",\n warning: \"text-warning-fg\",\n destructive: \"text-danger-fg\",\n info: \"text-accent\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressRingProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof progressRingVariants> {\n value: number;\n max?: number;\n size?: number;\n strokeWidth?: number;\n label?: string;\n sublabel?: string;\n}\n\nexport const ProgressRing = forwardRef<HTMLDivElement, ProgressRingProps>(function ProgressRing(\n { value, max = 100, size = 80, strokeWidth = 6, label, sublabel, variant, className, ...props },\n ref,\n) {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n const resolvedVariant =\n variant ?? (percentage >= 80 ? \"success\" : percentage >= 50 ? \"warning\" : \"default\");\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex flex-col items-center gap-1\", className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label ?? \"Progress\"}\n {...props}\n >\n <div className=\"relative inline-flex\" style={{ width: size, height: size }}>\n <svg width={size} height={size} className=\"-rotate-90\" aria-hidden=\"true\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n className=\"text-bg-3\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={progressRingVariants({ variant: resolvedVariant })}\n />\n </svg>\n {label && !sublabel && (\n <span className=\"text-fg pointer-events-none absolute inset-0 flex items-center justify-center font-mono text-xs font-medium tabular-nums\">\n {label}\n </span>\n )}\n </div>\n {label && sublabel && (\n <span className=\"text-fg font-mono text-sm font-medium tabular-nums\">{label}</span>\n )}\n {sublabel && <span className=\"text-fg-3 text-xs\">{sublabel}</span>}\n </div>\n );\n});\n\nProgressRing.displayName = \"ProgressRing\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CircleIcon } from \"./icons\";\n/**\n * RadioGroup — Radix-backed radio control styled per Assure Pro tokens.\n * Public API preserved: <RadioGroup value defaultValue onValueChange name>\n * with <RadioGroupItem value label />.\n */\n\ntype RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(function RadioGroup({ className, ...props }, ref) {\n return <RadioGroupPrimitive.Root ref={ref} className={cn(\"grid gap-2\", className)} {...props} />;\n});\n\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\ninterface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n> {\n /** Optional inline label rendered to the right of the radio */\n label?: string;\n}\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(function RadioGroupItem({ className, label, id: providedId, ...props }, ref) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n const root = (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={id}\n className={cn(\n \"peer border-rule-strong bg-surface text-pro-fg aspect-square size-4 shrink-0 rounded-full border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"hover:border-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[state=checked]:border-pro-fg\",\n \"disabled:bg-bg-disabled disabled:border-rule disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <CircleIcon className=\"fill-pro-fg text-pro-fg size-2\" aria-hidden=\"true\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n\n if (!label) return root;\n\n return (\n <div className=\"flex items-center gap-2\">\n {root}\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n </div>\n );\n});\n\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* ScrollArea */\n/* Wraps Radix ScrollArea + a styled scrollbar to match _shared.css scrollbar */\n/* -------------------------------------------------------------------------- */\n\ninterface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n children: React.ReactNode;\n}\n\nexport const ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n ScrollAreaProps\n>(function ScrollArea({ className, children, ...props }, ref) {\n return (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n});\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\ntype ScrollBarProps = React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n>;\n\nexport const ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n ScrollBarProps\n>(function ScrollBar({ className, orientation = \"vertical\", ...props }, ref) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] select-none motion-reduce:transition-none\",\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className={cn(\n \"bg-rule-strong relative flex-1 rounded-full\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-fg-4\",\n )}\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n});\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\nimport { useDebounce } from \"../hooks/use-debounce\";\n\nimport { SearchIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SearchInput — raw <input type=\"search\"> with a leading catalog `SearchIcon`\n * and a trailing clear (X) button. Tokenized to Assure Pro.\n *\n * Public API preserved:\n * <SearchInput value onValueChange onSearch debounceMs />\n *\n * NEW (additive): `inputSize` (\"sm\" | \"md\" | \"lg\") variant. Default \"md\"\n * matches the toolbar `.toolbar-search` size used in the data-table mockup.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst searchInputVariants = cva(\n [\n \"flex w-full rounded-input border border-rule-strong bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n // Hide the native search-cancel button — we render our own clear button.\n \"[&::-webkit-search-cancel-button]:appearance-none\",\n \"[&::-webkit-search-decoration]:appearance-none\",\n ],\n {\n variants: {\n inputSize: {\n sm: \"h-8 pl-8 pr-8 text-xs\",\n md: \"h-9 pl-9 pr-9 text-[13px]\",\n lg: \"h-11 pl-10 pr-10 text-sm\",\n },\n },\n defaultVariants: {\n inputSize: \"md\",\n },\n },\n);\n\nexport type SearchInputVariants = VariantProps<typeof searchInputVariants>;\n\ninterface SearchInputProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\" | \"size\">,\n SearchInputVariants {\n value: string;\n onValueChange: (value: string) => void;\n onSearch?: (value: string) => void;\n debounceMs?: number;\n}\n\nexport const SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n function SearchInput(\n {\n value,\n onValueChange,\n onSearch,\n debounceMs = 300,\n inputSize,\n className,\n placeholder = \"Search...\",\n disabled,\n ...props\n },\n ref,\n ) {\n const debouncedValue = useDebounce(value, debounceMs);\n const isFirstRender = React.useRef(true);\n\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n onSearch?.(debouncedValue);\n }, [debouncedValue, onSearch]);\n\n const sz = inputSize ?? \"md\";\n const iconLeftClass = sz === \"sm\" ? \"left-2.5\" : sz === \"lg\" ? \"left-3\" : \"left-3\";\n const iconRightClass = sz === \"sm\" ? \"right-2\" : sz === \"lg\" ? \"right-3\" : \"right-2.5\";\n const iconSizeClass = sz === \"sm\" ? \"size-3.5\" : \"size-4\";\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <SearchIcon\n className={cn(\n \"text-fg-4 pointer-events-none absolute top-1/2 -translate-y-1/2\",\n iconLeftClass,\n iconSizeClass,\n )}\n aria-hidden=\"true\"\n />\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(searchInputVariants({ inputSize }))}\n {...props}\n />\n {value && !disabled && (\n <button\n type=\"button\"\n onClick={() => onValueChange(\"\")}\n className={cn(\n \"rounded-pill text-fg-4 absolute top-1/2 -translate-y-1/2 p-0.5\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n iconRightClass,\n )}\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <XIcon className={iconSizeClass} aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n },\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport { searchInputVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"./popover\";\n\nimport { CheckIcon, PlusIcon, SearchIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SearchSelect — multi-select combobox with optional create-on-the-fly.\n *\n * Implementation: cmdk (`Command`, `Command.Input`, `Command.List`,\n * `Command.Empty`, `Command.Item`) wrapped inside a Radix Popover so the\n * options surface escapes its container and matches the Assure Pro\n * `shadow-pop` elevation.\n *\n * Public API preserved verbatim:\n * <SearchSelect\n * options selected\n * onSelect onRemove onCreate\n * placeholder disabled className\n * />\n *\n * Behaviour preserved:\n * - Selected items render as chips above the input.\n * - Already-selected options are filtered out of the dropdown list.\n * - When `onCreate` is provided AND the trimmed query has no exact match,\n * a \"Create '<q>'\" affordance appears below the filtered list.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SearchSelectOption {\n id: string;\n label: string;\n}\n\ninterface SearchSelectProps {\n options: SearchSelectOption[];\n selected: SearchSelectOption[];\n onSelect: (option: SearchSelectOption) => void;\n onRemove: (option: SearchSelectOption) => void;\n onCreate?: (name: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function SearchSelect({\n options,\n selected,\n onSelect,\n onRemove,\n onCreate,\n placeholder = \"Search...\",\n className,\n disabled = false,\n}: SearchSelectProps) {\n const [search, setSearch] = React.useState(\"\");\n const [open, setOpen] = React.useState(false);\n\n const selectedIds = React.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);\n\n const filtered = React.useMemo(\n () => options.filter((opt) => !selectedIds.has(opt.id)),\n [options, selectedIds],\n );\n\n const trimmedSearch = search.trim();\n const hasExactMatch = React.useMemo(\n () => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),\n [options, trimmedSearch],\n );\n const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;\n\n const handleSelect = React.useCallback(\n (option: SearchSelectOption) => {\n onSelect(option);\n setSearch(\"\");\n },\n [onSelect],\n );\n\n const handleCreate = React.useCallback(() => {\n if (onCreate && trimmedSearch) {\n onCreate(trimmedSearch);\n setSearch(\"\");\n setOpen(false);\n }\n }, [onCreate, trimmedSearch]);\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n {/* Selected chips */}\n {selected.length > 0 && (\n <div className=\"mb-2 flex flex-wrap gap-1.5\">\n {selected.map((item) => (\n <span\n key={item.id}\n className={cn(\n \"rounded-pill border-rule inline-flex items-center gap-1 border px-2 py-0.5 text-[12px]\",\n \"bg-bg-2 font-body text-fg-2\",\n )}\n >\n {item.label}\n <button\n type=\"button\"\n onClick={() => onRemove(item)}\n disabled={disabled}\n className={cn(\n \"text-fg-3 ml-0.5 rounded-full p-0.5\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed disabled:hover:bg-transparent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label={`Remove ${item.label}`}\n >\n <XIcon className=\"size-3\" aria-hidden=\"true\" />\n </button>\n </span>\n ))}\n </div>\n )}\n\n <Popover open={open && !disabled} onOpenChange={setOpen}>\n <CommandPrimitive\n shouldFilter\n className=\"overflow-visible bg-transparent\"\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n setOpen(false);\n }\n }}\n >\n <PopoverAnchor asChild>\n <div\n className={cn(\n \"rounded-input border-rule-strong bg-surface relative flex h-9 w-full items-center border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-within:border-accent focus-within:[box-shadow:var(--shadow-focus-ring)]\",\n disabled && \"bg-bg-disabled cursor-not-allowed\",\n )}\n >\n <SearchIcon\n className=\"text-fg-4 pointer-events-none absolute left-3 size-4\"\n aria-hidden=\"true\"\n />\n <CommandPrimitive.Input\n value={search}\n onValueChange={(v) => {\n setSearch(v);\n if (!disabled) setOpen(true);\n }}\n onFocus={() => {\n if (!disabled) setOpen(true);\n }}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"font-body text-fg flex-1 bg-transparent py-2 pr-3 pl-9 text-[13px] outline-none\",\n \"placeholder:text-fg-4\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed\",\n )}\n />\n </div>\n </PopoverAnchor>\n\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n const target = e.target as HTMLElement;\n if (target.closest(\"[cmdk-input]\")) e.preventDefault();\n }}\n className={cn(\"w-(--radix-popover-trigger-width) p-0\", \"min-w-[12rem]\")}\n >\n <CommandPrimitive.List className=\"scrollbar-thin max-h-60 overflow-y-auto p-1\">\n {filtered.length === 0 && !showCreate && (\n <CommandPrimitive.Empty className=\"text-fg-3 px-3 py-2 text-xs\">\n {search ? \"No results found.\" : \"No options available.\"}\n </CommandPrimitive.Empty>\n )}\n\n {filtered.map((option) => (\n <CommandPrimitive.Item\n key={option.id}\n value={option.label}\n onSelect={() => handleSelect(option)}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"data-[selected=true]:bg-bg-2 data-[selected=true]:text-fg\",\n )}\n >\n <CheckIcon className=\"size-4 shrink-0 text-transparent\" aria-hidden=\"true\" />\n <span className=\"truncate\">{option.label}</span>\n </CommandPrimitive.Item>\n ))}\n\n {showCreate && (\n <>\n {filtered.length > 0 && (\n <div className=\"bg-rule -mx-1 my-1 h-px\" aria-hidden=\"true\" />\n )}\n <CommandPrimitive.Item\n value={`__create_${trimmedSearch}`}\n onSelect={handleCreate}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"data-[selected=true]:bg-pro-bg\",\n )}\n >\n <PlusIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <span className=\"truncate\">Create “{trimmedSearch}”</span>\n </CommandPrimitive.Item>\n </>\n )}\n </CommandPrimitive.List>\n </PopoverContent>\n </CommandPrimitive>\n </Popover>\n </div>\n );\n}\n\nSearchSelect.displayName = \"SearchSelect\";\n","import { cn } from \"../lib/cn\";\n\n/**\n * SectionHeader — title + description block for marketing-style sections.\n * Uses Geist (`font-display`) with the spec's `-0.022em` letterspacing.\n */\n\ninterface SectionHeaderProps {\n title: string;\n description?: string;\n align?: \"left\" | \"center\";\n className?: string;\n}\n\nexport function SectionHeader({\n title,\n description,\n align = \"center\",\n className,\n}: SectionHeaderProps) {\n return (\n <div\n className={cn(\n \"mb-16\",\n align === \"center\" && \"mx-auto max-w-2xl text-center\",\n align === \"left\" && \"max-w-lg\",\n className,\n )}\n >\n <h2\n className={cn(\n \"font-display text-fg mb-4 text-3xl font-medium tracking-[-0.028em] md:text-4xl\",\n )}\n >\n {title}\n </h2>\n {description && <p className=\"text-fg-3 text-lg leading-relaxed\">{description}</p>}\n </div>\n );\n}\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Section — max-width centered wrapper for marketing/section content.\n * The `--content-pad` token (32px) is the canonical app-content gutter,\n * but Section keeps its 24px (`px-6`) gutter for narrower marketing pages.\n */\n\nconst maxWidthStyles = {\n sm: \"max-w-3xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-5xl\",\n xl: \"max-w-6xl\",\n} as const;\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n maxWidth?: keyof typeof maxWidthStyles;\n as?: \"section\" | \"div\";\n}\n\nexport const Section = forwardRef<HTMLElement, SectionProps>(function Section(\n { maxWidth = \"xl\", as: Tag = \"section\", children, className, ...props },\n ref,\n) {\n // Cast ref to any: TS can't narrow forwardRef across a polymorphic Tag.\n return (\n <Tag\n ref={ref as React.Ref<HTMLElement> as never}\n className={cn(\"px-6 py-24\", className)}\n {...props}\n >\n <div className={cn(\"mx-auto\", maxWidthStyles[maxWidth])}>{children}</div>\n </Tag>\n );\n});\n\nSection.displayName = \"Section\";\n\ninterface SectionHeadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n eyebrow?: React.ReactNode;\n title?: React.ReactNode;\n meta?: React.ReactNode;\n}\n\nexport const SectionHead = forwardRef<HTMLDivElement, SectionHeadProps>(function SectionHead(\n { eyebrow, title, meta, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-rule-soft mb-3 flex items-end justify-between gap-3 border-b pb-2\",\n className,\n )}\n {...props}\n >\n <div className=\"min-w-0 space-y-1\">\n {eyebrow && (\n <div className=\"text-fg-4 font-mono [font-feature-settings:'tnum'_1,'lnum'_1,'ss01'_1] text-[10.5px] font-medium tracking-[0.14em] uppercase\">\n {eyebrow}\n </div>\n )}\n {title && (\n <h3 className=\"font-display text-fg text-sm leading-tight font-medium\">{title}</h3>\n )}\n {children}\n </div>\n {meta && <div className=\"text-fg-3 shrink-0 text-xs\">{meta}</div>}\n </div>\n );\n});\n\nSectionHead.displayName = \"SectionHead\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../lib/cn\";\n\ntype SeparatorProps = React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>;\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(function Separator({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-rule shrink-0\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className,\n )}\n {...props}\n />\n );\n});\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Sheet — slide-in panel on top of @radix-ui/react-dialog (shadcn pattern).\n *\n * Public API preserved:\n * Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader,\n * SheetTitle, SheetDescription, SheetFooter\n *\n * `side` lives on SheetContent (in shadcn it's a content-level prop). For\n * backwards compatibility with the prior implementation, the `Sheet` root\n * also accepts `side` and forwards it to SheetContent via context.\n *\n * NEW (additive): SheetPortal, SheetOverlay are also exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ninterface SheetSideContextValue {\n side?: Side;\n}\nconst SheetSideContext = React.createContext<SheetSideContextValue>({});\n\ninterface SheetProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Root> {\n /**\n * Default side for SheetContent if it doesn't specify its own.\n * Backwards-compat shim — prefer `<SheetContent side=\"…\" />`.\n */\n side?: Side;\n}\n\nconst Sheet = ({ side, children, ...props }: SheetProps) => (\n <SheetPrimitive.Root {...props}>\n <SheetSideContext value={{ side }}>{children}</SheetSideContext>\n </SheetPrimitive.Root>\n);\nSheet.displayName = \"Sheet\";\n\nconst SheetTrigger = SheetPrimitive.Trigger;\nconst SheetClose = SheetPrimitive.Close;\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n cn(\n \"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-pop\",\n \"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n ),\n {\n variants: {\n side: {\n top: cn(\n \"inset-x-0 top-0 border-b border-rule\",\n \"data-[state=closed]:-translate-y-full data-[state=open]:translate-y-0\",\n ),\n bottom: cn(\n \"inset-x-0 bottom-0 border-t border-rule max-h-[85vh]\",\n \"data-[state=closed]:translate-y-full data-[state=open]:translate-y-0\",\n ),\n left: cn(\n \"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-rule\",\n \"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0\",\n ),\n right: cn(\n \"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-rule\",\n \"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0\",\n ),\n },\n },\n defaultVariants: { side: \"right\" },\n },\n);\n\ninterface SheetContentProps\n extends\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n /** If false, the built-in close button is hidden. Default: true. */\n showCloseButton?: boolean;\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side, className, children, showCloseButton = true, ...props }, ref) => {\n const ctx = React.use(SheetSideContext);\n const resolvedSide: Side = side ?? ctx.side ?? \"right\";\n\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side: resolvedSide }), className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n className={cn(\n \"absolute top-4 right-4 inline-flex size-7 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n});\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col gap-1.5 p-6 pr-12 pb-0\", className)} {...props} />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"border-rule mt-auto flex flex-col-reverse gap-2 border-t p-6 sm:flex-row sm:items-center sm:justify-end\",\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description ref={ref} className={cn(\"text-fg-3 text-sm\", className)} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SideDrawer — slide-in panel on top of @radix-ui/react-dialog.\n *\n * Public API preserved:\n * <SideDrawer open onClose width? side?>{children}</SideDrawer>\n * SideDrawer.Header({ title, subtitle, onClose, className })\n * SideDrawer.Body({ children, className })\n * SideDrawer.Footer({ children, className })\n *\n * Width presets: \"sm\" (420px) | \"md\" (640px) | \"lg\" (50vw, default)\n * Sides: \"right\" (default) | \"left\"\n *\n * Animation uses tw-animate-css `slide-in-from-{side}` keyed on\n * `data-[state=open|closed]` for parity with the Sheet primitive.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst sideDrawerVariants = cva(\n cn(\n \"fixed inset-y-0 z-[var(--z-modal)] flex h-full flex-col bg-surface text-fg shadow-pop\",\n \"font-body\",\n \"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n ),\n {\n variants: {\n side: {\n right: cn(\n \"right-0 border-l border-rule\",\n \"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0\",\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-right\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right\",\n ),\n left: cn(\n \"left-0 border-r border-rule\",\n \"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0\",\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-left\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left\",\n ),\n },\n width: {\n sm: \"w-[420px] max-md:w-[95vw]\",\n md: \"w-[640px] max-lg:w-[80vw] max-md:w-[95vw]\",\n lg: \"w-[50vw] max-lg:w-[80vw] max-md:w-[95vw]\",\n },\n },\n defaultVariants: { side: \"right\", width: \"lg\" },\n },\n);\n\ninterface SideDrawerProps extends VariantProps<typeof sideDrawerVariants> {\n open: boolean;\n onClose: () => void;\n width?: \"sm\" | \"md\" | \"lg\";\n side?: \"right\" | \"left\";\n children: React.ReactNode;\n}\n\nexport function SideDrawer({\n open,\n onClose,\n width = \"lg\",\n side = \"right\",\n children,\n}: SideDrawerProps) {\n return (\n <DialogPrimitive.Root\n open={open}\n onOpenChange={(v) => {\n if (!v) onClose();\n }}\n >\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n )}\n />\n <DialogPrimitive.Content\n className={cn(sideDrawerVariants({ side, width }))}\n // Radix Dialog requires a Title for a11y. Sub-components may\n // render their own visible title, so we provide an SR-only\n // fallback that is always present and harmless.\n aria-describedby={undefined}\n >\n <DialogPrimitive.Title className=\"sr-only\">Side drawer</DialogPrimitive.Title>\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n\n/* ─── Header ────────────────────────────────────────────────── */\n\ninterface SideDrawerHeaderProps {\n title: string;\n subtitle?: string;\n onClose?: () => void;\n className?: string;\n}\n\nfunction SideDrawerHeader({ title, subtitle, onClose, className }: SideDrawerHeaderProps) {\n return (\n <div className={cn(\"border-rule bg-surface shrink-0 border-b px-6 py-4\", className)}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"font-display text-fg truncate text-base leading-tight font-medium tracking-tight\">\n {title}\n </h2>\n {subtitle && <p className=\"text-fg-3 mt-1 text-sm\">{subtitle}</p>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"inline-flex size-7 shrink-0 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\n/* ─── Body ──────────────────────────────────────────────────── */\n\ninterface SideDrawerBodyProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SideDrawerBody({ children, className }: SideDrawerBodyProps) {\n return (\n <div className={cn(\"scrollbar-thin flex-1 overflow-y-auto px-6 py-4\", className)}>\n {children}\n </div>\n );\n}\n\n/* ─── Footer ────────────────────────────────────────────────── */\n\ninterface SideDrawerFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SideDrawerFooter({ children, className }: SideDrawerFooterProps) {\n return (\n <div\n className={cn(\n \"border-rule bg-surface shrink-0 border-t px-6 py-4\",\n \"flex items-center justify-end gap-3\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\n/* ─── Attach sub-components ─────────────────────────────────── */\n\nSideDrawer.Header = SideDrawerHeader;\nSideDrawer.Body = SideDrawerBody;\nSideDrawer.Footer = SideDrawerFooter;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Skeleton — animated placeholder. The `.skeleton` global class supplies\n * the shimmer animation (defined in tokens.css). All three primitives are\n * `aria-hidden` because they're decorative loading affordances.\n */\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"skeleton bg-bg-3 rounded-icon animate-pulse\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n});\nSkeleton.displayName = \"Skeleton\";\n\ninterface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n lines?: number;\n}\n\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(function SkeletonText(\n { lines = 3, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)} aria-hidden=\"true\" {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={cn(\n \"skeleton bg-bg-3 rounded-icon h-4 animate-pulse\",\n i === lines - 1 && \"w-3/4\",\n )}\n />\n ))}\n </div>\n );\n});\nSkeletonText.displayName = \"SkeletonText\";\n\ninterface SkeletonCircleProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n function SkeletonCircle({ size = 40, className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"skeleton bg-bg-3 animate-pulse rounded-full\", className)}\n style={{ width: size, height: size }}\n aria-hidden=\"true\"\n {...props}\n />\n );\n },\n);\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../lib/cn\";\n\ninterface SliderProps extends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n /** Optional inline label rendered above the track */\n label?: string;\n /** When true, renders the current value to the right of the label */\n showValue?: boolean;\n}\n\nexport const Slider = React.forwardRef<React.ElementRef<typeof SliderPrimitive.Root>, SliderProps>(\n function Slider(\n {\n className,\n label,\n showValue,\n id: providedId,\n min = 0,\n max = 100,\n value,\n defaultValue,\n ...props\n },\n ref,\n ) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n // Resolve a representative single value for the optional readout\n const displayValue = (() => {\n const v = value ?? defaultValue;\n if (Array.isArray(v)) return v.join(\" – \");\n if (typeof v === \"number\") return v;\n return min;\n })();\n\n return (\n <div className=\"w-full\">\n {(label || showValue) && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n {label ? (\n <label htmlFor={id} className=\"text-fg text-[13px] leading-none font-medium\">\n {label}\n </label>\n ) : (\n <span />\n )}\n {showValue && <span className=\"text-fg-3 font-mono text-[12px]\">{displayValue}</span>}\n </div>\n )}\n <SliderPrimitive.Root\n ref={ref}\n id={id}\n min={min}\n max={max}\n value={value}\n defaultValue={defaultValue}\n className={cn(\n \"relative flex w-full touch-none items-center select-none\",\n \"data-[disabled]:cursor-not-allowed\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-bg-3 data-[disabled]:bg-bg-disabled relative h-1.5 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-pro-fg data-[disabled]:bg-fg-disabled absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n className={cn(\n \"border-pro-fg bg-surface shadow-quiet block size-4 rounded-full border\",\n \"transition-[box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:scale-105\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed\",\n \"data-[disabled]:border-fg-disabled data-[disabled]:bg-bg-disabled\",\n )}\n aria-label={label}\n />\n </SliderPrimitive.Root>\n </div>\n );\n },\n);\n\nSlider.displayName = SliderPrimitive.Root.displayName;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { StarIcon } from \"./icons\";\n/**\n * StarRating — display-only rating atom built on lucide `Star`. Supports\n * fractional ratings (half-star fill via clip path) and a sized cva variant.\n *\n * Public API preserved: `rating`, `max`, `size`, `className`. The original\n * accepted `size` as a number; that still works (overrides the variant). The\n * new optional `sizeVariant` reads via cva (`sm` / `md` / `lg`).\n */\n\nexport const starRatingVariants = cva(\"flex items-center gap-0.5\", {\n variants: {\n sizeVariant: {\n sm: \"[&_svg]:size-3.5\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: { sizeVariant: \"md\" },\n});\n\nexport interface StarRatingProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"role\">,\n VariantProps<typeof starRatingVariants> {\n rating: number;\n max?: number;\n /** Pixel size override; if set, takes precedence over `sizeVariant`. */\n size?: number;\n}\n\nexport const StarRating = forwardRef<HTMLDivElement, StarRatingProps>(function StarRating(\n { rating, max = 5, size, sizeVariant, className, ...props },\n ref,\n) {\n const stars = Array.from({ length: max });\n const sizeStyle = size ? { width: size, height: size } : undefined;\n\n return (\n <div\n ref={ref}\n role=\"img\"\n aria-label={`${rating} out of ${max} stars`}\n className={cn(starRatingVariants({ sizeVariant }), className)}\n {...props}\n >\n {stars.map((_, i) => {\n // Fractional fill calc: 0..1 per star\n const fill = Math.max(0, Math.min(1, rating - i));\n const isFull = fill >= 1;\n const isEmpty = fill === 0;\n const isHalf = !isFull && !isEmpty;\n\n return (\n <span key={i} className=\"relative inline-flex shrink-0\" style={sizeStyle}>\n {/* Track star (empty) */}\n <StarIcon\n className=\"text-fg-5\"\n style={sizeStyle}\n strokeWidth={1.5}\n aria-hidden=\"true\"\n />\n {/* Fill overlay */}\n {!isEmpty && (\n <span\n className=\"text-warning-fg pointer-events-none absolute inset-0 overflow-hidden\"\n style={{\n width: isFull ? \"100%\" : `${fill * 100}%`,\n }}\n aria-hidden=\"true\"\n >\n <StarIcon\n fill=\"currentColor\"\n className=\"text-warning-fg\"\n style={sizeStyle}\n strokeWidth={1.5}\n aria-hidden=\"true\"\n />\n </span>\n )}\n {/* Mark half stars for screen-readers via data attr (no a11y impact). */}\n {isHalf && (\n <span data-half-star className=\"sr-only\">\n half\n </span>\n )}\n </span>\n );\n })}\n </div>\n );\n});\n\nStarRating.displayName = \"StarRating\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Stat — paired numeric display + caption, the StatNum primitive from\n * spec §4. Numerals are set in `font-display` (Geist) at a fluid clamp size\n * with `font-variant-numeric: tabular-nums` for vertical alignment, ported\n * from the `.stat-num` rule in `_shared.css` (lines 152-161).\n */\n\ninterface StatProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n label: string;\n}\n\nexport const Stat = forwardRef<HTMLDivElement, StatProps>(function Stat(\n { value, label, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1\", className)} {...props}>\n <span\n className={cn(\n \"font-display text-fg block leading-none font-medium tracking-[-0.035em]\",\n \"text-[clamp(28px,3.4vw,38px)]\",\n )}\n style={{ fontVariantNumeric: \"tabular-nums\" }}\n >\n {value}\n </span>\n <span className=\"text-fg-3 text-sm\">{label}</span>\n </div>\n );\n});\n\nStat.displayName = \"Stat\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon } from \"./icons\";\n/**\n * Stepper — custom progress indicator. No Radix equivalent.\n * Active step uses Pro purple; completed steps use the success palette;\n * connector lines pick up the same status. Supports horizontal (default)\n * and vertical orientation.\n *\n * Public API preserved: `steps`, `currentStep`, plus the new optional\n * `orientation` prop for vertical layouts.\n */\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: Step[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n { steps, currentStep, orientation = \"horizontal\", className, ...props },\n ref,\n) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n ref={ref}\n className={cn(isVertical ? \"flex flex-col gap-1\" : \"flex items-start gap-2\", className)}\n aria-label=\"Progress\"\n {...props}\n >\n {steps.map((step, index) => {\n const isCompleted = index < currentStep;\n const isActive = index === currentStep;\n const isLast = index === steps.length - 1;\n\n return (\n <div\n key={step.label}\n className={cn(\n isVertical ? \"flex gap-3\" : \"flex items-start gap-2\",\n !isLast && isVertical && \"pb-2\",\n )}\n >\n {/* Marker + connector column (vertical) / inline (horizontal) */}\n <div\n className={cn(isVertical ? \"flex flex-col items-center\" : \"flex items-center gap-2\")}\n >\n <div\n className={cn(\n \"flex size-7 shrink-0 items-center justify-center rounded-full border text-xs font-medium tabular-nums\",\n \"transition-colors duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n isCompleted && \"bg-success-bg text-success-fg border-success-line\",\n isActive && \"bg-pro-fg text-fg-on-pro border-pro-fg shadow-quiet\",\n !isCompleted && !isActive && \"bg-surface text-fg-4 border-rule\",\n )}\n aria-current={isActive ? \"step\" : undefined}\n >\n {isCompleted ? (\n <CheckIcon className=\"size-3.5\" strokeWidth={2.5} aria-hidden=\"true\" />\n ) : (\n index + 1\n )}\n </div>\n\n {/* Vertical connector */}\n {isVertical && !isLast && (\n <div\n className={cn(\n \"mt-1 min-h-4 w-px flex-1\",\n isCompleted ? \"bg-success-line\" : \"bg-rule\",\n )}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Horizontal label inline beside marker */}\n {!isVertical && (\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"text-sm leading-tight font-medium\",\n isActive ? \"text-fg\" : isCompleted ? \"text-fg-2\" : \"text-fg-4\",\n )}\n >\n {step.label}\n </span>\n {step.description && (\n <span className=\"text-fg-4 mt-0.5 text-xs leading-tight\">\n {step.description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Vertical label column */}\n {isVertical && (\n <div className=\"flex flex-col pb-1\">\n <span\n className={cn(\n \"text-sm leading-tight font-medium\",\n isActive ? \"text-fg\" : isCompleted ? \"text-fg-2\" : \"text-fg-4\",\n )}\n >\n {step.label}\n </span>\n {step.description && (\n <span className=\"text-fg-4 mt-0.5 text-xs leading-tight\">{step.description}</span>\n )}\n </div>\n )}\n\n {/* Horizontal connector */}\n {!isVertical && !isLast && (\n <div\n className={cn(\n \"mx-2 mt-3.5 h-px w-8 shrink-0 sm:w-12\",\n isCompleted ? \"bg-success-line\" : \"bg-rule\",\n )}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n })}\n </div>\n );\n});\n\nStepper.displayName = \"Stepper\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { useFormStatus } from \"react-dom\";\n\nimport { Button, type ButtonProps } from \"./button\";\nimport { cn } from \"../lib/cn\";\n\ninterface SubmitButtonProps extends Omit<ButtonProps, \"type\" | \"loading\"> {\n pendingText?: string;\n children: React.ReactNode;\n}\n\n/**\n * SubmitButton — react-dom `useFormStatus`-aware Button.\n * Auto-disables and shows `pendingText` (or spinner) while the form is pending.\n */\nexport const SubmitButton = forwardRef<HTMLButtonElement, SubmitButtonProps>(function SubmitButton(\n { pendingText, children, className, ...props },\n ref,\n) {\n const { pending } = useFormStatus();\n\n return (\n <Button\n ref={ref}\n type=\"submit\"\n loading={pending}\n disabled={pending}\n className={cn(\"w-full\", className)}\n {...props}\n >\n {pending && pendingText ? pendingText : children}\n </Button>\n );\n});\n\nSubmitButton.displayName = \"SubmitButton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst switchVariants = cva(\n [\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent\",\n \"transition-colors duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed\",\n \"data-[state=checked]:bg-pro-fg data-[state=unchecked]:bg-bg-3\",\n // §5.17: disabled is signalled via the disabled token swap on the\n // track itself; the thumb borrows fg-disabled. No opacity.\n \"data-[disabled]:data-[state=checked]:bg-fg-disabled\",\n \"data-[disabled]:data-[state=unchecked]:bg-bg-disabled\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst switchThumbVariants = cva(\n [\n \"pointer-events-none block rounded-full bg-surface shadow-quiet ring-0\",\n \"transition-transform duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ],\n {\n variants: {\n size: {\n sm: \"size-3.5 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0.5\",\n md: \"size-[18px] data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\ninterface SwitchProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, \"size\">,\n VariantProps<typeof switchVariants> {\n label?: string;\n}\n\nexport const Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n function Switch({ label, size, className, id: providedId, ...props }, ref) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n const root = (\n <SwitchPrimitive.Root\n ref={ref}\n id={id}\n className={cn(switchVariants({ size }), className)}\n {...props}\n >\n <SwitchPrimitive.Thumb className={cn(switchThumbVariants({ size }))} />\n </SwitchPrimitive.Root>\n );\n\n if (!label) return root;\n\n return (\n <div className=\"inline-flex items-center gap-2\">\n {root}\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n </div>\n );\n },\n);\n\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Table — semantic data-table primitives. Ports the `.data-table` rules\n * from `_shared.css` (lines 542-590):\n * - mono uppercase headers (10px, 0.12em tracking) on `bg-surface-2`\n * - 1px `border-rule` under header, `border-rule-soft` between rows\n * - 13px body cells in `text-fg-2`, hover row gets `bg-bg-2`\n *\n * Public API preserved: Table / TableHeader / TableBody / TableRow /\n * TableHead / TableCell / TableCaption. `wrapperClassName` still wraps\n * the responsive overflow container.\n */\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Class for the wrapping `div` that handles overflow. */\n wrapperClassName?: string;\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, wrapperClassName, ...props },\n ref,\n) {\n return (\n <div\n className={cn(\n \"rounded-card border-rule bg-surface w-full overflow-x-auto border\",\n wrapperClassName,\n )}\n >\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom border-collapse text-sm\", className)}\n {...props}\n />\n </div>\n );\n});\nTable.displayName = \"Table\";\n\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n function TableHeader({ className, ...props }, ref) {\n return (\n <thead ref={ref} className={cn(\"[&_tr]:border-rule [&_tr]:border-b\", className)} {...props} />\n );\n },\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, ...props },\n ref,\n) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n});\nTableBody.displayName = \"TableBody\";\n\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n ref={ref}\n className={cn(\n \"border-rule bg-surface-2 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nTableFooter.displayName = \"TableFooter\";\n\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>;\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { className, ...props },\n ref,\n) {\n return (\n <tr\n ref={ref}\n className={cn(\n \"border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n // G15 compound: selected wins over hover; selected+hover uses the\n // Pro hover tint (not bg-bg-2, which would fight the selection).\n \"data-[state=selected]:bg-pro-bg data-[state=selected]:hover:bg-pro-bg-hover\",\n \"[&:not([data-state=selected])]:hover:bg-bg-2\",\n className,\n )}\n {...props}\n />\n );\n});\nTableRow.displayName = \"TableRow\";\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement>;\n\nexport const TableHead = forwardRef<HTMLTableCellElement, TableHeadProps>(function TableHead(\n { className, ...props },\n ref,\n) {\n return (\n <th\n ref={ref}\n className={cn(\n // .data-table th — mono, 10px, uppercase, tight tracking 0.12em\n \"h-9 px-3.5 py-2 text-left align-middle whitespace-nowrap\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 bg-surface-2\",\n \"border-rule border-b\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n});\nTableHead.displayName = \"TableHead\";\n\nexport type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { className, ...props },\n ref,\n) {\n return (\n <td\n ref={ref}\n className={cn(\n // .data-table td — 13px, fg-2, soft 1px row divider, tabular nums\n \"text-fg-2 px-3.5 py-2.5 align-middle text-[13px] tabular-nums\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n});\nTableCell.displayName = \"TableCell\";\n\nexport type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>;\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n function TableCaption({ className, ...props }, ref) {\n return <caption ref={ref} className={cn(\"text-fg-3 mt-3 text-sm\", className)} {...props} />;\n },\n);\nTableCaption.displayName = \"TableCaption\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Tabs root */\n/* -------------------------------------------------------------------------- */\n\ntype TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>;\n\nexport const Tabs = React.forwardRef<React.ElementRef<typeof TabsPrimitive.Root>, TabsProps>(\n function Tabs({ className, ...props }, ref) {\n return <TabsPrimitive.Root ref={ref} className={cn(className)} {...props} />;\n },\n);\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsList */\n/* Per spec §5 / 04-client-detail.html: a flush row sitting on a 1px rule. */\n/* -------------------------------------------------------------------------- */\n\ntype TabsListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(function TabsList({ className, ...props }, ref) {\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\"border-rule inline-flex items-center gap-0 border-b\", className)}\n {...props}\n />\n );\n});\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsTrigger — pill | underline (default underline, matches mockup) */\n/* -------------------------------------------------------------------------- */\n\nconst triggerVariants = cva(\n cn(\n \"inline-flex items-center justify-center gap-2 text-[13px] font-medium\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n \"hover:text-fg\",\n ),\n {\n variants: {\n variant: {\n // §5.16: tab current = text-accent + 2px accent underline (tabs are\n // interaction, so cyan; Pro purple is reserved for selection state\n // on list/dropdown surfaces).\n underline: cn(\n \"rounded-none bg-transparent px-3.5 py-2.5\",\n \"border-b-2 border-transparent -mb-px\",\n \"data-[state=active]:border-accent data-[state=active]:text-accent\",\n ),\n pill: cn(\n \"rounded-pill px-3 py-1.5\",\n \"data-[state=active]:bg-pro-bg data-[state=active]:text-pro-fg\",\n ),\n },\n },\n defaultVariants: {\n variant: \"underline\",\n },\n },\n);\n\ninterface TabsTriggerProps\n extends\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof triggerVariants> {}\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(function TabsTrigger({ className, variant, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(triggerVariants({ variant }), className)}\n {...props}\n />\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsContent */\n/* -------------------------------------------------------------------------- */\n\ntype TabsContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-3 focus-visible:outline-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n className,\n )}\n {...props}\n />\n );\n});\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Badge } from \"./badge\";\nimport { Select, type SelectOption } from \"./select\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * TeamMemberSelect — assignee picker, built on the new Radix-based\n * `Select` primitive.\n *\n * Public API preserved verbatim:\n * <TeamMemberSelect\n * teamMembers currentUserId\n * value onValueChange\n * includeUnassigned placeholder\n * />\n *\n * Behaviour:\n * - Sort: current user first (when `currentUserId` matches), then\n * alphabetical on `fullName`.\n * - Current user is annotated with a small \"Me\" badge as the\n * `labelSuffix` of its option.\n * - When `includeUnassigned` is true (default), prepends a sentinel\n * `__unassigned__` option labelled \"Unassigned\". Note: legacy code\n * used `value: \"\"` for this, but Radix Select forbids empty-string\n * item values. We map \"\" ↔ \"__unassigned__\" transparently so the\n * consumer-facing contract (`value: \"\"` ⇔ unassigned) is preserved.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst UNASSIGNED_VALUE = \"__unassigned__\";\n\ninterface TeamMember {\n id: string;\n fullName: string;\n}\n\ninterface TeamMemberSelectProps {\n teamMembers: TeamMember[];\n currentUserId?: string | null;\n value: string;\n onValueChange: (value: string) => void;\n includeUnassigned?: boolean;\n placeholder?: string;\n className?: string;\n}\n\nexport function TeamMemberSelect({\n teamMembers,\n currentUserId,\n value,\n onValueChange,\n includeUnassigned = true,\n placeholder = \"Select team member...\",\n className,\n}: TeamMemberSelectProps) {\n const options = React.useMemo<SelectOption[]>(() => {\n const meBadge = (\n <Badge\n variant=\"secondary\"\n size=\"sm\"\n className=\"px-1.5 py-0 font-mono text-[10px] tracking-wider uppercase\"\n >\n Me\n </Badge>\n );\n\n // Sort: current user first, then alphabetical\n const sorted = [...teamMembers].sort((a, b) => {\n if (currentUserId) {\n if (a.id === currentUserId) return -1;\n if (b.id === currentUserId) return 1;\n }\n return a.fullName.localeCompare(b.fullName);\n });\n\n const memberOptions: SelectOption[] = sorted.map((m) => ({\n value: m.id,\n label: m.fullName,\n labelSuffix: m.id === currentUserId ? meBadge : undefined,\n }));\n\n if (includeUnassigned) {\n return [{ value: UNASSIGNED_VALUE, label: \"Unassigned\" }, ...memberOptions];\n }\n\n return memberOptions;\n }, [teamMembers, currentUserId, includeUnassigned]);\n\n // Map \"\" (legacy unassigned) ↔ sentinel for Radix.\n const innerValue = value === \"\" ? UNASSIGNED_VALUE : value;\n const handleChange = (next: string) => {\n onValueChange(next === UNASSIGNED_VALUE ? \"\" : next);\n };\n\n return (\n <Select\n options={options}\n value={innerValue}\n onValueChange={handleChange}\n placeholder={placeholder}\n className={className}\n />\n );\n}\n\nTeamMemberSelect.displayName = \"TeamMemberSelect\";\n","\"use client\";\n\nimport { forwardRef, useCallback, useEffect, useId, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst textareaVariants = cva(\n [\n \"flex w-full rounded-input border bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n ],\n {\n variants: {\n variant: {\n default: \"border-rule-strong\",\n ghost: \"border-transparent bg-transparent focus-visible:bg-surface\",\n },\n inputSize: {\n sm: \"min-h-16 px-2.5 py-1.5 text-xs\",\n md: \"min-h-20 px-3 py-2 text-[13px]\",\n lg: \"min-h-24 px-3.5 py-2.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inputSize: \"md\",\n },\n },\n);\n\nexport type TextareaVariants = VariantProps<typeof textareaVariants>;\n\ninterface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">, TextareaVariants {\n label?: string;\n error?: string;\n showCount?: boolean;\n autoResize?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n {\n label,\n error,\n showCount,\n autoResize,\n variant,\n inputSize,\n maxLength,\n value,\n defaultValue,\n className,\n id: providedId,\n onChange,\n ...props\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const internalRef = useRef<HTMLTextAreaElement | null>(null);\n\n const setRefs = useCallback(\n (node: HTMLTextAreaElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const adjustHeight = useCallback(() => {\n if (!autoResize || !internalRef.current) return;\n const el = internalRef.current;\n el.style.height = \"auto\";\n el.style.height = `${el.scrollHeight}px`;\n }, [autoResize]);\n\n useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n const currentLength =\n typeof value === \"string\"\n ? value.length\n : typeof defaultValue === \"string\"\n ? defaultValue.length\n : 0;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n </label>\n )}\n <textarea\n ref={setRefs}\n id={id}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n onChange={(e) => {\n onChange?.(e);\n adjustHeight();\n }}\n className={cn(\n textareaVariants({ variant, inputSize }),\n autoResize && \"resize-none overflow-hidden\",\n className,\n )}\n {...props}\n />\n {(error || (showCount && maxLength)) && (\n <div className=\"mt-1.5 flex items-center justify-between gap-2\">\n {error ? (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg text-xs\">\n {error}\n </p>\n ) : (\n <span />\n )}\n {showCount && maxLength && (\n <span className=\"text-fg-4 ml-auto font-mono text-[11px]\">\n {currentLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\n\nTextarea.displayName = \"Textarea\";\n\nexport { textareaVariants };\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Toast — custom (no Radix). Consumer contract:\n * useToast() → { toast, dismiss }\n *\n * Public API preserved + EXPANDED:\n * - `ToastProvider` mounts the toast region.\n * - `useToast()` now returns BOTH `{ toast, dismiss }` per the\n * lighttaxes-platform consumer contract (72+ call sites).\n * • `toast({ title, description?, variant?, duration? })`\n * • `dismiss(id?)` — dismiss a specific toast, or all when no id given.\n *\n * Variants restyled with Assure Pro tokens:\n * default → bg-surface / border-rule / text-fg\n * success → bg-success-bg / border-success-line / text-success-fg\n * destructive→ bg-danger-bg / border-danger-line / text-danger-fg\n * warning → bg-warning-bg / border-warning-line / text-warning-fg\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype ToastVariant = \"default\" | \"success\" | \"destructive\" | \"warning\";\n\ninterface Toast {\n id: string;\n title: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n}\n\ninterface ToastContextValue {\n toast: (options: Omit<Toast, \"id\">) => string;\n dismiss: (id?: string) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast() {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nlet toastCount = 0;\n\ninterface ToastProviderProps {\n children: React.ReactNode;\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((options: Omit<Toast, \"id\">) => {\n const id = `toast-${++toastCount}`;\n setToasts((prev) => [...prev, { id, ...options }]);\n return id;\n }, []);\n\n const dismiss = useCallback((id?: string) => {\n if (id === undefined) {\n setToasts([]);\n return;\n }\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const value = useMemo<ToastContextValue>(\n () => ({ toast: addToast, dismiss }),\n [addToast, dismiss],\n );\n\n return (\n <ToastContext value={value}>\n {children}\n <div\n className=\"pointer-events-none fixed top-4 right-4 z-[var(--z-toast)] flex flex-col gap-2\"\n aria-live=\"polite\"\n aria-label=\"Notifications\"\n >\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={removeToast} />\n ))}\n </div>\n </ToastContext>\n );\n}\n\nconst variantStyles: Record<ToastVariant, string> = {\n default: \"bg-surface border-rule text-fg\",\n success: \"bg-success-bg border-success-line text-success-fg\",\n destructive: \"bg-danger-bg border-danger-line text-danger-fg\",\n warning: \"bg-warning-bg border-warning-line text-warning-fg\",\n};\n\ninterface ToastItemProps {\n toast: Toast;\n onDismiss: (id: string) => void;\n}\n\nfunction ToastItem({ toast, onDismiss }: ToastItemProps) {\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const [exiting, setExiting] = useState(false);\n\n const close = useCallback(() => {\n setExiting(true);\n // Match exit animation duration (--duration-fast, 150ms) so the toast\n // unmounts immediately after it visually leaves the screen.\n setTimeout(() => onDismiss(toast.id), 150);\n }, [toast.id, onDismiss]);\n\n useEffect(() => {\n const duration = toast.duration ?? 5000;\n if (duration <= 0) return; // 0 = sticky toast\n timerRef.current = setTimeout(close, duration);\n return () => clearTimeout(timerRef.current);\n }, [toast.duration, close]);\n\n return (\n <div\n role=\"status\"\n data-state={exiting ? \"closed\" : \"open\"}\n className={cn(\n \"rounded-card shadow-card pointer-events-auto w-80 border p-4\",\n \"font-body\",\n // Unified data-state animation (spec §5.27) — same model as Dialog/Tooltip:\n // open → fade+slide in over --duration-overlay (200ms), ease-out-quart\n // close → fade+slide out over --duration-fast (150ms), ease-in\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-right-8 data-[state=open]:fade-in-0\",\n \"data-[state=open]:duration-[var(--duration-overlay)] data-[state=open]:ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right-8 data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:duration-[var(--duration-fast)] data-[state=closed]:ease-[var(--ease-in)]\",\n \"motion-reduce:animate-none\",\n variantStyles[toast.variant ?? \"default\"],\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm leading-tight font-semibold\">{toast.title}</p>\n {toast.description && (\n <p className=\"mt-1 text-sm leading-snug opacity-80\">{toast.description}</p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={close}\n className={cn(\n \"rounded-icon inline-flex size-5 shrink-0 items-center justify-center\",\n \"opacity-70 transition-opacity duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:opacity-100 motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label=\"Dismiss\"\n >\n <XIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* ToggleGroup */\n/* Wraps Radix ToggleGroup; preserves single|multiple + default|outline. */\n/* -------------------------------------------------------------------------- */\n\nconst itemVariants = cva(\n cn(\n \"inline-flex items-center justify-center rounded-pill px-3 py-1.5 text-[13px] font-medium\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"data-[state=on]:bg-pro-bg data-[state=on]:text-pro-fg\",\n ),\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-rule-strong bg-surface\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ntype ToggleGroupContextValue = VariantProps<typeof itemVariants>;\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n variant: \"default\",\n});\n\ntype ToggleGroupRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof itemVariants>;\n\nexport const ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n ToggleGroupRootProps\n>(function ToggleGroup({ className, variant, children, ...props }, ref) {\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...(props as React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>)}\n >\n <ToggleGroupContext.Provider value={{ variant }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n});\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\ninterface ToggleGroupItemProps\n extends\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n VariantProps<typeof itemVariants> {}\n\nexport const ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n ToggleGroupItemProps\n>(function ToggleGroupItem({ className, variant, ...props }, ref) {\n const ctx = React.useContext(ToggleGroupContext);\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(itemVariants({ variant: variant ?? ctx.variant }), className)}\n {...props}\n />\n );\n});\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Tooltip — Radix UI tooltip primitive, Assure Pro skin.\n *\n * The root `Tooltip` wraps `TooltipPrimitive.Provider` once per instance\n * so single-use tooltips work without app-level provider scaffolding.\n * Apps that render many tooltips should still mount a single\n * `<TooltipProvider>` at the app root for shared `delayDuration` /\n * `skipDelayDuration` semantics.\n *\n * Public API preserved:\n * Tooltip (with `delayMs` prop), TooltipTrigger, TooltipContent\n *\n * NEW (additive): TooltipProvider, TooltipPortal are exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipPortal = TooltipPrimitive.Portal;\n\ninterface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /**\n * Backwards-compat alias for Radix's `delayDuration`. Kept so existing\n * call sites that passed `delayMs={…}` keep working unchanged.\n */\n delayMs?: number;\n /**\n * Optional delayDuration applied to the implicit Provider. Forwarded\n * here when no surrounding `<TooltipProvider>` is present.\n */\n delayDuration?: number;\n}\n\nconst Tooltip = ({ delayMs, delayDuration, children, ...props }: TooltipProps) => {\n const resolvedDelay = delayDuration ?? delayMs ?? 300;\n return (\n <TooltipPrimitive.Provider delayDuration={resolvedDelay}>\n <TooltipPrimitive.Root delayDuration={resolvedDelay} {...props}>\n {children}\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\nTooltip.displayName = \"Tooltip\";\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 \"rounded-input border-rule-strong bg-surface z-[var(--z-tooltip)] max-w-xs border px-2.5 py-1.5\",\n \"font-body text-fg shadow-pop text-xs leading-tight\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=delayed-open]:scale-100 data-[state=delayed-open]:opacity-100\",\n \"data-[state=instant-open]:scale-100 data-[state=instant-open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipProvider, TooltipTrigger, TooltipPortal, TooltipContent };\n","import * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { forwardRef } from \"react\";\n\n/**\n * VisuallyHidden — hides content from sighted users while keeping it\n * available to assistive tech. Backed by `@radix-ui/react-visually-hidden`\n * (the canonical implementation; survives strict-mode + portals).\n */\n\ninterface VisuallyHiddenProps extends React.ComponentPropsWithoutRef<\n typeof VisuallyHiddenPrimitive.Root\n> {\n children: React.ReactNode;\n}\n\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n function VisuallyHidden({ children, ...props }, ref) {\n return (\n <VisuallyHiddenPrimitive.Root ref={ref} {...props}>\n {children}\n </VisuallyHiddenPrimitive.Root>\n );\n },\n);\n\nVisuallyHidden.displayName = \"VisuallyHidden\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type ShellProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Shell = forwardRef<HTMLDivElement, ShellProps>(function Shell(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"bg-bg flex h-dvh w-full\", className)} {...props} />;\n});\nShell.displayName = \"Shell\";\n\nexport type MainProps = React.HTMLAttributes<HTMLElement>;\n\nexport const Main = forwardRef<HTMLElement, MainProps>(function Main({ className, ...props }, ref) {\n return (\n <main\n ref={ref}\n className={cn(\"flex min-w-0 flex-1 flex-col overflow-hidden\", className)}\n {...props}\n />\n );\n});\nMain.displayName = \"Main\";\n\nexport interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Override the bottom padding only — the rest of the content area keeps\n * `--content-pad` so the header alignment stays intact. Use this on\n * long-scroll pages (Kanban, document trees, large tables) that want\n * extra breathing room beneath the last row.\n *\n * Accepts any CSS length (e.g. `\"64px\"`, `\"4rem\"`). Omit to inherit\n * the symmetric default.\n */\n padBottom?: string;\n}\n\nexport const Content = forwardRef<HTMLDivElement, ContentProps>(function Content(\n { padBottom, className, style, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex-1 overflow-y-auto p-[var(--content-pad)]\", className)}\n style={padBottom ? { paddingBottom: padBottom, ...style } : style}\n {...props}\n />\n );\n});\nContent.displayName = \"Content\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { Avatar } from \"../primitives/avatar\";\nimport { cn } from \"../lib/cn\";\n\nexport type SidebarProps = React.HTMLAttributes<HTMLElement>;\n\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(function Sidebar(\n { className, ...props },\n ref,\n) {\n return (\n <aside\n ref={ref}\n className={cn(\n \"scrollbar-thin flex h-dvh w-[var(--shell-sidebar-w)] shrink-0 flex-col overflow-y-auto\",\n \"border-rule bg-bg-2 border-r px-3 pt-4 pb-4\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebar.displayName = \"Sidebar\";\n\nexport type SidebarBrandProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SidebarBrand = forwardRef<HTMLDivElement, SidebarBrandProps>(function SidebarBrand(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"px-2 pt-1 pb-4\", className)} {...props} />;\n});\nSidebarBrand.displayName = \"SidebarBrand\";\n\nexport interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: React.ReactNode;\n /**\n * Label color tone. Encodes the *meaning* of the section's\n * priority in the scan path:\n * - `\"pro\"` (default) — Pro-purple, for primary day-to-day work\n * (numbered sections like \"01 — Today\", \"02 — Work\").\n * - `\"muted\"` — `text-fg-3`, for system-level or settings groups\n * (\"— Admin\") that should sit lower in the visual hierarchy.\n *\n * Mirrors the `tone` API on `<SidebarLinkBadge>`.\n */\n tone?: \"pro\" | \"muted\";\n}\n\nexport const SidebarSection = forwardRef<HTMLDivElement, SidebarSectionProps>(\n function SidebarSection({ label, tone = \"pro\", className, children, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"mb-4\", className)} {...props}>\n {label != null && (\n <div className=\"mb-1 flex items-center justify-between px-2.5 py-1\">\n <span\n className={cn(\n \"font-mono text-[11px] tracking-[0.14em] uppercase\",\n tone === \"muted\" ? \"text-fg-3\" : \"text-pro-fg\",\n )}\n >\n {label}\n </span>\n </div>\n )}\n {children}\n </div>\n );\n },\n);\nSidebarSection.displayName = \"SidebarSection\";\n\nexport interface SidebarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Required when rendered as `<a>`; ignored when `asChild` is true. */\n href?: string;\n icon?: React.ReactNode;\n active?: boolean;\n /**\n * Render via Radix `<Slot>` so the consumer can wrap a router-aware\n * component (e.g. Next.js `<Link>`, React Router `<NavLink>`) that owns\n * `href` and prefetch behavior. Without this, sidebar clicks bypass\n * client-side routing and trigger full page loads.\n */\n asChild?: boolean;\n}\n\nexport const SidebarLink = forwardRef<HTMLAnchorElement, SidebarLinkProps>(function SidebarLink(\n { href, icon, active = false, asChild, className, children, ...props },\n ref,\n) {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n {...(asChild ? {} : { href })}\n data-active={active ? \"true\" : undefined}\n aria-current={active ? \"page\" : undefined}\n className={cn(\n \"group relative mb-px flex items-center gap-2.5 rounded-md px-2.5 py-1.5\",\n \"text-fg-2 text-[13px] font-normal no-underline\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-3 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium\",\n // Active rail: 2px wide, 16px tall, anchored to the link's own left\n // edge (no parent-padding dependency — fixes G12).\n \"data-[active=true]:before:absolute data-[active=true]:before:content-['']\",\n \"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0\",\n \"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2\",\n \"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full\",\n \"motion-reduce:transition-none\",\n \"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85\",\n className,\n )}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {icon}\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n </>\n )}\n </Comp>\n );\n});\nSidebarLink.displayName = \"SidebarLink\";\n\nexport const sidebarLinkBadgeVariants = cva(\n \"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums\",\n {\n variants: {\n tone: {\n // Default: bare mono digit, picks up Pro fg on the active link.\n default: \"text-[10.5px] text-fg-4 group-data-[active=true]:text-pro-fg\",\n // Semantic pills — for nav items with action signals\n // (unread messages, due tasks, blocked actions).\n danger: \"rounded-pill bg-danger-bg px-1.5 py-0.5 text-[10.5px] text-danger-fg\",\n warning: \"rounded-pill bg-warning-bg px-1.5 py-0.5 text-[10.5px] text-warning-fg\",\n neutral: \"rounded-pill bg-bg-3 px-1.5 py-0.5 text-[10.5px] text-fg-2\",\n },\n },\n defaultVariants: { tone: \"default\" },\n },\n);\n\nexport type SidebarLinkBadgeVariants = VariantProps<typeof sidebarLinkBadgeVariants>;\n\nexport interface SidebarLinkBadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>, SidebarLinkBadgeVariants {}\n\nexport const SidebarLinkBadge = forwardRef<HTMLSpanElement, SidebarLinkBadgeProps>(\n function SidebarLinkBadge({ tone, className, ...props }, ref) {\n return (\n <span ref={ref} className={cn(sidebarLinkBadgeVariants({ tone }), className)} {...props} />\n );\n },\n);\nSidebarLinkBadge.displayName = \"SidebarLinkBadge\";\n\nexport type SidebarFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, SidebarFooterProps>(function SidebarFooter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-rule mt-auto flex items-center gap-2.5 border-t px-2 pt-2.5 pb-1\",\n \"text-fg-3 text-xs\",\n className,\n )}\n {...props}\n />\n );\n});\nSidebarFooter.displayName = \"SidebarFooter\";\n\nexport interface SidebarUserProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n subtitle?: React.ReactNode;\n avatarSrc?: string | null;\n}\n\nexport const SidebarUser = forwardRef<HTMLDivElement, SidebarUserProps>(function SidebarUser(\n { name, subtitle, avatarSrc, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex min-w-0 items-center gap-2.5\", className)} {...props}>\n <Avatar size=\"sm\" variant=\"branded\" name={name} src={avatarSrc ?? undefined} />\n <div className=\"min-w-0 leading-tight\">\n <div className=\"text-fg truncate text-[13px] font-medium\">{name}</div>\n {subtitle != null && (\n <div className=\"text-fg-4 truncate font-mono text-[10.5px]\">{subtitle}</div>\n )}\n </div>\n </div>\n );\n});\nSidebarUser.displayName = \"SidebarUser\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { SearchIcon } from \"../primitives/icons\";\n/**\n * AppHeader — sticky 56px-tall top bar mounted inside `<Main>`, above\n * `<Content>`. Ports `.app-header` from `_shared.css` (lines 393-404).\n *\n * Children flow horizontally:\n * breadcrumb → title → flex-1 spacer → search → actions\n *\n * Sub-components are layout slots; the consumer composes them in any order\n * and the AppHeaderSearch's `flex-1` collapses any remaining space.\n */\n\nexport type AppHeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport const AppHeader = forwardRef<HTMLElement, AppHeaderProps>(function AppHeader(\n { className, ...props },\n ref,\n) {\n return (\n <header\n ref={ref}\n className={cn(\n // Sticky bar at the top of <Main>. Padding tracks --content-pad so\n // the header's left edge aligns with content padding underneath\n // (breadcrumb/title vs page H1/table left edge match).\n \"border-rule bg-bg/95 sticky top-0 z-[var(--z-sticky)] flex h-[var(--shell-header-h)] items-center gap-3 border-b px-[var(--content-pad)] backdrop-blur\",\n className,\n )}\n {...props}\n />\n );\n});\nAppHeader.displayName = \"AppHeader\";\n\nexport type AppHeaderBreadcrumbProps = React.HTMLAttributes<HTMLElement>;\n\nexport const AppHeaderBreadcrumb = forwardRef<HTMLElement, AppHeaderBreadcrumbProps>(\n function AppHeaderBreadcrumb({ className, ...props }, ref) {\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"text-fg-3 flex items-center gap-1.5 text-sm\", className)}\n {...props}\n />\n );\n },\n);\nAppHeaderBreadcrumb.displayName = \"AppHeaderBreadcrumb\";\n\nexport type AppHeaderTitleProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * App-shell title rendered inside the sticky header.\n *\n * Intentionally a `<span>` rather than `<h1>`: the page below the chrome\n * owns its own document heading (`<h1>` in the page body). The header is\n * navigational chrome; making it the page's `<h1>` would couple every page\n * heading to the chrome wrapper and confuse screen-reader heading nav.\n */\nexport const AppHeaderTitle = forwardRef<HTMLSpanElement, AppHeaderTitleProps>(\n function AppHeaderTitle({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"font-display text-fg text-sm font-medium\", className)}\n {...props}\n />\n );\n },\n);\nAppHeaderTitle.displayName = \"AppHeaderTitle\";\n\nexport interface AppHeaderSearchProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Placeholder text rendered inside the search trigger. */\n placeholder?: string;\n /** Keyboard shortcut hint shown on the right. Defaults to ⌘K. */\n shortcut?: React.ReactNode;\n}\n\nexport const AppHeaderSearch = forwardRef<HTMLButtonElement, AppHeaderSearchProps>(\n function AppHeaderSearch({ placeholder = \"Search…\", shortcut = \"⌘K\", className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n // Search-input-shaped trigger — ports `.header-search-trigger`\n \"rounded-input border-rule bg-bg-2 text-fg-4 ml-auto flex h-8 max-w-[360px] flex-1 items-center gap-2.5 border px-2.5 text-xs\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:border-rule-strong hover:bg-bg-3\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n >\n <SearchIcon className=\"size-[13px] shrink-0\" strokeWidth={1.8} aria-hidden=\"true\" />\n <span className=\"truncate text-left\">{placeholder}</span>\n {shortcut !== null && shortcut !== undefined && shortcut !== \"\" && (\n <kbd\n className={cn(\n \"rounded-icon border-rule bg-bg ml-auto inline-flex h-[18px] min-w-[18px] items-center justify-center border px-[5px]\",\n \"text-fg-3 [border-bottom-width:1.5px] font-mono text-[10.5px]\",\n )}\n >\n {shortcut}\n </kbd>\n )}\n </button>\n );\n },\n);\nAppHeaderSearch.displayName = \"AppHeaderSearch\";\n\nexport type AppHeaderActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const AppHeaderActions = forwardRef<HTMLDivElement, AppHeaderActionsProps>(\n function AppHeaderActions({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"flex items-center gap-1.5\", className)} {...props} />;\n },\n);\nAppHeaderActions.displayName = \"AppHeaderActions\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * PageHeader — top-of-page title block: eyebrow → headline → meta row.\n * Ports `.page-header` rules from `_shared.css` (lines 486-498).\n *\n * `title` is a string per the consumer-side contract (see\n * `assure-pro-spec/from-lighttaxes-claude.md`, \"Page header\" section).\n * If a consumer needs richer markup in the headline they should compose\n * around PageHeader rather than via this prop.\n */\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n /** Slot above the title — usually `<Eyebrow numeric>`. */\n eyebrow?: React.ReactNode;\n /** Page title text. */\n title: string;\n /** Slot below the title for pills, specs, separators. */\n meta?: React.ReactNode;\n}\n\nexport const PageHeader = forwardRef<HTMLElement, PageHeaderProps>(function PageHeader(\n { eyebrow, title, meta, className, ...props },\n ref,\n) {\n return (\n <header ref={ref} className={cn(\"mb-7\", className)} {...props}>\n {eyebrow && <div className=\"mb-1.5\">{eyebrow}</div>}\n <h1 className=\"font-display text-fg text-[26px] leading-tight tracking-tight\">{title}</h1>\n {meta && <div className=\"text-fg-3 mt-2 flex items-center gap-2 text-sm\">{meta}</div>}\n </header>\n );\n});\nPageHeader.displayName = \"PageHeader\";\n\nexport type PageHeaderSpecProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * PageHeaderSpec — small `.spec`-style span (Geist Mono w/ tnum/lnum/ss01).\n * Used inside the `meta` slot for numeric facts (\"4 due today\",\n * \"EIN ·· 12-3456789\").\n */\nexport const PageHeaderSpec = forwardRef<HTMLSpanElement, PageHeaderSpecProps>(\n function PageHeaderSpec({ className, style, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"font-spec text-fg-3 text-xs\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nPageHeaderSpec.displayName = \"PageHeaderSpec\";\n\nexport type PageHeaderSepProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** PageHeaderSep — the `·` dot separator used between meta items. */\nexport const PageHeaderSep = forwardRef<HTMLSpanElement, PageHeaderSepProps>(function PageHeaderSep(\n { children, className, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n role=\"presentation\"\n className={cn(\"text-fg-4\", className)}\n {...props}\n >\n {children ?? \"·\"}\n </span>\n );\n});\nPageHeaderSep.displayName = \"PageHeaderSep\";\n","\"use client\";\n\nimport { forwardRef, useCallback, useState, type ReactNode } from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Input } from \"../primitives/input\";\nimport { Pagination } from \"../primitives/pagination\";\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n ChevronsUpDownIcon,\n SearchIcon,\n} from \"../primitives/icons\";\n/* ============================================================\n DataTable — composite chrome around the Table primitive.\n\n Ports `.data-table*` rules from `assure-pro-spec/mockups/_shared.css`\n (lines 542-633) and the `03-clients-list.html` mockup. Composes the\n existing `Table` styling but re-exports under `DataTable*` names so\n the consumer-side codemod (326 sites) can swap in one shot without\n touching the underlying primitive.\n\n Public API — names are locked by the consumer contract in\n `assure-pro-spec/from-lighttaxes-claude.md` (lines 64-69).\n ============================================================ */\n\n/* ── Frame ────────────────────────────────────────────────── */\n\nexport interface DataTableProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, renders the table card with a flat top edge so it\n * visually attaches to a `<DataTableToolbar>` above it. */\n withToolbar?: boolean;\n}\n\n/**\n * DataTable — outer wrapper. Children are typically:\n * <DataTableToolbar /> + <table> + <DataTablePagination />.\n *\n * The `<table>` is hand-written by the consumer; this wrapper renders\n * the surface card chrome on its descendant `<table>` element via a\n * Tailwind arbitrary-variant selector. When `withToolbar` is set, the\n * top corners flatten so the table visually joins the toolbar above.\n *\n * Children render in document order — toolbar (if any) then `<table>`\n * then pagination — with the table card and the pagination not sharing\n * a background.\n */\nexport const DataTable = forwardRef<HTMLDivElement, DataTableProps>(function DataTable(\n { withToolbar, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n // Surface card chrome on the descendant `<table>`.\n \"[&_table]:bg-surface [&_table]:w-full [&_table]:border-collapse\",\n \"[&_table]:border-rule [&_table]:border\",\n withToolbar ? \"[&_table]:rounded-b-card [&_table]:border-t-0\" : \"[&_table]:rounded-card\",\n // Clip cell backgrounds at the rounded corners.\n \"[&_table]:overflow-hidden\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n});\nDataTable.displayName = \"DataTable\";\n\n/* ── Toolbar ──────────────────────────────────────────────── */\n\nexport type DataTableToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * DataTableToolbar — top row above the table. Renders the same surface\n * card as `<table>`, but with rounded corners only on top so the table\n * below visually attaches to it (see `.toolbar` rules in `_shared.css`,\n * lines 592-633).\n */\nexport const DataTableToolbar = forwardRef<HTMLDivElement, DataTableToolbarProps>(\n function DataTableToolbar({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-2 px-3 py-2.5\",\n \"rounded-t-card border-rule bg-surface border\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableToolbar.displayName = \"DataTableToolbar\";\n\nexport interface DataTableSearchProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> {\n /** Override the default placeholder. */\n placeholder?: string;\n}\n\n/**\n * DataTableSearch — small search input slot inside the toolbar. Wraps\n * the `Input` primitive at `inputSize=\"sm\"` with a leading search icon.\n */\nexport const DataTableSearch = forwardRef<HTMLInputElement, DataTableSearchProps>(\n function DataTableSearch({ placeholder = \"Search…\", className, ...props }, ref) {\n return (\n <Input\n ref={ref}\n type=\"search\"\n inputSize=\"sm\"\n placeholder={placeholder}\n prefixIcon={<SearchIcon aria-hidden=\"true\" />}\n className={cn(\"w-[280px]\", className)}\n {...props}\n />\n );\n },\n);\nDataTableSearch.displayName = \"DataTableSearch\";\n\nexport type DataTableSpacerProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** DataTableSpacer — `flex-1` spacer for arranging toolbar items. */\nexport const DataTableSpacer = forwardRef<HTMLSpanElement, DataTableSpacerProps>(\n function DataTableSpacer({ className, ...props }, ref) {\n return <span ref={ref} aria-hidden=\"true\" className={cn(\"flex-1\", className)} {...props} />;\n },\n);\nDataTableSpacer.displayName = \"DataTableSpacer\";\n\nexport interface DataTableResultsCountProps extends Omit<\n React.HTMLAttributes<HTMLSpanElement>,\n \"children\"\n> {\n current: number;\n total: number;\n}\n\n/**\n * DataTableResultsCount — small spec-styled \"12 of 247\" indicator.\n * Mono + tabular per `.results-count` (`_shared.css` lines 628-633).\n */\nexport const DataTableResultsCount = forwardRef<HTMLSpanElement, DataTableResultsCountProps>(\n function DataTableResultsCount({ current, total, className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"text-fg-4 mr-1 font-mono text-[11px] tabular-nums\", className)}\n {...props}\n >\n {current.toLocaleString()} of {total.toLocaleString()}\n </span>\n );\n },\n);\nDataTableResultsCount.displayName = \"DataTableResultsCount\";\n\n/* ── Table sections ───────────────────────────────────────── */\n\n/**\n * DataTableHead — wraps `<thead>`. Renders the surface-2 header row\n * with the rule-bottom divider (`.data-table th` styling lives on the\n * `DataTableHeader` cells themselves).\n */\nexport type DataTableHeadProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const DataTableHead = forwardRef<HTMLTableSectionElement, DataTableHeadProps>(\n function DataTableHead({ className, ...props }, ref) {\n return (\n <thead ref={ref} className={cn(\"[&_tr]:border-rule [&_tr]:border-b\", className)} {...props} />\n );\n },\n);\nDataTableHead.displayName = \"DataTableHead\";\n\nexport type DataTableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\n/** DataTableBody — wraps `<tbody>`. Last row drops its bottom border. */\nexport const DataTableBody = forwardRef<HTMLTableSectionElement, DataTableBodyProps>(\n function DataTableBody({ className, ...props }, ref) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n },\n);\nDataTableBody.displayName = \"DataTableBody\";\n\nexport interface DataTableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** Pro-tinted highlight for the current selection. */\n selected?: boolean;\n}\n\n/**\n * DataTableRow — `<tr>` with hover styling. `selected` switches the\n * row to the Pro-bg highlight (matches `data-[state=selected]` on the\n * Table primitive).\n */\nexport const DataTableRow = forwardRef<HTMLTableRowElement, DataTableRowProps>(\n function DataTableRow({ selected, className, ...props }, ref) {\n return (\n <tr\n ref={ref}\n data-state={selected ? \"selected\" : undefined}\n className={cn(\n \"border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n // Selected hover stays in the Pro tint (G15) — when both states fire,\n // hover:bg-bg-2 was previously winning and dropping the row out of\n // the selected tint, which read as the row deselecting on hover.\n selected ? \"bg-pro-bg hover:bg-pro-bg-hover\" : \"hover:bg-bg-2\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableRow.displayName = \"DataTableRow\";\n\n/* ── Header cell ──────────────────────────────────────────── */\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface DataTableHeaderProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** When true, the cell becomes a clickable button that toggles sort\n * state and renders a chevron indicator. */\n sortable?: boolean;\n /** Initial sort direction when the header mounts in a sorted state. */\n defaultSort?: SortDirection;\n /** Optional controlled sort state. When provided, `onSortChange` should\n * also be wired up — the header becomes fully controlled. */\n sort?: SortDirection | null;\n /** Fires whenever the user clicks a sortable header. */\n onSortChange?: (sort: SortDirection | null) => void;\n}\n\n/**\n * DataTableHeader — `<th>` cell. Mono uppercase label with optional\n * sort indicator. Sort cycle when uncontrolled:\n * unsorted → asc → desc → unsorted (3-state).\n * `defaultSort` seeds the initial state. Pass `sort` + `onSortChange`\n * for fully-controlled usage when an upstream store owns the sort.\n */\nexport const DataTableHeader = forwardRef<HTMLTableCellElement, DataTableHeaderProps>(\n function DataTableHeader(\n {\n sortable = false,\n defaultSort,\n sort: controlledSort,\n onSortChange,\n children,\n className,\n ...props\n },\n ref,\n ) {\n const [uncontrolledSort, setUncontrolledSort] = useState<SortDirection | null>(\n defaultSort ?? null,\n );\n const isControlled = controlledSort !== undefined;\n const currentSort = isControlled ? controlledSort : uncontrolledSort;\n\n const handleClick = useCallback(() => {\n if (!sortable) return;\n const next: SortDirection | null =\n currentSort === null ? \"asc\" : currentSort === \"asc\" ? \"desc\" : null;\n if (!isControlled) setUncontrolledSort(next);\n onSortChange?.(next);\n }, [sortable, currentSort, isControlled, onSortChange]);\n\n const indicator = sortable ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"text-fg-5 ml-1 inline-flex shrink-0 items-center justify-center\",\n currentSort && \"text-fg-3\",\n )}\n >\n {currentSort === \"asc\" ? (\n <ChevronUpIcon className=\"size-3\" strokeWidth={2.2} />\n ) : currentSort === \"desc\" ? (\n <ChevronDownIcon className=\"size-3\" strokeWidth={2.2} />\n ) : (\n <ChevronsUpDownIcon className=\"size-3\" strokeWidth={2} />\n )}\n </span>\n ) : null;\n\n const ariaSort: React.AriaAttributes[\"aria-sort\"] = sortable\n ? currentSort === \"asc\"\n ? \"ascending\"\n : currentSort === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined;\n\n return (\n <th\n ref={ref}\n scope=\"col\"\n aria-sort={ariaSort}\n className={cn(\n \"h-9 px-3.5 py-2 text-left align-middle whitespace-nowrap\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 bg-surface-2\",\n \"border-rule border-b\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n \"-mx-1 -my-1 inline-flex items-center gap-1 rounded-[4px] px-1 py-1\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg-2\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n >\n {children}\n {indicator}\n </button>\n ) : (\n children\n )}\n </th>\n );\n },\n);\nDataTableHeader.displayName = \"DataTableHeader\";\n\n/* ── Body cells ───────────────────────────────────────────── */\n\nconst cellBase = \"px-3.5 py-2.5 align-middle\";\n\nexport type DataTableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;\n\n/** DataTableCell — default cell, 13px / fg-2. */\nexport const DataTableCell = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCell({ className, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(\n cellBase,\n \"text-fg-2 text-[13px]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableCell.displayName = \"DataTableCell\";\n\n/**\n * DataTableCellName — primary identifier of the row. Display font,\n * fg color, medium weight (matches `.cell-name` in `_shared.css`\n * line 586).\n */\nexport const DataTableCellName = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellName({ className, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-display text-fg text-[13px] font-medium\", className)}\n {...props}\n />\n );\n },\n);\nDataTableCellName.displayName = \"DataTableCellName\";\n\n/**\n * DataTableCellMono — currency / IDs / numerics. Geist Mono with\n * tabular numerals and the same tight tracking the spec uses\n * (`.cell-mono`, `_shared.css` lines 579-584).\n */\nexport const DataTableCellMono = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellMono({ className, style, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-spec text-fg-2 text-[12.5px]\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nDataTableCellMono.displayName = \"DataTableCellMono\";\n\n/**\n * DataTableCellId — muted mono ID (EIN, UUID, \"5h ago\"). Matches\n * `.cell-mono.cell-id` from the spec.\n */\nexport const DataTableCellId = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellId({ className, style, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-spec text-fg-4 text-xs\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nDataTableCellId.displayName = \"DataTableCellId\";\n\n/* ── Due-date cell ────────────────────────────────────────── */\n\nconst MS_PER_DAY = 86_400_000;\nconst DUE_NEAR_THRESHOLD_DAYS = 14;\n\nconst dueDateFormatter = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n});\n\nexport interface DataTableCellDueProps extends Omit<\n React.TdHTMLAttributes<HTMLTableCellElement>,\n \"children\"\n> {\n /** Date this row is due. */\n value: Date;\n /** Optional override for the displayed label (defaults to the\n * formatted date). */\n children?: ReactNode;\n}\n\n/**\n * DataTableCellDue — accepts a Date and auto-colors:\n * diff < 0 → text-danger-fg (overdue)\n * diff < 14d → text-warning-fg (due-near)\n * otherwise → text-fg-3 (default)\n *\n * The 14-day threshold and day-rounding (`Math.floor`) match the\n * `.cell-due-near` / `.cell-due-overdue` CSS classes in the mockup.\n */\nexport const DataTableCellDue = forwardRef<HTMLTableCellElement, DataTableCellDueProps>(\n function DataTableCellDue({ value, children, className, style, ...props }, ref) {\n const days = Math.floor((value.getTime() - Date.now()) / MS_PER_DAY);\n const tone =\n days < 0\n ? \"text-danger-fg font-medium\"\n : days < DUE_NEAR_THRESHOLD_DAYS\n ? \"text-warning-fg font-medium\"\n : \"text-fg-3\";\n\n const ariaState = days < 0 ? \"overdue\" : days < DUE_NEAR_THRESHOLD_DAYS ? \"near\" : \"future\";\n\n return (\n <td\n ref={ref}\n data-due-state={ariaState}\n className={cn(cellBase, \"font-spec text-[12.5px]\", tone, className)}\n style={style}\n {...props}\n >\n {children ?? dueDateFormatter.format(value)}\n </td>\n );\n },\n);\nDataTableCellDue.displayName = \"DataTableCellDue\";\n\n/* ── Checkbox cell ────────────────────────────────────────── */\n\nexport interface DataTableCheckboxProps extends Omit<\n React.TdHTMLAttributes<HTMLTableCellElement>,\n \"onChange\" | \"defaultChecked\"\n> {\n /** Forwarded to the inner `Checkbox` primitive. */\n checked?: boolean | \"indeterminate\";\n defaultChecked?: boolean | \"indeterminate\";\n onCheckedChange?: (checked: boolean | \"indeterminate\") => void;\n /** Accessible label for the checkbox (e.g. \"Select row Acme Corp.\"). */\n ariaLabel?: string;\n disabled?: boolean;\n /** Render the cell as `<th>` (for the select-all header) instead of `<td>`. */\n asHeader?: boolean;\n}\n\n/**\n * DataTableCheckbox — `<td>` containing the row-selection checkbox.\n * Tightened to a 32px column with no right padding to match\n * `.row-checkbox` in the spec.\n */\nexport const DataTableCheckbox = forwardRef<HTMLTableCellElement, DataTableCheckboxProps>(\n function DataTableCheckbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n ariaLabel,\n disabled,\n asHeader,\n className,\n ...props\n },\n ref,\n ) {\n const Cell = (asHeader ? \"th\" : \"td\") as \"td\";\n return (\n <Cell\n ref={ref}\n className={cn(\n \"w-8 px-3.5 py-2.5 pr-0 align-middle\",\n asHeader && \"bg-surface-2 border-rule h-9 border-b\",\n className,\n )}\n {...props}\n >\n <Checkbox\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n aria-label={ariaLabel}\n />\n </Cell>\n );\n },\n);\nDataTableCheckbox.displayName = \"DataTableCheckbox\";\n\n/* ── Pagination ───────────────────────────────────────────── */\n\nexport interface DataTablePaginationProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"onChange\"\n> {\n /** 1-indexed current page. */\n current: number;\n /** Total number of items across all pages. */\n total: number;\n /** Items per page. Default 25. */\n pageSize?: number;\n onPageChange?: (page: number) => void;\n siblingCount?: number;\n}\n\n/**\n * DataTablePagination — full pagination strip. Wraps the existing\n * `Pagination` primitive: derives `pageCount` from `total / pageSize`\n * and forwards the page label (\"1–25 of 327\"). Page size defaults to\n * 25 (the consumer contract did not specify; this matches the most\n * common firm-app table page size).\n */\nexport const DataTablePagination = forwardRef<HTMLElement, DataTablePaginationProps>(\n function DataTablePagination(\n { current, total, pageSize = 25, onPageChange, siblingCount, className, ...props },\n ref,\n ) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n return (\n <Pagination\n ref={ref}\n currentPage={current}\n totalPages={totalPages}\n onPageChange={onPageChange ?? (() => {})}\n siblingCount={siblingCount}\n totalItems={total}\n pageSize={pageSize}\n className={cn(\"mt-4\", className)}\n {...props}\n />\n );\n },\n);\nDataTablePagination.displayName = \"DataTablePagination\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Avatar } from \"../primitives/avatar\";\n\n/**\n * Detail layout composites — port of the `.detail-grid` / `.detail-spine`\n * pattern from `_shared.css` (lines 814-822) and the canonical detail page\n * mockup (`assure-pro-spec/mockups/04-client-detail.html`).\n *\n * Two-column layout: a sticky left rail (the \"spine\", 320px) holding\n * identity + key facts, and a scrollable main column for tabs, sections,\n * tables, and activity feeds.\n */\n\n/* -------------------------------------------------------------------------- */\n/* DetailGrid — outermost 2-column container */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailGridProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const DetailGrid = forwardRef<HTMLDivElement, DetailGridProps>(function DetailGrid(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"grid grid-cols-1 items-start gap-6 lg:grid-cols-[320px_1fr] lg:gap-9\",\n className,\n )}\n {...props}\n />\n );\n});\nDetailGrid.displayName = \"DetailGrid\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpine — left rail card */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailSpineProps = React.HTMLAttributes<HTMLElement>;\n\nexport const DetailSpine = forwardRef<HTMLElement, DetailSpineProps>(function DetailSpine(\n { className, ...props },\n ref,\n) {\n return (\n <aside\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface shadow-quiet border p-[18px]\",\n \"space-y-4\",\n \"lg:sticky lg:top-[calc(var(--shell-header-h)+24px)] lg:self-start\",\n className,\n )}\n {...props}\n />\n );\n});\nDetailSpine.displayName = \"DetailSpine\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineHeader — avatar + name + subtitle */\n/* -------------------------------------------------------------------------- */\n\nexport interface DetailSpineHeaderProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"title\"\n> {\n /** Image src or initials/name string passed through to <Avatar>. */\n avatar: string;\n /** Display name / entity title. */\n title: string;\n /** Smaller line under the title — entity type, classification, etc. */\n subtitle: string;\n}\n\nexport const DetailSpineHeader = forwardRef<HTMLDivElement, DetailSpineHeaderProps>(\n function DetailSpineHeader({ avatar, title, subtitle, className, ...props }, ref) {\n const isImageSrc = /^(https?:|data:|\\/)/i.test(avatar);\n\n return (\n <div ref={ref} className={cn(\"flex items-center gap-3\", className)} {...props}>\n <Avatar\n size=\"lg\"\n src={isImageSrc ? avatar : undefined}\n name={isImageSrc ? title : avatar}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-display text-fg truncate text-base leading-tight font-medium\">\n {title}\n </div>\n <div className=\"font-spec text-fg-4 text-[11px]\">{subtitle}</div>\n </div>\n </div>\n );\n },\n);\nDetailSpineHeader.displayName = \"DetailSpineHeader\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineSection — eyebrow-labeled sub-block inside the spine */\n/* -------------------------------------------------------------------------- */\n\nexport interface DetailSpineSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Small caps label rendered above the section content. */\n eyebrow: string;\n}\n\nexport const DetailSpineSection = forwardRef<HTMLDivElement, DetailSpineSectionProps>(\n function DetailSpineSection({ eyebrow, children, className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"border-rule-soft border-t pt-3\", className)} {...props}>\n <div className=\"text-fg-4 mb-2 font-mono text-[10.5px] font-medium tracking-[0.14em] uppercase\">\n {eyebrow}\n </div>\n {children}\n </div>\n );\n },\n);\nDetailSpineSection.displayName = \"DetailSpineSection\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineStats — 2-col grid container for <Stat> primitives */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailSpineStatsProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const DetailSpineStats = forwardRef<HTMLDivElement, DetailSpineStatsProps>(\n function DetailSpineStats({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-2 gap-x-3 gap-y-3.5\", className)} {...props} />\n );\n },\n);\nDetailSpineStats.displayName = \"DetailSpineStats\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailMain — right side, scrollable page content */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailMainProps = React.HTMLAttributes<HTMLElement>;\n\nexport const DetailMain = forwardRef<HTMLElement, DetailMainProps>(function DetailMain(\n { className, ...props },\n ref,\n) {\n return <section ref={ref} className={cn(\"min-w-0 flex-1 space-y-6\", className)} {...props} />;\n});\nDetailMain.displayName = \"DetailMain\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ActivityList — vertical feed of activity rows.\n * Ports `.activity-list` / `.activity-item` from `_shared.css` (lines 635-664)\n * with the simplified row API from `from-lighttaxes-claude.md` (line 71):\n *\n * <ActivityList>\n * <ActivityItem dot=\"success\" actor=\"Anna\" text=\"filed\" target=\"1120S\" time=\"2h ago\" />\n * </ActivityList>\n */\n\nexport type ActivityListProps = React.HTMLAttributes<HTMLUListElement>;\n\nexport const ActivityList = forwardRef<HTMLUListElement, ActivityListProps>(function ActivityList(\n { className, children, ...props },\n ref,\n) {\n return (\n <ul ref={ref} className={cn(\"flex flex-col\", className)} {...props}>\n {children}\n </ul>\n );\n});\nActivityList.displayName = \"ActivityList\";\n\nexport type ActivityDotVariant = \"default\" | \"success\" | \"warn\" | \"accent\";\n\nconst dotClass: Record<ActivityDotVariant, string> = {\n default: \"bg-fg-4\",\n success: \"bg-success-fg\",\n warn: \"bg-warning-fg\",\n accent: \"bg-accent\",\n};\n\nexport interface ActivityItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, \"children\"> {\n dot?: ActivityDotVariant;\n actor: string;\n text: string;\n target?: string;\n time: string;\n}\n\nexport const ActivityItem = forwardRef<HTMLLIElement, ActivityItemProps>(function ActivityItem(\n { dot = \"default\", actor, text, target, time, className, ...props },\n ref,\n) {\n return (\n <li\n ref={ref}\n className={cn(\n \"border-rule-soft flex items-center gap-2 border-b py-2 text-sm last:border-0\",\n className,\n )}\n {...props}\n >\n <span aria-hidden=\"true\" className={cn(\"size-1.5 shrink-0 rounded-full\", dotClass[dot])} />\n <span className=\"text-fg-2 font-medium\">{actor}</span>\n <span className=\"text-fg-3\">{text}</span>\n {target && <span className=\"text-accent hover:underline\">{target}</span>}\n <span className=\"text-fg-4 ml-auto text-xs tabular-nums\">{time}</span>\n </li>\n );\n});\nActivityItem.displayName = \"ActivityItem\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Kanban — flex container for board columns.\n * Ports `.kanban` / `.kanban-col` / `.kanban-card` from `_shared.css`\n * (lines 700-778). API per `from-lighttaxes-claude.md` line 81-84.\n */\n\nexport type KanbanProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Kanban = forwardRef<HTMLDivElement, KanbanProps>(function Kanban(\n { className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex items-start gap-4 overflow-x-auto\", className)} {...props}>\n {children}\n </div>\n );\n});\nKanban.displayName = \"Kanban\";\n\nexport interface KanbanColumnProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: string;\n count: number;\n}\n\nexport const KanbanColumn = forwardRef<HTMLDivElement, KanbanColumnProps>(function KanbanColumn(\n { title, count, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex max-w-[320px] min-w-[280px] flex-1 flex-col gap-3\", className)}\n {...props}\n >\n <div className=\"text-fg-2 flex items-center justify-between text-sm font-medium\">\n <span>{title}</span>\n <span className=\"bg-bg-2 text-fg-3 rounded-pill px-2 py-0.5 text-xs tabular-nums\">\n {count}\n </span>\n </div>\n <div className=\"flex flex-col gap-2\">{children}</div>\n </div>\n );\n});\nKanbanColumn.displayName = \"KanbanColumn\";\n\nexport const kanbanCardVariants = cva(\n cn(\n \"bg-surface border border-rule rounded-card shadow-quiet p-3 space-y-2 cursor-grab\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n default: \"\",\n pro: \"border-l-2 border-l-pro-fg\",\n warn: \"border-l-2 border-l-warning-fg\",\n danger: \"border-l-2 border-l-danger-fg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface KanbanCardProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof kanbanCardVariants> {}\n\nexport const KanbanCard = forwardRef<HTMLDivElement, KanbanCardProps>(function KanbanCard(\n { variant, className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(kanbanCardVariants({ variant }), className)} {...props}>\n {children}\n </div>\n );\n});\nKanbanCard.displayName = \"KanbanCard\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Toolbar — horizontal row of controls used above lists, dashboards, etc.\n * Ports `.toolbar` from `_shared.css` (lines 591-633). FilterChip is a\n * simpler atom than `MultiFilterPill` — single filter, not multi-select.\n */\n\nexport type ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Toolbar = forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar(\n { className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex items-center gap-2\", className)} {...props}>\n {children}\n </div>\n );\n});\nToolbar.displayName = \"Toolbar\";\n\nexport const filterChipVariants = cva(\n cn(\n \"inline-flex items-center gap-1.5 h-8 px-3 rounded-pill text-xs font-medium border\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled disabled:border-rule\",\n ),\n {\n variants: {\n active: {\n true: \"bg-pro-bg text-pro-fg border-pro-fg/30 hover:bg-pro-bg-hover\",\n false: \"bg-bg-2 text-fg-2 border-rule hover:bg-bg-3\",\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n\nexport interface FilterChipProps\n extends\n Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof VariantProps<typeof filterChipVariants>\n >,\n VariantProps<typeof filterChipVariants> {\n count?: number;\n}\n\nexport const FilterChip = forwardRef<HTMLButtonElement, FilterChipProps>(function FilterChip(\n { active = false, count, className, children, type, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n type={type ?? \"button\"}\n aria-pressed={active ?? false}\n className={cn(filterChipVariants({ active }), className)}\n {...props}\n >\n {children}\n {typeof count === \"number\" && (\n <span className=\"font-mono text-[10.5px] tabular-nums\">{count}</span>\n )}\n </button>\n );\n});\nFilterChip.displayName = \"FilterChip\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { Button, type ButtonProps } from \"../primitives/button\";\nimport { LinkButton } from \"../primitives/link-button\";\nimport { cn } from \"../lib/cn\";\n\nimport { ArrowRightIcon } from \"../primitives/icons\";\n/**\n * Intent-named action wrappers (Phase 4).\n *\n * Thin wrappers over Button / LinkButton. Bake in the right variant + size\n * so the correct call is shorter than the raw call.\n *\n * Note: `Button` has no `variant=\"icon\"`. `IconAction` uses `variant=\"ghost\"`\n * + `size=\"icon\"` (the existing icon size token).\n */\n\ntype LinkButtonProps = React.ComponentProps<typeof LinkButton>;\n\nexport interface PrimaryActionProps extends Omit<ButtonProps, \"variant\" | \"size\"> {\n arrow?: boolean;\n}\n\nexport const PrimaryAction = forwardRef<HTMLButtonElement, PrimaryActionProps>(\n function PrimaryAction({ arrow, iconRight, children, className, ...props }, ref) {\n return (\n <Button\n ref={ref}\n variant=\"accent\"\n size=\"sm\"\n iconRight={arrow ? <ArrowRightIcon className=\"size-4\" /> : iconRight}\n className={cn(className)}\n {...props}\n >\n {children}\n </Button>\n );\n },\n);\nPrimaryAction.displayName = \"PrimaryAction\";\n\nexport type SecondaryActionProps = Omit<ButtonProps, \"variant\" | \"size\">;\n\nexport const SecondaryAction = forwardRef<HTMLButtonElement, SecondaryActionProps>(\n function SecondaryAction({ className, children, ...props }, ref) {\n return (\n <Button ref={ref} variant=\"ghost\" size=\"sm\" className={cn(className)} {...props}>\n {children}\n </Button>\n );\n },\n);\nSecondaryAction.displayName = \"SecondaryAction\";\n\nexport interface DangerActionProps extends Omit<ButtonProps, \"variant\" | \"size\" | \"onClick\"> {\n /** Required — explicit name forces the consumer to acknowledge intent. */\n onConfirm: () => void;\n}\n\nexport const DangerAction = forwardRef<HTMLButtonElement, DangerActionProps>(function DangerAction(\n { onConfirm, className, children, ...props },\n ref,\n) {\n return (\n <Button\n ref={ref}\n variant=\"destructive\"\n size=\"sm\"\n onClick={onConfirm}\n className={cn(className)}\n {...props}\n >\n {children}\n </Button>\n );\n});\nDangerAction.displayName = \"DangerAction\";\n\nexport interface IconActionProps extends Omit<ButtonProps, \"variant\" | \"size\"> {\n /** Required — icon-only buttons must announce themselves to assistive tech. */\n \"aria-label\": string;\n}\n\nexport const IconAction = forwardRef<HTMLButtonElement, IconActionProps>(function IconAction(\n { className, children, ...props },\n ref,\n) {\n return (\n <Button ref={ref} variant=\"ghost\" size=\"icon\" className={cn(className)} {...props}>\n {children}\n </Button>\n );\n});\nIconAction.displayName = \"IconAction\";\n\nexport interface LinkActionProps extends Omit<LinkButtonProps, \"variant\" | \"size\"> {\n arrow?: boolean;\n}\n\nexport const LinkAction = forwardRef<HTMLAnchorElement, LinkActionProps>(function LinkAction(\n { arrow, iconRight, children, className, ...props },\n ref,\n) {\n return (\n <LinkButton\n ref={ref}\n variant=\"ghost\"\n size=\"sm\"\n iconRight={arrow ? <ArrowRightIcon className=\"size-4\" /> : iconRight}\n className={cn(className)}\n {...props}\n >\n {children}\n </LinkButton>\n );\n});\nLinkAction.displayName = \"LinkAction\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Intent-named atom wrappers (Phase 4).\n *\n * Thin <span>/<div>/<kbd> wrappers that bake in the right typography +\n * color tokens. Compose with the addressable utility classes in tokens.css\n * (`.tabular`, `.font-spec`, `.eyebrow`, `.eyebrow-num`).\n */\n\nexport type NumericProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const Numeric = forwardRef<HTMLSpanElement, NumericProps>(function Numeric(\n { className, children, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"tabular font-mono\", className)} {...props}>\n {children}\n </span>\n );\n});\nNumeric.displayName = \"Numeric\";\n\nexport type MutedSpecProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const MutedSpec = forwardRef<HTMLSpanElement, MutedSpecProps>(function MutedSpec(\n { className, children, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"font-spec text-fg-3\", className)} {...props}>\n {children}\n </span>\n );\n});\nMutedSpec.displayName = \"MutedSpec\";\n\nexport interface EyebrowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, switches to spec font + Pro purple (the `01 — Today` pattern). */\n numeric?: boolean;\n}\n\nexport const Eyebrow = forwardRef<HTMLDivElement, EyebrowProps>(function Eyebrow(\n { numeric, className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(numeric ? \"eyebrow-num\" : \"eyebrow\", className)} {...props}>\n {children}\n </div>\n );\n});\nEyebrow.displayName = \"Eyebrow\";\n\nexport type KbdHintProps = React.HTMLAttributes<HTMLElement>;\n\nexport const KbdHint = forwardRef<HTMLElement, KbdHintProps>(function KbdHint(\n { className, children, ...props },\n ref,\n) {\n return (\n <kbd\n ref={ref}\n className={cn(\n \"rounded-icon inline-flex h-5 min-w-5 items-center justify-center px-1.5\",\n \"border-rule bg-bg-2 text-fg-3 border font-mono text-[10.5px]\",\n className,\n )}\n {...props}\n >\n {children}\n </kbd>\n );\n});\nKbdHint.displayName = \"KbdHint\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tokens/reference.ts","../src/tokens/system.ts","../src/lib/cn.ts","../src/primitives/icons.tsx","../src/primitives/accordion.tsx","../src/primitives/alert-dialog.tsx","../src/primitives/alert.tsx","../src/primitives/aspect-ratio.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/blockquote.tsx","../src/primitives/breadcrumb.tsx","../src/primitives/button.tsx","../src/primitives/calendar.tsx","../src/primitives/card.tsx","../src/primitives/checkbox.tsx","../src/primitives/select.tsx","../src/primitives/client-select.tsx","../src/primitives/collapsible.tsx","../src/primitives/coming-soon.tsx","../src/primitives/dialog.tsx","../src/primitives/command-palette.tsx","../src/primitives/confirm-action-button.tsx","../src/primitives/context-menu.tsx","../src/primitives/copy-button.tsx","../src/primitives/popover.tsx","../src/primitives/date-picker.tsx","../src/primitives/dismissible-chip.tsx","../src/primitives/dropdown-menu.tsx","../src/primitives/empty-state.tsx","../src/primitives/file-upload.tsx","../src/primitives/form-message.tsx","../src/primitives/hover-card.tsx","../src/primitives/input.tsx","../src/primitives/keyboard-shortcuts-dialog.tsx","../src/primitives/label.tsx","../src/primitives/link-button.tsx","../src/primitives/logo.tsx","../src/primitives/multi-filter-pill.tsx","../src/primitives/multi-select-field.tsx","../src/primitives/otp-input.tsx","../src/primitives/pagination.tsx","../src/lib/phone.ts","../src/primitives/phone-input.tsx","../src/primitives/progress-bar.tsx","../src/primitives/progress-ring.tsx","../src/primitives/radio-group.tsx","../src/primitives/scroll-area.tsx","../src/hooks/use-debounce.ts","../src/primitives/search-input.tsx","../src/primitives/search-select.tsx","../src/primitives/section-header.tsx","../src/primitives/section.tsx","../src/primitives/separator.tsx","../src/primitives/sheet.tsx","../src/primitives/side-drawer.tsx","../src/primitives/skeleton.tsx","../src/primitives/slider.tsx","../src/primitives/star-rating.tsx","../src/primitives/stat.tsx","../src/primitives/stepper.tsx","../src/primitives/submit-button.tsx","../src/primitives/switch.tsx","../src/primitives/table.tsx","../src/primitives/tabs.tsx","../src/primitives/team-member-select.tsx","../src/primitives/textarea.tsx","../src/primitives/toast.tsx","../src/primitives/toggle-group.tsx","../src/primitives/tooltip.tsx","../src/primitives/visually-hidden.tsx","../src/composites/shell.tsx","../src/composites/sidebar.tsx","../src/composites/app-header.tsx","../src/composites/page-header.tsx","../src/composites/data-table.tsx","../src/composites/detail.tsx","../src/composites/activity-list.tsx","../src/composites/kanban.tsx","../src/composites/toolbar.tsx","../src/composites/intent-actions.tsx","../src/composites/intent-atoms.tsx"],"names":["React","Accordion","jsx","AccordionItem","AccordionTrigger","jsxs","AccordionContent","React2","forwardRef","Alert","AlertTitle","AlertDescription","React3","AspectRatio","cva","React4","Avatar","Badge","Blockquote","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","Button","React5","Icon","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","React6","Checkbox","React7","React9","Collapsible","CollapsibleTrigger","CollapsibleContent","ComingSoon","React10","React11","DialogPrimitive2","CommandPrimitive","React12","React13","CopyButton","useState","useCallback","React14","DatePicker","useId","React15","DismissibleChip","React16","EmptyState","useRef","React17","Input","kbdClass","React18","Label","React19","LinkButton","Link","Image","Fragment","React21","OTPInputRoot","Pagination","PhoneInput","ProgressBar","ProgressRing","RadioGroup","React23","RadioGroupItem","React24","ScrollArea","ScrollBar","useEffect","React25","SearchInput","React26","Section","SectionHead","Separator","React27","React28","SheetPrimitive","DialogPrimitive3","Skeleton","SkeletonText","SkeletonCircle","React30","Slider","StarRating","Stat","Stepper","SubmitButton","React31","Switch","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","React32","Tabs","TabsList","TabsTrigger","TabsContent","React33","Textarea","createContext","useMemo","React34","ToggleGroup","ToggleGroupItem","React35","VisuallyHidden","Shell","Main","Content","Sidebar","SidebarTrigger","SidebarBrand","SidebarBrandText","SidebarSection","SidebarLink","Slot","SidebarLinkLabel","SidebarLinkAction","SidebarLinkBadge","SidebarLinkGroup","SidebarFooter","SidebarUser","AppHeader","AppHeaderBreadcrumb","AppHeaderTitle","AppHeaderSearch","AppHeaderActions","PageHeader","PageHeaderSpec","PageHeaderSep","DataTable","DataTableToolbar","DataTableSearch","DataTableSpacer","DataTableResultsCount","DataTableHead","DataTableBody","DataTableRow","DataTableHeader","DataTableCell","DataTableCellName","DataTableCellMono","DataTableCellId","DataTableCellDue","DataTableCheckbox","DataTablePagination","DetailGrid","DetailSpine","DetailSpineHeader","DetailSpineSection","DetailSpineStats","DetailMain","ActivityList","ActivityItem","Kanban","KanbanColumn","KanbanCard","Toolbar","FilterChip","PrimaryAction","SecondaryAction","DangerAction","IconAction","LinkAction","Numeric","MutedSpec","Eyebrow","KbdHint"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Reference tokens — Assure Pro raw palette.\n *\n * Programmatic access for theme switching, Figma sync, design tools, etc.\n * Components should NOT consume these directly; use system tokens (./system.ts)\n * or the CSS variables in ./tokens.css.\n *\n * Source: assure-pro-spec/mockups/_shared.css\n */\n\nexport const colors = {\n /* Surfaces */\n bg: \"#FDFDFC\",\n bg2: \"#F7F7F5\",\n bg3: \"#F0F0ED\",\n surface: \"#FFFFFF\",\n surface2: \"#FAFAF8\",\n\n /* Foreground */\n fg: \"#0A0A0A\",\n fg2: \"#38383B\",\n fg3: \"#6B6B70\",\n fg4: \"#9A9AA0\",\n fg5: \"#C4C4C8\",\n\n /* Rules */\n rule: \"#EAEAE6\",\n ruleSoft: \"#F0F0EC\",\n ruleStrong: \"#DADAD4\",\n\n /* Accent (cyan) */\n accent: \"#0066FF\",\n accent2: \"#0052CC\",\n accentTint: \"#E8F0FF\",\n accentHover: \"#005BE6\",\n accentActive: \"#004FCC\",\n\n /* Pro (purple) */\n proBg: \"#F4F1FF\",\n proBgHover: \"#EEE9FF\",\n proBgActive: \"#E4DDFF\",\n proFg: \"#6C42F8\",\n proHover: \"#5E35F2\",\n proActive: \"#5127E8\",\n proDisabled: \"#B7A7F3\",\n proLine: \"#7B5BD8\",\n\n /* Disabled */\n fgDisabled: \"#A7A7AC\",\n bgDisabled: \"#F3F3F1\",\n\n /* Status */\n successFg: \"#1F7A3D\",\n successBg: \"#EAF6EE\",\n successLine: \"#C5E5CF\",\n warningFg: \"#B45F0A\",\n warningBg: \"#FFF3E5\",\n warningLine: \"#F5D5A8\",\n dangerFg: \"#C43838\",\n dangerBg: \"#FBEAEA\",\n dangerLine: \"#ECC5C5\",\n\n /* On-brand */\n fgOnAccent: \"#FFFFFF\",\n fgOnPro: \"#FFFFFF\",\n} as const;\n\nexport const typography = {\n family: {\n display: '\"Geist\", \"Inter\", -apple-system, system-ui, sans-serif',\n body: '\"Inter\", -apple-system, system-ui, sans-serif',\n mono: '\"Geist Mono\", \"JetBrains Mono\", ui-monospace, monospace',\n },\n weight: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n /* Universal entrance ease — applies to every motion primitive */\n ease: \"cubic-bezier(0.2, 0.8, 0.2, 1)\",\n} as const;\n\nexport const radii = {\n btn: \"7px\",\n input: \"7px\",\n pill: \"5px\",\n card: \"12px\",\n icon: \"4px\",\n full: \"9999px\",\n} as const;\n\nexport const shadows = {\n quiet: \"0 1px 2px rgba(10,10,10,0.03)\",\n card: \"0 12px 28px -16px rgba(10,10,10,0.18), 0 1px 2px rgba(10,10,10,0.04)\",\n pop: \"0 30px 80px -30px rgba(10,10,10,0.18), 0 8px 24px -8px rgba(10,10,10,0.06)\",\n focusRing: \"0 0 0 2px rgba(0, 102, 255, 0.18)\",\n} as const;\n\nexport const overlays = {\n hover: \"rgba(10, 10, 10, 0.03)\",\n active: \"rgba(10, 10, 10, 0.05)\",\n} as const;\n\nexport const layout = {\n shellSidebarWidth: \"256px\",\n shellHeaderHeight: \"56px\",\n contentPad: \"32px\",\n} as const;\n\n/**\n * Spacing — 4px base scale. Assure Pro uses arbitrary values in most cases;\n * this scale is exposed for programmatic access (e.g. design-tool sync).\n */\nexport const spacing = {\n unit: \"4px\",\n 4: \"4px\",\n 8: \"8px\",\n 12: \"12px\",\n 16: \"16px\",\n 20: \"20px\",\n 24: \"24px\",\n 28: \"28px\",\n 32: \"32px\",\n 36: \"36px\",\n 40: \"40px\",\n 64: \"64px\",\n 80: \"80px\",\n 180: \"180px\",\n} as const;\n\n/**\n * Surface palette — the four canonical layers. Mirrors --color-bg / -2 /\n * --color-surface / --color-surface-2.\n */\nexport const surfaces = {\n bg: \"#FDFDFC\",\n bg2: \"#F7F7F5\",\n surface: \"#FFFFFF\",\n surface2: \"#FAFAF8\",\n} as const;\n\nexport const motion = {\n ease: {\n outQuart: \"cubic-bezier(0.2, 0.8, 0.2, 1)\",\n out: \"cubic-bezier(0.16, 1, 0.3, 1)\",\n in: \"cubic-bezier(0.7, 0, 0.84, 0)\",\n inOut: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n },\n duration: {\n instant: \"100ms\",\n fast: \"150ms\",\n normal: \"250ms\",\n slow: \"400ms\",\n },\n} as const;\n\nexport const reference = {\n colors,\n typography,\n radii,\n shadows,\n overlays,\n layout,\n motion,\n spacing,\n surfaces,\n} as const;\n\nexport type ReferenceTokens = typeof reference;\nexport type ColorName = keyof typeof colors;\n","/**\n * System tokens — Assure Pro semantic mappings as CSS variable references.\n *\n * Use these from JS (e.g. inline styles, Storybook decorators, motion configs)\n * when you can't use a Tailwind utility class. Component CSS should prefer the\n * generated utilities (`bg-bg`, `text-fg-2`, `border-rule`, `bg-pro-fg`, etc.)\n * which Tailwind 4 emits from `--color-*` tokens declared in ./tokens.css.\n *\n * Themes (.dark) re-map the underlying CSS variables; these references stay valid.\n */\n\nexport const systemTokens = {\n color: {\n /* Surfaces */\n bg: \"var(--color-bg)\",\n bg2: \"var(--color-bg-2)\",\n bg3: \"var(--color-bg-3)\",\n surface: \"var(--color-surface)\",\n surface2: \"var(--color-surface-2)\",\n\n /* Foreground */\n fg: \"var(--color-fg)\",\n fg2: \"var(--color-fg-2)\",\n fg3: \"var(--color-fg-3)\",\n fg4: \"var(--color-fg-4)\",\n fg5: \"var(--color-fg-5)\",\n\n /* Rules */\n rule: \"var(--color-rule)\",\n ruleSoft: \"var(--color-rule-soft)\",\n ruleStrong: \"var(--color-rule-strong)\",\n\n /* Accent (cyan) */\n accent: \"var(--color-accent)\",\n accent2: \"var(--color-accent-2)\",\n accentTint: \"var(--color-accent-tint)\",\n accentHover: \"var(--color-accent-hover)\",\n accentActive: \"var(--color-accent-active)\",\n accentRing: \"var(--color-accent-ring)\",\n\n /* Pro (purple) */\n proBg: \"var(--color-pro-bg)\",\n proBgHover: \"var(--color-pro-bg-hover)\",\n proBgActive: \"var(--color-pro-bg-active)\",\n proFg: \"var(--color-pro-fg)\",\n proHover: \"var(--color-pro-hover)\",\n proActive: \"var(--color-pro-active)\",\n proDisabled: \"var(--color-pro-disabled)\",\n proLine: \"var(--color-pro-line)\",\n proRing: \"var(--color-pro-ring)\",\n\n /* On-brand */\n fgOnAccent: \"var(--color-fg-on-accent)\",\n fgOnPro: \"var(--color-fg-on-pro)\",\n\n /* Disabled */\n fgDisabled: \"var(--color-fg-disabled)\",\n bgDisabled: \"var(--color-bg-disabled)\",\n\n /* Overlays */\n overlayHover: \"var(--color-overlay-hover)\",\n overlayActive: \"var(--color-overlay-active)\",\n\n /* Status */\n successFg: \"var(--color-success-fg)\",\n successBg: \"var(--color-success-bg)\",\n successLine: \"var(--color-success-line)\",\n warningFg: \"var(--color-warning-fg)\",\n warningBg: \"var(--color-warning-bg)\",\n warningLine: \"var(--color-warning-line)\",\n dangerFg: \"var(--color-danger-fg)\",\n dangerBg: \"var(--color-danger-bg)\",\n dangerLine: \"var(--color-danger-line)\",\n },\n\n shadow: {\n quiet: \"var(--shadow-quiet)\",\n card: \"var(--shadow-card)\",\n pop: \"var(--shadow-pop)\",\n focusRing: \"var(--shadow-focus-ring)\",\n },\n\n radius: {\n btn: \"var(--radius-btn)\",\n input: \"var(--radius-input)\",\n pill: \"var(--radius-pill)\",\n card: \"var(--radius-card)\",\n icon: \"var(--radius-icon)\",\n full: \"var(--radius-full)\",\n },\n\n type: {\n family: {\n display: \"var(--font-display)\",\n body: \"var(--font-body)\",\n mono: \"var(--font-mono)\",\n },\n weight: {\n regular: \"var(--font-weight-regular)\",\n medium: \"var(--font-weight-medium)\",\n semibold: \"var(--font-weight-semibold)\",\n bold: \"var(--font-weight-bold)\",\n },\n },\n\n motion: {\n ease: {\n outQuart: \"var(--ease-out-quart)\",\n out: \"var(--ease-out)\",\n in: \"var(--ease-in)\",\n inOut: \"var(--ease-in-out)\",\n },\n duration: {\n instant: \"var(--duration-instant)\",\n fast: \"var(--duration-fast)\",\n normal: \"var(--duration-normal)\",\n slow: \"var(--duration-slow)\",\n },\n },\n\n layout: {\n shellSidebarWidth: \"var(--shell-sidebar-w)\",\n shellSidebarRailWidth: \"var(--shell-sidebar-w-rail)\",\n shellHeaderHeight: \"var(--shell-header-h)\",\n contentPad: \"var(--content-pad)\",\n },\n\n z: {\n base: \"var(--z-base)\",\n dropdown: \"var(--z-dropdown)\",\n sticky: \"var(--z-sticky)\",\n overlay: \"var(--z-overlay)\",\n modal: \"var(--z-modal)\",\n toast: \"var(--z-toast)\",\n tooltip: \"var(--z-tooltip)\",\n },\n} as const;\n\nexport type SystemTokens = typeof systemTokens;\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cn } from \"../lib/cn\";\n\ninterface IconProps extends React.SVGAttributes<SVGElement> {\n size?: number;\n}\n\nfunction Icon({\n size = 24,\n className,\n children,\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\"shrink-0\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n {children}\n </svg>\n );\n}\n\nexport function DocumentIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n fill=\"currentColor\"\n opacity=\"0.2\"\n />\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M8 13h8M8 17h8M8 9h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowRightIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 12h14M12 5l7 7-7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function StarIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2l2.09 6.26L20.18 9l-5 4.36L16.82 20 12 16.77 7.18 20l1.64-6.64-5-4.36 6.09-.74L12 2z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n\nexport function SparkleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2l2.09 6.26L20.18 9l-5 4.36L16.82 20 12 16.77 7.18 20l1.64-6.64-5-4.36 6.09-.74L12 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChatBubbleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LightningIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M13 2L3 14h9l-1 8 10-12h-9l1-8z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UsersIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2M9 11a4 4 0 100-8 4 4 0 000 8zM23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FileTextIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M16 13H8M16 17H8M10 9H8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ShieldIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MenuIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12h18M3 6h18M3 18h18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CloseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function CheckIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutDashboardIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"9\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"12\" width=\"7\" height=\"9\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"16\" width=\"7\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function BuildingIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 22V4a2 2 0 012-2h8a2 2 0 012 2v18M2 22h20M10 6h4M10 10h4M10 14h4M10 18h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MapPinIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 1116 0z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"10\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function FileReturnIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6M9 15l3-3 3 3M12 12v6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ClipboardCheckIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <rect x=\"9\" y=\"2\" width=\"6\" height=\"4\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M9 14l2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderOpenIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2l-2.5-7a2 2 0 00-2-1.5H5.5A2 2 0 003.5 10L2 17a2 2 0 002 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ReceiptIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M4 2v20l3-2 3 2 3-2 3 2 3-2 3 2V2l-3 2-3-2-3 2-3-2-3 2-3-2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M8 10h8M8 14h4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function CalendarIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 2v4M8 2v4M3 10h18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BarChartIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 20V10M18 20V4M6 20v-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SettingsIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PanelLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M9 3v18\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function PanelLeftCloseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M9 3v18\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M15 9l-3 3 3 3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SunIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TeamIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 21v-2a4 4 0 00-4-4H10a4 4 0 00-4 4v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"7\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M22 11h-4M20 9v4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function MoonIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PaletteIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"13.5\" cy=\"6.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"17.5\" cy=\"10.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"8.5\" cy=\"7.5\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"6.5\" cy=\"12.5\" r=\"1.5\" fill=\"currentColor\" />\n <path\n d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.04-.23-.29-.38-.63-.38-1.04 0-.83.67-1.5 1.5-1.5H16c3.31 0 6-2.69 6-6 0-5.5-4.5-9.92-10-9.92z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MailIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M22 7l-10 6L2 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function GlobeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BellIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 8A6 6 0 106 8c0 7-3 9-3 9h18s-3-2-3-9zM13.73 21a2 2 0 01-3.46 0\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function WorkflowIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"15\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"9\" y=\"15\" width=\"6\" height=\"6\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M6 9v3a3 3 0 003 3h6a3 3 0 003-3V9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path d=\"M12 12v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function LinkIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function KeyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.778 7.778 5.5 5.5 0 017.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SearchIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M21 21l-4.35-4.35\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function LogOutIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4M16 17l5-5-5-5M21 12H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TagIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12.586 2.586A2 2 0 0011.172 2H4a2 2 0 00-2 2v7.172a2 2 0 00.586 1.414l8.704 8.704a2.426 2.426 0 003.42 0l6.58-6.58a2.426 2.426 0 000-3.42z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </Icon>\n );\n}\n\nexport function SendIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14.536 21.686a.5.5 0 00.937-.024l6.5-19a.496.496 0 00-.635-.635l-19 6.5a.5.5 0 00-.024.937l7.93 3.18a2 2 0 011.112 1.11z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M21.854 2.147l-10.94 10.939\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function TrashIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 6h18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Link2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 17H7A5 5 0 017 7h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 7h2a5 5 0 110 10h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n x2=\"16\"\n y1=\"12\"\n y2=\"12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronUpIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m18 15-6-6-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m6 9 6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PlusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 5v14M5 12h14\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UserCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 20.662V19a2 2 0 012-2h6a2 2 0 012 2v1.662\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PencilIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 3a2.828 2.828 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PhoneIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderClosedIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 20a2 2 0 002-2V8a2 2 0 00-2-2h-7.9a2 2 0 01-1.69-.9L9.6 3.9A2 2 0 007.93 3H4a2 2 0 00-2 2v13a2 2 0 002 2h16z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UploadIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function DownloadIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MoreHorizontalIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n </Icon>\n );\n}\n\nexport function ChevronRightIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m9 18 6-6-6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m15 18-6-6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FileIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2v6h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function RotateCcwIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12a9 9 0 109-9 9.75 9.75 0 00-6.74 2.74L3 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3 3v5h5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function EyeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7S2 12 2 12z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function ClockIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 6v6h4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutListIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M14 4h7M14 9h7M14 15h7M14 20h7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LayoutGridIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function LockIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 11V7a5 5 0 0110 0v4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FolderPlusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 20a2 2 0 002-2V8a2 2 0 00-2-2h-7.9a2 2 0 01-1.69-.9L9.6 3.9A2 2 0 007.93 3H4a2 2 0 00-2 2v13a2 2 0 002 2h16z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 10v6M9 13h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MoveIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 9l-3 3 3 3M9 5l3-3 3 3M15 19l-3 3-3-3M19 9l3 3-3 3M2 12h20M12 2v20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LockKeyholeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" />\n <rect x=\"3\" y=\"10\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M7 10V7a5 5 0 0110 0v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PaperclipIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function AtSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 8v5a3 3 0 006 0v-1a10 10 0 10-4 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ZoomInIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M21 21l-4.35-4.35M11 8v6M8 11h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ZoomOutIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M21 21l-4.35-4.35M8 11h6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function XIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function MessageCircleWarningIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 8v4M12 16h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function FlagIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function LockOpenIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect\n width=\"18\"\n height=\"11\"\n x=\"3\"\n y=\"11\"\n rx=\"2\"\n ry=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M7 11V7a5 5 0 0 1 9.9-1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MessageCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function PenSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M17 3a2.83 2.83 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CopyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect\n x=\"9\"\n y=\"9\"\n width=\"13\"\n height=\"13\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n />\n <path\n d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n />\n </Icon>\n );\n}\n\nexport function MonitorIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 21h8M12 17v4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SmartphoneIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"6\" y=\"2\" width=\"12\" height=\"20\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 18h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function AlertTriangleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"9\"\n x2=\"12\"\n y2=\"13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"17\"\n x2=\"12.01\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowRightSmallIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M5 12h14M12 5l7 7-7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 12H5M12 19l-7-7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CreditCardIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3 10h18\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M7 15h3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\n/* ─── Icons added in 0.3.0 — single-source migration off lucide-react ────\n * Visual fidelity preserved by porting lucide-react's SVG paths into the\n * catalog's shared `<Icon>` wrapper (24×24 viewBox + currentColor +\n * strokeWidth=1.5 baseline). Names keep the lucide convention with the\n * catalog's `Icon` suffix appended so they compose with the rest of the\n * catalog (e.g. lucide `<Check />` → catalog `<CheckIcon />`).\n * ────────────────────────────────────────────────────────────────────── */\n\nexport function AlertCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 8v4M12 16h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 5v14M19 12l-7 7-7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ArrowUpIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 19V5M5 12l7-7 7 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function BriefcaseIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Building2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 22V4a2 2 0 012-2h8a2 2 0 012 2v18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 12H4a2 2 0 00-2 2v6a2 2 0 002 2h2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 9h2a2 2 0 012 2v9a2 2 0 01-2 2h-2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 6h4M10 10h4M10 14h4M10 18h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CheckCircle2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"m9 12 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ChevronsUpDownIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m7 15 5 5 5-5M7 9l5-5 5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function CircleDotIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n </Icon>\n );\n}\n\nexport function CommandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M18 3a3 3 0 00-3 3v12a3 3 0 003 3 3 3 0 003-3 3 3 0 00-3-3H6a3 3 0 00-3 3 3 3 0 003 3 3 3 0 003-3V6a3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3h12a3 3 0 003-3 3 3 0 00-3-3z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function CornerDownLeftIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m9 10-5 5 5 5M20 4v7a4 4 0 01-4 4H4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function EyeOffIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9.88 9.88a3 3 0 104.24 4.24M10.73 5.08A10.43 10.43 0 0112 5c7 0 10 7 10 7a13.16 13.16 0 01-1.67 2.68M6.61 6.61A13.526 13.526 0 002 12s3 7 10 7a9.74 9.74 0 005.39-1.61M2 2l20 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function HomeIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m3 9 9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9 22V12h6v10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function InboxIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M22 12h-6l-2 3h-4l-2-3H2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.45 5.11 2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListChecksIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m3 17 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"m3 7 2 2 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13 6h8M13 12h8M13 18h8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function MinusIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M5 12h14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function SlashIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M22 2 2 22\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </Icon>\n );\n}\n\nexport function SparklesIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"m12 3-1.91 5.79a2 2 0 01-1.3 1.3L3 12l5.79 1.91a2 2 0 011.3 1.3L12 21l1.91-5.79a2 2 0 011.3-1.3L21 12l-5.79-1.91a2 2 0 01-1.3-1.3L12 3Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5 3v4M3 5h4M19 17v4M17 19h4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function Trash2Icon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path d=\"M3 6h18\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path\n d=\"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"10\"\n y1=\"11\"\n x2=\"10\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"14\"\n y1=\"11\"\n x2=\"14\"\n y2=\"17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UserIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"7\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\n/* ───────────────────────────────────────────────────────────────────────\n * Round 10 additions (lighttaxes-claude ask) — 17 net-additive exports\n * grouped by tier. Same 24-grid / currentColor / stroke-1.5 baseline as\n * the rest of the catalog. Brand icons (Google, Microsoft) are the only\n * exception: multi-color paths with explicit fills, contract documented\n * on each export.\n * ─────────────────────────────────────────────────────────────────────── */\n\n// Tier A — rich-text editor toolbar (Bold uses the canonical stroke-2 lucide\n// path because the lobes need the heavier weight to read at editor-bar size).\n\nexport function BoldIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 4h8a4 4 0 014 4 4 4 0 01-4 4H6zM6 12h9a4 4 0 014 4 4 4 0 01-4 4H6z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ItalicIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 4h-9M14 20H5M15 4L9 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function UnderlineIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M6 3v7a6 6 0 006 6 6 6 0 006-6V3M4 21h16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function StrikethroughIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M16 4H9a3 3 0 000 6h6a3 3 0 010 6H8M4 12h16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ListOrderedIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M10 6h11M10 12h11M10 18h11\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 6h1v4M3 10h3M6 18H3l3-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier B — semantic gaps (Info, HelpCircle, DollarSign, Reply). InfoIcon\n// is intentionally the inverse-glyph sibling of AlertCircleIcon: same\n// circle, dot up + line down (lowercase \"i\") vs. line up + dot down\n// (exclamation). Consumers had been conflating the two.\n\nexport function InfoIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M12 16v-4M12 8h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function HelpCircleIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function DollarSignIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M12 2v20M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function ReplyIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M9 17l-5-5 5-5M4 12h12a4 4 0 010 8h-1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier C — view-switcher trio. WorkflowIcon already in catalog;\n// LayoutGridIcon / LayoutListIcon kept untouched per ask.\n\nexport function KanbanIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"10\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <rect x=\"17\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </Icon>\n );\n}\n\nexport function TableIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9h18M3 15h18M9 3v18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier D — misc. SortAsc ask intentionally NOT added: same glyph as the\n// existing ArrowUpIcon (M12 19V5 M5 12l7-7 7 7 ≡ M12 5v14 M5 12l7-7 7 7).\n// Consumer rotates ArrowUpIcon 180° for descending — same as the original\n// SortAsc plan would have required.\n\nexport function HistoryIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5M12 7v5l4 2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\nexport function SaveIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M17 21v-8H7v8M7 3v5h8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n/**\n * LoaderIcon — animated spinner. Render with `className=\"animate-spin\"`\n * (or `motion-safe:animate-spin` if you want to respect `prefers-reduced-\n * motion`; the catalog doesn't gate this itself because the spinner IS\n * the indicator for many flows).\n *\n * Visual contract: a dim full-circle ring + a brighter quarter-arc on top.\n * When rotated, the bright arc creates the \"leading edge\" of the spinner.\n */\nexport function LoaderIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeOpacity={0.25}\n />\n <path\n d=\"M4 12a8 8 0 018-8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n\n// Tier E — brand icons (multi-color, brand-locked). These DO NOT respond\n// to `currentColor` or `color-*` token classes — that's by design. Use\n// only inside OAuth buttons, integration chips, and provider-list UIs.\n// All other \"icon\" usages should stay in the semantic catalog above.\n// Suffixed `BrandIcon` to make the different contract obvious at the\n// call site.\n\n/**\n * GoogleBrandIcon — Google four-color \"G\" mark. Brand-locked colors,\n * does NOT respond to currentColor. Use only in provider-list UIs\n * (OAuth buttons, integration chips). Standard 24-grid.\n */\nexport function GoogleBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n fill=\"#4285F4\"\n d=\"M22 12.27c0-.71-.06-1.4-.18-2.07H12v3.93h5.59a4.78 4.78 0 01-2.07 3.14v2.6h3.34c1.95-1.8 3.08-4.45 3.08-7.6z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 22.5c2.81 0 5.16-.93 6.88-2.52l-3.34-2.6c-.93.62-2.11.99-3.54.99-2.72 0-5.03-1.84-5.86-4.31H2.69v2.69A10.5 10.5 0 0012 22.5z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M6.14 14.06A6.3 6.3 0 015.8 12c0-.71.12-1.4.34-2.06V7.25H2.69A10.5 10.5 0 001.5 12c0 1.7.41 3.3 1.19 4.75l3.45-2.69z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.63c1.53 0 2.91.53 4 1.56l3-3C17.16 2.47 14.8 1.5 12 1.5A10.5 10.5 0 002.69 7.25l3.45 2.69C7 7.47 9.28 5.63 12 5.63z\"\n />\n </Icon>\n );\n}\n\n/**\n * MicrosoftBrandIcon — Microsoft four-square mark in red / green / blue /\n * yellow. Brand-locked colors, does NOT respond to currentColor. Use\n * inside Microsoft OAuth signin buttons, Outlook / Office integration\n * chips, and similar provider-list UIs. Standard 24-grid (10×10 squares\n * with 2u gaps).\n */\nexport function MicrosoftBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </Icon>\n );\n}\n\n/**\n * FilterIcon — funnel mark used for filter popover triggers across list\n * pages (clients, workflow, billing, organizers…). Renders the same\n * lucide-style polygon at any size; pair with a corner notification dot\n * to surface active filter count.\n */\nexport function FilterIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n d=\"M3 4h18l-7 8v6l-4 2v-8L3 4z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronDownIcon } from \"./icons\";\n/* -------------------------------------------------------------------------- */\n/* Accordion root */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\n\nexport const Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionProps\n>(function Accordion({ className, ...props }, ref) {\n return (\n <AccordionPrimitive.Root\n ref={ref}\n className={cn(\"divide-rule divide-y\", className)}\n {...props}\n />\n );\n});\nAccordion.displayName = AccordionPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionItem */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionItemProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>;\n\nexport const AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemProps\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item ref={ref} className={cn(className)} {...props} />;\n});\nAccordionItem.displayName = AccordionPrimitive.Item.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionTrigger */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionTriggerProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>;\n\nexport const AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerProps\n>(function AccordionTrigger({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"group text-fg flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg-2\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\"\n aria-hidden=\"true\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* AccordionContent */\n/* Uses Radix's --radix-accordion-content-height CSS var for smooth open/close */\n/* -------------------------------------------------------------------------- */\n\ntype AccordionContentProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>;\n\nexport const AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentProps\n>(function AccordionContent({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"text-fg-2 overflow-hidden text-sm\",\n \"data-[state=closed]:animate-[accordion-up_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"data-[state=open]:animate-[accordion-down_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"motion-reduce:animate-none\",\n )}\n {...props}\n >\n <div className={cn(\"pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * AlertDialog — Radix UI alert-dialog primitive, Assure Pro skin.\n *\n * Public API preserved (every export exists with at least the same\n * call-site shape as the prior hand-rolled implementation):\n * AlertDialog, AlertDialogTrigger, AlertDialogContent,\n * AlertDialogHeader, AlertDialogTitle, AlertDialogDescription,\n * AlertDialogFooter, AlertDialogAction, AlertDialogCancel\n *\n * NEW (additive): AlertDialogPortal, AlertDialogOverlay are exported\n * for advanced composition (matches shadcn convention).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst AlertDialog = AlertDialogPrimitive.Root;\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full max-w-lg\",\n \"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto\",\n \"rounded-card border-rule bg-surface shadow-pop border p-6\",\n \"font-body text-fg\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:-translate-y-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"mb-4 flex flex-col gap-1.5\", className)} {...props} />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-fg-3 text-sm\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(\n \"rounded-btn inline-flex h-10 items-center justify-center px-4 text-sm font-medium whitespace-nowrap\",\n \"bg-destructive text-destructive-foreground transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-destructive/90\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, children, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n \"rounded-btn border-rule-strong bg-surface inline-flex h-10 items-center justify-center border px-4 text-sm font-medium whitespace-nowrap\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:pointer-events-none disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n >\n {children ?? \"Cancel\"}\n </AlertDialogPrimitive.Cancel>\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Alert — inline banner. Variants align with the three Assure status families\n * (success, warning, danger) plus a cyan-accent `info` (per spec §3 — three\n * statuses, not five).\n */\nexport const alertVariants = cva(\n cn(\n \"flex items-center gap-3 rounded-card border p-4\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n info: \"bg-accent-tint border-[color:var(--color-accent-tint)] text-accent-2 [&_svg]:text-accent-2\",\n success: \"bg-success-bg border-success-line text-success-fg [&_svg]:text-success-fg\",\n warning: \"bg-warning-bg border-warning-line text-warning-fg [&_svg]:text-warning-fg\",\n destructive: \"bg-danger-bg border-danger-line text-danger-fg [&_svg]:text-danger-fg\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n },\n);\n\nconst variantIcons = {\n info: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7v4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n success: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M5.5 8l2 2 3.5-3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n warning: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M7.13 2.5a1 1 0 011.74 0l5.5 9.5A1 1 0 0113.5 13.5h-11a1 1 0 01-.87-1.5l5.5-9.5z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path d=\"M8 6v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n destructive: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M5.5 5.5l5 5M10.5 5.5l-5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n} as const;\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { variant = \"info\", children, className, ...props },\n ref,\n) {\n const v = variant ?? \"info\";\n return (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant: v }), className)} {...props}>\n <span className=\"shrink-0\">{variantIcons[v]}</span>\n <div className=\"flex-1\">{children}</div>\n </div>\n );\n});\n\nAlert.displayName = \"Alert\";\n\nexport const AlertTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function AlertTitle({ className, children, ...props }, ref) {\n return (\n <h4 ref={ref} className={cn(\"text-sm leading-tight font-semibold\", className)} {...props}>\n {children}\n </h4>\n );\n },\n);\n\nAlertTitle.displayName = \"AlertTitle\";\n\nexport const AlertDescription = forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(function AlertDescription({ className, ...props }, ref) {\n return <p ref={ref} className={cn(\"text-sm opacity-90\", className)} {...props} />;\n});\n\nAlertDescription.displayName = \"AlertDescription\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nimport { cn } from \"../lib/cn\";\n\ninterface AspectRatioProps extends React.ComponentPropsWithoutRef<\n typeof AspectRatioPrimitive.Root\n> {\n ratio?: number;\n children: React.ReactNode;\n}\n\nexport const AspectRatio = React.forwardRef<\n React.ElementRef<typeof AspectRatioPrimitive.Root>,\n AspectRatioProps\n>(function AspectRatio({ className, ratio = 16 / 9, ...props }, ref) {\n return (\n <AspectRatioPrimitive.Root\n ref={ref}\n ratio={ratio}\n className={cn(\"overflow-hidden\", className)}\n {...props}\n />\n );\n});\nAspectRatio.displayName = AspectRatioPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Sizing + status */\n/* */\n/* Per spec §5.22: */\n/* - `initials` (default): bg-bg-3 + text-fg-2, 500 medium, no border. */\n/* Use for client/contact/anonymous initials — the most common case. */\n/* - `branded`: bg-pro-bg + text-pro-fg + D8CFFF rule. Reserved for firm */\n/* members (the logged-in user, team-member assignment cells). */\n/* - `image`: the variant is irrelevant when `src` is provided; the image */\n/* covers the fallback. */\n/* -------------------------------------------------------------------------- */\n\nconst avatarVariants = cva(\n cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full\",\n \"font-mono font-medium\",\n ),\n {\n variants: {\n size: {\n xs: \"size-5 text-[9px]\",\n sm: \"size-7 text-[10px]\",\n md: \"size-9 text-[11px]\",\n lg: \"size-12 text-sm\",\n xl: \"size-16 text-base\",\n },\n variant: {\n initials: \"bg-bg-3 text-fg-2\",\n branded: \"border border-[#D8CFFF] bg-pro-bg text-pro-fg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"initials\",\n },\n },\n);\n\ntype AvatarSize = NonNullable<VariantProps<typeof avatarVariants>[\"size\"]>;\n\nconst statusStyles = {\n online: \"bg-success-fg\",\n away: \"bg-warning-fg\",\n busy: \"bg-danger-fg\",\n offline: \"bg-fg-4\",\n} as const;\n\nconst statusDotSizes: Record<AvatarSize, string> = {\n xs: \"size-1.5\",\n sm: \"size-2\",\n md: \"size-2.5\",\n lg: \"size-3\",\n xl: \"size-3.5\",\n};\n\n/* -------------------------------------------------------------------------- */\n/* Initials helper */\n/* -------------------------------------------------------------------------- */\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n}\n\n/* -------------------------------------------------------------------------- */\n/* Avatar */\n/* Wraps Radix Root/Image/Fallback. Preserves the legacy contract: */\n/* - `src` -> renders Radix Image */\n/* - `name` -> initials fallback (auto-computed) */\n/* - `alt` -> image alt (defaults to name) */\n/* - `size` -> xs|sm|md|lg|xl */\n/* - `status` -> online|away|busy|offline (renders a corner dot) */\n/* -------------------------------------------------------------------------- */\n\ninterface AvatarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>, \"children\">,\n VariantProps<typeof avatarVariants> {\n src?: string | null;\n alt?: string;\n name?: string;\n status?: keyof typeof statusStyles;\n}\n\nexport const Avatar = React.forwardRef<React.ElementRef<typeof AvatarPrimitive.Root>, AvatarProps>(\n function Avatar(\n { src, alt, name, size = \"md\", variant = \"initials\", status, className, ...props },\n ref,\n ) {\n const initials = name ? getInitials(name) : \"?\";\n const resolvedSize: AvatarSize = size ?? \"md\";\n\n return (\n <span className=\"relative inline-flex\">\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size: resolvedSize, variant }), className)}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n src={src}\n alt={alt ?? name ?? \"Avatar\"}\n className=\"aspect-square size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n delayMs={src ? 200 : 0}\n className=\"flex size-full items-center justify-center\"\n aria-label={name || \"Unknown user\"}\n >\n {initials}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n {status && (\n <span\n className={cn(\n \"ring-bg absolute right-0 bottom-0 block rounded-full ring-2\",\n statusDotSizes[resolvedSize],\n statusStyles[status],\n )}\n aria-label={status}\n />\n )}\n </span>\n );\n },\n);\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Badge — status atom. Variants port the `.pill` family in `_shared.css`\n * (lines 257-289). Default variant is the neutral pill.\n */\nexport const badgeVariants = cva(\n cn(\n \"inline-flex items-center gap-1 rounded-pill border font-medium\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n default: \"bg-pro-fg text-fg-on-pro border-transparent\",\n secondary: \"bg-bg-2 text-fg-3 border-rule\",\n destructive: \"bg-danger-bg text-danger-fg border-danger-line\",\n success: \"bg-success-bg text-success-fg border-success-line\",\n warning: \"bg-warning-bg text-warning-fg border-warning-line\",\n info: \"bg-accent-tint text-accent-2 border-[color:var(--color-accent-tint)]\",\n outline: \"border-rule bg-transparent text-fg-2\",\n },\n size: {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-0.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n dot?: boolean;\n icon?: React.ReactNode;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant, size, dot, icon, children, className, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {dot && <span className=\"size-1.5 rounded-full bg-current\" aria-hidden=\"true\" />}\n {icon && (\n <span className=\"inline-flex size-3.5 shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n {children}\n </span>\n );\n});\n\nBadge.displayName = \"Badge\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Blockquote — semantic quote with optional attribution. Uses `font-display`\n * (Geist) at a comfortable reading scale; smart quotes are wrapped automatically.\n */\n\ninterface BlockquoteProps extends React.BlockquoteHTMLAttributes<HTMLQuoteElement> {\n author?: string;\n role?: string;\n}\n\nexport const Blockquote = forwardRef<HTMLQuoteElement, BlockquoteProps>(function Blockquote(\n { children, author, role: authorRole, className, ...props },\n ref,\n) {\n return (\n <figure>\n <blockquote\n ref={ref}\n className={cn(\n \"font-display text-fg text-xl leading-relaxed tracking-[-0.022em] md:text-2xl\",\n className,\n )}\n {...props}\n >\n <p>“{children}”</p>\n </blockquote>\n {author && (\n <figcaption className=\"mt-4\">\n <cite className=\"text-fg text-sm font-semibold not-italic\">{author}</cite>\n {authorRole && <span className=\"text-fg-3 block text-sm\">{authorRole}</span>}\n </figcaption>\n )}\n </figure>\n );\n});\n\nBlockquote.displayName = \"Blockquote\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronRightIcon } from \"./icons\";\n/**\n * Breadcrumb — semantic navigation primitive. Uses the catalog `ChevronRightIcon` as the\n * default separator. Current page (BreadcrumbPage) leans on Pro purple to\n * mirror the active-state language used elsewhere in the firm app.\n *\n * Public API preserved: Breadcrumb / BreadcrumbList / BreadcrumbItem /\n * BreadcrumbLink / BreadcrumbPage / BreadcrumbSeparator.\n */\n\nexport type BreadcrumbProps = React.HTMLAttributes<HTMLElement>;\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { className, ...props },\n ref,\n) {\n return <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(className)} {...props} />;\n});\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport type BreadcrumbListProps = React.HTMLAttributes<HTMLOListElement>;\n\nexport const BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n ref={ref}\n className={cn(\"text-fg-3 flex flex-wrap items-center gap-1.5 text-sm\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nexport type BreadcrumbItemProps = React.HTMLAttributes<HTMLLIElement>;\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return (\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n );\n },\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport type BreadcrumbLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n function BreadcrumbLink({ className, children, ...props }, ref) {\n return (\n <a\n ref={ref}\n className={cn(\n \"text-fg-3 inline-flex items-center gap-1\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"rounded-icon focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n >\n {children}\n </a>\n );\n },\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nexport type BreadcrumbPageProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n role=\"link\"\n aria-disabled=\"true\"\n className={cn(\"text-fg font-medium\", className)}\n {...props}\n />\n );\n },\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport type BreadcrumbSeparatorProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbSeparator = forwardRef<HTMLSpanElement, BreadcrumbSeparatorProps>(\n function BreadcrumbSeparator({ children, className, ...props }, ref) {\n return (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-fg-5 inline-flex items-center [&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon strokeWidth={1.75} />}\n </span>\n );\n },\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Button — Assure Pro action atom.\n *\n * Variants port the `.btn-*` rules in `_shared.css` (lines 164-203):\n * - primary → bg-pro-fg (Pro purple, the firm app's brand identity)\n * - secondary → ghost surface bg-bg-2\n * - destructive → bg-danger-fg\n * - success → bg-success-fg\n * - ghost → transparent, hover:bg-bg-2\n * - outline → bordered surface (matches `.btn-ghost` from spec)\n * - link → text-accent (cyan) with underline-on-hover\n * - accent → bg-accent (cyan CTA per spec §6.2)\n *\n * Sizes match shadcn convention; default `md` matches spec's 8px/14px padding.\n * Use `asChild` to render as a different element (e.g. an anchor / next/link).\n */\nexport const buttonVariants = cva(\n cn(\n \"inline-flex items-center justify-center rounded-btn font-medium whitespace-nowrap\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"motion-reduce:transition-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n ),\n {\n variants: {\n variant: {\n primary: \"bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active\",\n secondary: \"bg-bg-2 text-fg-2 border border-rule hover:bg-bg-3 hover:border-rule-strong\",\n destructive: \"bg-danger-fg text-white hover:bg-danger-fg/90 active:bg-danger-fg/80\",\n success: \"bg-success-fg text-white hover:bg-success-fg/90 active:bg-success-fg/80\",\n ghost: \"bg-transparent text-fg-2 hover:bg-bg-2 hover:text-fg\",\n outline: \"border border-rule-strong bg-bg text-fg-2 hover:bg-bg-2 hover:border-fg-4\",\n link: \"bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto\",\n accent: \"bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active\",\n },\n size: {\n sm: \"h-8 px-3 text-sm gap-1.5\",\n md: \"h-10 px-4 text-sm gap-2\",\n lg: \"h-12 px-6 text-base gap-2\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /** Render as the child element via Radix `Slot` (shadcn pattern). */\n asChild?: boolean;\n loading?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n}\n\nconst Spinner = () => (\n <svg className=\"size-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-25\"\n />\n <path\n d=\"M4 12a8 8 0 018-8\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-75\"\n />\n </svg>\n);\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant,\n size,\n asChild = false,\n loading,\n iconLeft,\n iconRight,\n disabled,\n children,\n className,\n ...props\n },\n ref,\n) {\n const Comp = asChild ? Slot : \"button\";\n\n // Slot collapses into a single child, so when asChild we render only children.\n if (asChild) {\n return (\n <Comp ref={ref} className={cn(buttonVariants({ variant, size }), className)} {...props}>\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n ref={ref}\n disabled={disabled || loading}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {loading ? (\n <Spinner />\n ) : (\n iconLeft && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconLeft}\n </span>\n )\n )}\n {children}\n {iconRight && !loading && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </Comp>\n );\n});\n\nButton.displayName = \"Button\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker, type DayPickerProps } from \"react-day-picker\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Calendar — react-day-picker, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * <Calendar selected onSelect highlights minDate maxDate />\n *\n * Prop semantics intentionally unchanged:\n * - `selected` accepts `Date | null` (legacy null-instead-of-undefined).\n * - `onSelect` is invoked with a non-null `Date` (legacy never emitted null).\n * - `highlights` translates to react-day-picker `modifiers`.\n *\n * NEW (additive): consumers may pass any DayPickerProps (mode, disabled,\n * fromDate, toDate, etc.) by typing the component as DayPicker. This file\n * intentionally narrows the public contract; richer usage should compose\n * DayPicker directly.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type CalendarHighlightColor = \"primary\" | \"success\" | \"warning\" | \"destructive\";\n\nexport interface CalendarHighlight {\n date: Date;\n color?: CalendarHighlightColor;\n}\n\nexport interface CalendarProps extends Omit<\n DayPickerProps,\n \"mode\" | \"selected\" | \"onSelect\" | \"modifiers\" | \"modifiersClassNames\"\n> {\n selected?: Date | null;\n onSelect?: (date: Date) => void;\n highlights?: CalendarHighlight[];\n minDate?: Date;\n maxDate?: Date;\n className?: string;\n}\n\nconst HIGHLIGHT_COLORS: Record<CalendarHighlightColor, string> = {\n primary: \"after:bg-pro-fg\",\n success: \"after:bg-success-fg\",\n warning: \"after:bg-warning-fg\",\n destructive: \"after:bg-danger-fg\",\n};\n\nconst DOT_BASE =\n \"after:content-[''] after:absolute after:bottom-1 after:left-1/2 after:size-1 after:-translate-x-1/2 after:rounded-full\";\n\nexport function Calendar({\n selected,\n onSelect,\n highlights = [],\n minDate,\n maxDate,\n className,\n classNames,\n ...props\n}: CalendarProps) {\n /**\n * Bucket highlight dates by color so we can hand each color its own\n * `modifier` + `modifierClassName` pair (rdp doesn't allow per-day\n * className via the modifiers prop directly).\n */\n const { modifiers, modifiersClassNames } = React.useMemo(() => {\n const buckets: Partial<Record<CalendarHighlightColor, Date[]>> = {};\n for (const h of highlights) {\n const key = h.color ?? \"primary\";\n (buckets[key] ??= []).push(h.date);\n }\n\n const mods: Record<string, Date[]> = {};\n const modClasses: Record<string, string> = {};\n for (const [color, dates] of Object.entries(buckets) as [CalendarHighlightColor, Date[]][]) {\n const key = `assure-highlight-${color}`;\n mods[key] = dates;\n modClasses[key] = cn(\"relative\", DOT_BASE, HIGHLIGHT_COLORS[color]);\n }\n return { modifiers: mods, modifiersClassNames: modClasses };\n }, [highlights]);\n\n // Translate the legacy min/max props into rdp's `disabled` matcher form.\n const disabledMatcher = React.useMemo(() => {\n if (!minDate && !maxDate) return undefined;\n if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];\n if (minDate) return { before: minDate };\n return { after: maxDate as Date };\n }, [minDate, maxDate]);\n\n return (\n <DayPicker\n mode=\"single\"\n selected={selected ?? undefined}\n onSelect={(d) => {\n if (d) onSelect?.(d);\n }}\n disabled={disabledMatcher}\n modifiers={modifiers}\n modifiersClassNames={modifiersClassNames}\n showOutsideDays\n components={{\n Chevron: ({ orientation, className: chevClass }) => {\n const Icon = orientation === \"right\" ? ChevronRightIcon : ChevronLeftIcon;\n return <Icon className={cn(\"text-fg-3 size-4\", chevClass)} aria-hidden=\"true\" />;\n },\n }}\n className={cn(\"font-body text-fg select-none\", className)}\n classNames={{\n root: \"p-3 min-w-[280px]\",\n months: \"flex flex-col gap-4\",\n month: \"space-y-3\",\n month_caption:\n \"flex h-8 items-center justify-center font-display text-[13px] font-medium text-fg\",\n caption_label: \"tabular-nums\",\n nav: \"flex items-center justify-between absolute left-3 right-3 top-3\",\n button_previous:\n \"inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none\",\n button_next:\n \"inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 text-center text-[11px] font-medium uppercase tracking-wide text-fg-4 pb-1\",\n weeks: \"\",\n week: \"flex w-full mt-1\",\n day: \"flex-1 text-center relative p-0\",\n day_button: cn(\n \"inline-flex size-8 w-full items-center justify-center rounded-input font-mono tabular-nums text-[13px] text-fg\",\n \"transition-colors duration-[var(--duration-instant)] motion-reduce:transition-none\",\n \"hover:bg-bg-2\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ),\n today: \"[&_button]:font-semibold [&_button]:text-accent\",\n selected:\n \"[&_button]:bg-pro-fg [&_button]:text-fg-on-pro [&_button]:hover:bg-pro-hover [&_button]:focus-visible:bg-pro-fg\",\n outside: \"[&_button]:text-fg-5\",\n disabled: \"[&_button]:text-fg-disabled\",\n hidden: \"invisible\",\n ...classNames,\n }}\n {...props}\n />\n );\n}\n\nCalendar.displayName = \"Calendar\";\n","import { forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Card — surface container. Default surfaces use the `.surface` rule from\n * `_shared.css` (12px radius, 1px rule border, surface bg). Three variants:\n *\n * default — settled card on the page (current behavior, unchanged)\n * interactive — clickable card; hover darkens the border\n * flat — borderless / shadowless transparent surface, for nesting\n * inside Dialog/Sheet/Card without double-border\n */\n\nexport const cardVariants = cva(\"rounded-card border border-rule bg-surface text-fg shadow-quiet\", {\n variants: {\n variant: {\n default: \"\",\n interactive:\n \"cursor-pointer transition-[border-color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:border-rule-strong motion-reduce:transition-none\",\n flat: \"border-0 bg-transparent shadow-none\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nexport type CardVariants = VariantProps<typeof cardVariants>;\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement>, CardVariants {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, variant, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(cardVariants({ variant }), className)} {...props} />;\n});\nCard.displayName = \"Card\";\n\nexport const CardHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"grid auto-cols-fr grid-cols-[1fr_auto] items-start gap-1.5 p-6 [.border-b]:pb-4\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CardTitle({ className, children, ...props }, ref) {\n return (\n <h3\n ref={ref}\n className={cn(\"text-fg text-base leading-tight font-medium\", className)}\n {...props}\n >\n {children}\n </h3>\n );\n },\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(function CardDescription({ className, ...props }, ref) {\n return <p ref={ref} className={cn(\"text-fg-3 text-sm\", className)} {...props} />;\n});\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardContent({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />;\n },\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"border-rule flex items-center gap-2 border-t p-6\", className)}\n {...props}\n />\n );\n },\n);\nCardFooter.displayName = \"CardFooter\";\n\nexport const CardAction = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardAction({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"col-start-2 row-start-1 self-center\", className)} {...props} />\n );\n },\n);\nCardAction.displayName = \"CardAction\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, MinusIcon } from \"./icons\";\ninterface CheckboxProps extends Omit<\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n \"checked\" | \"defaultChecked\"\n> {\n /** Optional inline label rendered to the right of the box */\n label?: string;\n /** Tri-state support: true | false | \"indeterminate\" */\n checked?: boolean | \"indeterminate\";\n defaultChecked?: boolean | \"indeterminate\";\n /** Convenience: render with indeterminate state. Mirrors legacy prop. */\n indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(function Checkbox(\n { label, indeterminate, checked, defaultChecked, className, id: providedId, ...props },\n ref,\n) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n // Resolve tri-state from either explicit `checked` or legacy `indeterminate`.\n const resolvedChecked: CheckboxPrimitive.CheckboxProps[\"checked\"] = indeterminate\n ? \"indeterminate\"\n : checked;\n\n return (\n <div className=\"inline-flex items-center gap-2\">\n <CheckboxPrimitive.Root\n ref={ref}\n id={id}\n checked={resolvedChecked}\n defaultChecked={defaultChecked}\n className={cn(\n \"peer border-rule-strong bg-surface text-fg-on-pro flex size-4 shrink-0 items-center justify-center rounded-[4px] border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"hover:border-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[state=checked]:border-pro-fg data-[state=checked]:bg-pro-fg\",\n \"data-[state=indeterminate]:border-pro-fg data-[state=indeterminate]:bg-pro-fg\",\n \"disabled:bg-bg-disabled disabled:border-rule disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {resolvedChecked === \"indeterminate\" ? (\n <MinusIcon className=\"size-3\" strokeWidth={3} aria-hidden=\"true\" />\n ) : (\n <CheckIcon className=\"size-3\" strokeWidth={3} aria-hidden=\"true\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n )}\n </div>\n );\n});\n\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Select — Radix UI select primitive, Assure Pro skin.\n *\n * Public API preserved (the convenience wrapper):\n * <Select options={...} value placeholder onValueChange searchable />\n * - the original `Select` accepted `options: SelectOption[]`. Consumers\n * across firm + portal use that shape and we keep it.\n *\n * NEW (additive, shadcn parity) — composable lower-level slots so callers\n * can build their own trees:\n * SelectTrigger, SelectValue, SelectContent, SelectItem, SelectLabel,\n * SelectSeparator, SelectGroup, SelectScrollUpButton, SelectScrollDownButton\n *\n * Note: The legacy `Select` rendered Radix-incompatible custom slots (it\n * accepted `children` as raw JSX wrapping `<SelectTrigger />` /\n * `<SelectContent />` with no props). The new `Select` keeps the\n * options-driven path; for full composition use `SelectRoot` + the\n * lower-level slots directly.\n *\n * `searchable` prop: not natively supported by Radix Select. We accept the\n * prop to preserve the API but NO-OP it (warns in dev). Migrate searchable\n * UX to <SearchSelect /> (cmdk-based combobox).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst SelectRoot = 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 \"rounded-input border-rule-strong bg-surface font-body text-fg flex h-9 w-full items-center justify-between gap-2 border px-3 py-2 text-[13px]\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:text-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"data-[placeholder]:text-fg-4\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n \"[&>span]:line-clamp-1 [&>span]:text-left\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon\n className=\"text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] data-[state=open]:rotate-180 motion-reduce:transition-none\"\n aria-hidden=\"true\"\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\"text-fg-3 flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" aria-hidden=\"true\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\"text-fg-3 flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" aria-hidden=\"true\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.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 position={position}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop relative z-[var(--z-dropdown)] max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-hidden border\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"motion-reduce:transition-none\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n className,\n )}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.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 \"rounded-pill relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=checked]:bg-pro-bg data-[state=checked]:text-pro-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\n/* ─── Convenience wrapper ───────────────────────────────────────────── */\n\n/**\n * SelectOption shape — preserved verbatim from the legacy Select:\n * { value, label, disabled?, labelSuffix? }\n */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n labelSuffix?: React.ReactNode;\n}\n\nexport interface SelectProps {\n /** Option list. Required to preserve legacy API. */\n options: SelectOption[];\n /** Controlled value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n /** Accepted for back-compat. NO-OP — see file header for migration. */\n searchable?: boolean;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n className?: string;\n /** Forwarded to the trigger. */\n triggerClassName?: string;\n /** Forwarded to the content. */\n contentClassName?: string;\n /** aria-invalid + danger styling on trigger. */\n \"aria-invalid\"?: boolean;\n /** aria-label fallback when there is no visible label. */\n \"aria-label\"?: string;\n}\n\n/**\n * Convenience `Select` — preserved options-driven API.\n *\n * For full composition, import the lower-level slots:\n * <SelectRoot>\n * <SelectTrigger><SelectValue /></SelectTrigger>\n * <SelectContent>\n * <SelectGroup>\n * <SelectLabel>Label</SelectLabel>\n * <SelectItem value=\"…\">…</SelectItem>\n * </SelectGroup>\n * </SelectContent>\n * </SelectRoot>\n */\nfunction Select({\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Select...\",\n searchable,\n disabled,\n name,\n required,\n className,\n triggerClassName,\n contentClassName,\n \"aria-invalid\": ariaInvalid,\n \"aria-label\": ariaLabel,\n}: SelectProps) {\n if (process.env.NODE_ENV !== \"production\" && searchable) {\n console.warn(\n \"[Select] `searchable` is not supported by Radix Select. Use <SearchSelect /> for filterable selection.\",\n );\n }\n\n return (\n <SelectRoot\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n name={name}\n required={required}\n >\n <SelectTrigger\n aria-invalid={ariaInvalid || undefined}\n aria-label={ariaLabel}\n className={cn(triggerClassName, className)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent className={contentClassName}>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} disabled={opt.disabled}>\n <span className=\"flex items-center gap-1.5 truncate\">\n {opt.label}\n {opt.labelSuffix}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n );\n}\nSelect.displayName = \"Select\";\n\nexport {\n Select,\n SelectRoot,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { SelectContent, SelectItem, SelectRoot, SelectTrigger, SelectValue } from \"./select\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * ClientSelect — single-client picker, built on the new Radix-based\n * `Select` primitive.\n *\n * Public API preserved verbatim:\n * <ClientSelect\n * clients value onChange\n * name error className placeholder\n * />\n *\n * Behavioural notes:\n * - `value` is `string | null`; we map null → empty SelectValue (Radix\n * requires non-empty `value` strings on items, so the cleared state\n * is represented by no selection at all).\n * - The hidden `<input name=…>` is preserved so the component still\n * submits inside form posts; it carries `value ?? \"\"`.\n * - Each option shows `label` and an optional secondary `email` line.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type ClientSelectOption = {\n id: string;\n label: string;\n email?: string;\n};\n\ninterface ClientSelectProps {\n clients: ClientSelectOption[];\n value: string | null;\n onChange: (clientId: string | null) => void;\n name?: string;\n error?: string;\n className?: string;\n placeholder?: string;\n}\n\nexport function ClientSelect({\n clients,\n value,\n onChange,\n name = \"client_id\",\n error,\n className,\n placeholder = \"Select a client...\",\n}: ClientSelectProps) {\n // Radix Select uses controlled `value: string | undefined` (no null,\n // and no \"\" allowed on items). Bridge null ↔ undefined.\n const radixValue = value ?? undefined;\n\n const handleChange = (next: string) => {\n onChange(next === \"\" ? null : next);\n };\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n {/* Hidden field — preserved so existing form posts keep working. */}\n <input type=\"hidden\" name={name} value={value ?? \"\"} />\n\n <SelectRoot value={radixValue} onValueChange={handleChange}>\n <SelectTrigger aria-invalid={!!error || undefined} aria-label={placeholder}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {clients.length === 0 ? (\n <div className=\"text-fg-3 px-3 py-6 text-center text-xs\">No clients yet</div>\n ) : (\n clients.map((c) => (\n <SelectItem key={c.id} value={c.id}>\n <span className=\"flex flex-col\">\n <span className=\"text-fg text-[13px] font-medium\">{c.label}</span>\n {c.email && <span className=\"text-fg-3 text-xs\">{c.email}</span>}\n </span>\n </SelectItem>\n ))\n )}\n </SelectContent>\n </SelectRoot>\n\n {error && (\n <p role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nClientSelect.displayName = \"ClientSelect\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Collapsible */\n/* Thin wrapper over Radix's @radix-ui/react-collapsible primitives. */\n/* -------------------------------------------------------------------------- */\n\ntype CollapsibleProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root>;\n\nexport const Collapsible = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Root>,\n CollapsibleProps\n>(function Collapsible({ className, ...props }, ref) {\n return <CollapsiblePrimitive.Root ref={ref} className={cn(className)} {...props} />;\n});\nCollapsible.displayName = CollapsiblePrimitive.Root.displayName;\n\ntype CollapsibleTriggerProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>;\n\nexport const CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger({ className, ...props }, ref) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex w-full items-center\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n />\n );\n});\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;\n\ntype CollapsibleContentProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>;\n\nexport const CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(function CollapsibleContent({ className, ...props }, ref) {\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden\",\n \"data-[state=closed]:animate-[collapsible-up_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"data-[state=open]:animate-[collapsible-down_var(--duration-overlay)_var(--ease-out-quart)]\",\n \"motion-reduce:animate-none\",\n className,\n )}\n {...props}\n />\n );\n});\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon } from \"./icons\";\n/**\n * ComingSoon — placeholder pattern for unreleased modules. Pro-tinted icon\n * halo, dashed Assure border, \"In Development\" pill.\n *\n * Public API preserved: `icon`, `title`, `description`, `features`.\n */\nexport interface ComingSoonProps extends React.HTMLAttributes<HTMLDivElement> {\n icon: React.ReactNode;\n title: string;\n description: string;\n features: string[];\n}\n\nexport const ComingSoon = forwardRef<HTMLDivElement, ComingSoonProps>(function ComingSoon(\n { icon, title, description, features, className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center px-6 py-16\", className)}\n {...props}\n >\n <div\n className={cn(\n \"rounded-card border-rule-strong w-full max-w-lg border border-dashed\",\n \"bg-surface shadow-quiet p-10 text-center\",\n )}\n >\n {/* Eyebrow */}\n <div className=\"text-pro-fg mb-5 font-mono text-[11px] font-normal tracking-[0.14em] uppercase\">\n Coming soon\n </div>\n\n {/* Pro-tinted icon halo */}\n <div\n className={cn(\n \"mx-auto mb-4 flex size-12 items-center justify-center\",\n \"rounded-icon bg-pro-bg text-pro-fg [&>svg]:size-6\",\n )}\n >\n {icon}\n </div>\n\n <h1 className=\"font-display text-fg text-xl font-medium tracking-[-0.022em]\">{title}</h1>\n <p className=\"text-fg-3 mt-1.5 text-sm\">{description}</p>\n\n <ul className=\"mt-6 space-y-2 text-left\">\n {features.map((feature) => (\n <li key={feature} className=\"text-fg-2 flex items-center gap-2 text-sm\">\n <CheckIcon\n className=\"text-success-fg size-3.5 shrink-0\"\n strokeWidth={2.5}\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n\n <div className=\"mt-6\">\n <span\n className={cn(\n \"rounded-pill inline-flex items-center border px-2.5 py-0.5\",\n \"text-xs font-medium\",\n \"bg-pro-bg text-pro-fg border-[color:var(--color-pro-bg-active)]\",\n )}\n >\n In Development\n </span>\n </div>\n </div>\n </div>\n );\n});\n\nComingSoon.displayName = \"ComingSoon\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Dialog — Radix UI overlay primitive, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle,\n * DialogDescription, DialogFooter, DialogClose\n *\n * NEW (additive): DialogPortal, DialogOverlay are also exported for\n * advanced composition (matches shadcn convention).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogSizeStyles = {\n sm: \"max-w-sm\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n full: \"max-w-[calc(100vw-2rem)]\",\n} as const;\n\ninterface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n size?: keyof typeof dialogSizeStyles;\n /**\n * If false, the built-in close button is hidden. Default: true.\n * Use `<DialogClose>` inside content to render your own close UI.\n */\n showCloseButton?: boolean;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ size = \"md\", showCloseButton = true, className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full\",\n \"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto\",\n \"rounded-card border-rule bg-surface shadow-pop border p-6\",\n \"font-body text-fg\",\n // motion: scale + fade keyed off data-state\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:-translate-y-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n dialogSizeStyles[size],\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n className={cn(\n \"absolute top-4 right-4 inline-flex size-7 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n/* ─── DialogClose ────────────────────────────────────────────────────────\n * Backwards-compat note: the prior implementation rendered an absolute-\n * positioned close button by default and styled it as such. The new\n * DialogContent renders that close affordance built-in. The DialogClose\n * primitive is now a transparent wrapper around `Radix.Close`, used as a\n * dismiss action inside DialogFooter etc. (e.g. <DialogClose><Button …/></>).\n * ───────────────────────────────────────────────────────────────────── */\nconst DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close ref={ref} className={cn(className)} {...props} />\n));\nDialogClose.displayName = \"DialogClose\";\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"mb-4 flex flex-col gap-1.5 pr-8\", className)} {...props} />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end\",\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(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\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-fg-3 text-sm\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nimport { cn } from \"../lib/cn\";\nimport { Dialog, DialogPortal, DialogOverlay } from \"./dialog\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport { SearchIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * CommandPalette — `cmdk` rendered inside the Assure Pro Dialog.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * CommandPalette({ items, open, onOpenChange, placeholder })\n * export type { CommandItem }\n *\n * Behavior preserved:\n * - Cmd/Ctrl+K toggles open (when uncontrolled, or always)\n * - Up/Down/Enter/Escape navigation (provided by `cmdk`)\n * - Filter against label, description, group, and keywords\n * - Grouped item rendering with sticky group headings\n * - Optional per-item shortcut + icon\n * - Dismiss-on-select\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface CommandItem {\n id: string;\n label: string;\n description?: string;\n group?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect: () => void;\n keywords?: string[];\n}\n\ninterface CommandPaletteProps {\n items: CommandItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n}\n\nexport type { CommandItem };\n\n/* ── Kbd token — matches `_shared.css` .kbd lines 292-306 ───────────── */\nconst kbdClass = cn(\n \"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]\",\n \"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon\",\n \"[border-bottom-width:1.5px]\",\n);\n\n/* ── Group items, preserving insertion order ────────────────────────── */\nfunction groupItems(items: CommandItem[]): Array<[string, CommandItem[]]> {\n const groups = new Map<string, CommandItem[]>();\n for (const item of items) {\n const key = item.group ?? \"\";\n const existing = groups.get(key);\n if (existing) existing.push(item);\n else groups.set(key, [item]);\n }\n return Array.from(groups.entries());\n}\n\nexport function CommandPalette({\n items,\n open: controlledOpen,\n onOpenChange,\n placeholder = \"Type a command or search...\",\n}: CommandPaletteProps) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) setInternalOpen(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n // Cmd/Ctrl + K toggles the palette globally.\n React.useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault();\n setOpen(!open);\n }\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n const grouped = groupItems(items);\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n aria-label=\"Command palette\"\n className={cn(\n \"fixed top-[20vh] left-1/2 z-[var(--z-modal)] w-full max-w-xl -translate-x-1/2\",\n \"rounded-card border-rule bg-surface shadow-pop overflow-hidden border\",\n \"font-body text-fg\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:-translate-x-1/2 data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:-translate-x-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n )}\n >\n <DialogPrimitive.Title className=\"sr-only\">Command palette</DialogPrimitive.Title>\n <DialogPrimitive.Description className=\"sr-only\">\n Search and run commands\n </DialogPrimitive.Description>\n <CommandPrimitive\n label=\"Command palette\"\n className={cn(\n \"flex flex-col\",\n // Hide a group's heading when the group has no visible children\n \"[&_[cmdk-group]:not([hidden])_~_[cmdk-group]]:border-t-0\",\n )}\n >\n {/* ── Search input ──────────────────────────────────── */}\n <div className=\"border-rule relative border-b\">\n <SearchIcon\n className=\"text-fg-3 pointer-events-none absolute top-1/2 left-4 size-4 -translate-y-1/2\"\n aria-hidden=\"true\"\n />\n <CommandPrimitive.Input\n placeholder={placeholder}\n className={cn(\n \"text-fg w-full border-none bg-transparent py-3.5 pr-4 pl-11 text-sm\",\n \"placeholder:text-fg-3 outline-none\",\n \"focus:ring-0 focus:outline-none focus-visible:ring-0\",\n )}\n />\n </div>\n\n {/* ── Results ───────────────────────────────────────── */}\n <CommandPrimitive.List\n className={cn(\n \"scrollbar-thin max-h-[380px] overflow-y-auto py-1\",\n \"[&_[cmdk-group-heading]]:px-4 [&_[cmdk-group-heading]]:py-1.5\",\n \"[&_[cmdk-group-heading]]:font-mono [&_[cmdk-group-heading]]:text-[11px]\",\n \"[&_[cmdk-group-heading]]:tracking-[0.14em] [&_[cmdk-group-heading]]:uppercase\",\n \"[&_[cmdk-group-heading]]:text-fg-3\",\n )}\n >\n <CommandPrimitive.Empty className=\"text-fg-3 py-8 text-center text-sm\">\n No results found.\n </CommandPrimitive.Empty>\n\n {grouped.map(([group, groupItemsList]) => (\n <CommandPrimitive.Group\n key={group || \"_ungrouped\"}\n heading={group || undefined}\n className=\"py-1\"\n >\n {groupItemsList.map((item) => (\n <CommandPrimitive.Item\n key={item.id}\n value={`${item.id} ${item.label} ${item.description ?? \"\"} ${item.group ?? \"\"} ${(item.keywords ?? []).join(\" \")}`}\n keywords={item.keywords}\n onSelect={() => {\n item.onSelect();\n setOpen(false);\n }}\n className={cn(\n \"rounded-btn mx-1.5 flex cursor-pointer items-center gap-3 px-3 py-2\",\n \"text-left transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] outline-none motion-reduce:transition-none\",\n \"data-[selected=true]:bg-overlay-hover\",\n \"aria-selected:bg-overlay-hover\",\n )}\n >\n {item.icon && (\n <div\n className={cn(\n \"rounded-icon flex size-8 shrink-0 items-center justify-center\",\n item.group === \"Create\" ? \"bg-pro-bg text-pro-fg\" : \"bg-bg-2 text-fg-3\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </div>\n )}\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-fg text-sm font-medium\">{item.label}</div>\n {item.description && (\n <div className=\"text-fg-3 truncate text-xs\">{item.description}</div>\n )}\n </div>\n\n {item.shortcut && (\n <kbd className={cn(kbdClass, \"hidden shrink-0 sm:inline-flex\")}>\n {item.shortcut}\n </kbd>\n )}\n </CommandPrimitive.Item>\n ))}\n </CommandPrimitive.Group>\n ))}\n </CommandPrimitive.List>\n\n {/* ── Footer keyboard hints ─────────────────────────── */}\n <div className=\"border-rule bg-bg-2/40 text-fg-3 flex flex-wrap items-center gap-4 border-t px-4 py-2.5\">\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>↑↓</kbd>\n Navigate\n </span>\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>↵</kbd>\n Select\n </span>\n <span className=\"flex items-center gap-1.5\">\n <kbd className={kbdClass}>esc</kbd>\n Close\n </span>\n </div>\n </CommandPrimitive>\n </DialogPrimitive.Content>\n </DialogPortal>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"./alert-dialog\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * ConfirmActionButton — drop-in confirmation gate around any trigger.\n *\n * Composes AlertDialog + a caller-supplied trigger to retire native\n * window.confirm() and the ad-hoc \"useState + dialog + handler\" boilerplate\n * that recurs around destructive actions. Pressure-tested against 8\n * unrelated consumer sites before absorption.\n *\n * The async onConfirm + internal pending state keeps both Action and\n * Cancel disabled mid-await — preventing the double-fire bug where a\n * user clicks Confirm, sees no immediate feedback, and clicks again.\n *\n * <ConfirmActionButton\n * trigger={<Button variant=\"destructive\">Cancel invoice</Button>}\n * title=\"Cancel this invoice?\"\n * description=\"This cannot be undone. The invoice will be marked cancelled.\"\n * confirmLabel=\"Cancel invoice\"\n * cancelLabel=\"Keep invoice\"\n * onConfirm={handleCancel}\n * />\n *\n * If onConfirm throws, the dialog stays open so the consumer can surface\n * the error (e.g. via Toast). The dialog also refuses to close via ESC,\n * overlay click, or Cancel while a confirmation is in flight.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface ConfirmActionButtonProps {\n /** Element rendered as the dialog trigger via `<AlertDialogTrigger asChild>`. */\n trigger: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n /** Awaited; dialog closes after resolve, stays open on reject. */\n onConfirm: () => void | Promise<void>;\n /** When true (default) the Action button uses the destructive palette;\n * when false it uses the Pro primary palette (bg-pro-fg). */\n destructive?: boolean;\n /** Forwarded to AlertDialogContent for one-off layout overrides. */\n contentClassName?: string;\n}\n\nexport function ConfirmActionButton({\n trigger,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n destructive = true,\n contentClassName,\n}: ConfirmActionButtonProps) {\n const [open, setOpen] = React.useState(false);\n const [pending, setPending] = React.useState(false);\n\n const handleConfirm = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setPending(true);\n try {\n await onConfirm();\n setOpen(false);\n } finally {\n setPending(false);\n }\n };\n\n return (\n <AlertDialog\n open={open}\n onOpenChange={(next) => {\n if (pending) return;\n setOpen(next);\n }}\n >\n <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>\n <AlertDialogContent className={contentClassName}>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={pending}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction\n disabled={pending}\n onClick={handleConfirm}\n className={cn(\n !destructive &&\n \"bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active\",\n )}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * ContextMenu — Radix UI context-menu primitive, Assure Pro skin.\n *\n * Public API preserved:\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem (with `destructive` prop), ContextMenuSeparator\n *\n * NEW (additive, shadcn parity):\n * ContextMenuLabel, ContextMenuGroup, ContextMenuPortal,\n * ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent,\n * ContextMenuCheckboxItem, ContextMenuRadioGroup, ContextMenuRadioItem,\n * ContextMenuShortcut\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst ContextMenu = ContextMenuPrimitive.Root;\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=open]:bg-bg-2 data-[state=open]:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"text-fg-3 ml-auto size-4\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[10rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\ninterface ContextMenuItemProps extends React.ComponentPropsWithoutRef<\n typeof ContextMenuPrimitive.Item\n> {\n destructive?: boolean;\n inset?: boolean;\n}\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n ContextMenuItemProps\n>(({ className, destructive, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n destructive && \"text-danger-fg focus:bg-danger-bg focus:text-danger-fg\",\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" aria-hidden=\"true\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\"text-fg-4 ml-auto font-mono text-[11px] tracking-wider\", className)}\n {...props}\n />\n);\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","\"use client\";\n\nimport { forwardRef, useCallback, useState } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, CopyIcon } from \"./icons\";\ninterface CopyButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n feedbackDuration?: number;\n}\n\n/**\n * CopyButton — single-click clipboard copy with check-mark feedback.\n * Renders the lucide `Copy` icon by default; pass `children` to override.\n */\nexport const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(function CopyButton(\n { value, feedbackDuration = 2000, className, children, ...props },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), feedbackDuration);\n }, [value, feedbackDuration]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={handleCopy}\n className={cn(\n \"rounded-icon text-fg-3 inline-flex items-center justify-center p-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"motion-reduce:transition-none\",\n className,\n )}\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n {...props}\n >\n {copied ? (\n <CheckIcon size={16} aria-hidden=\"true\" />\n ) : (\n (children ?? <CopyIcon size={16} aria-hidden=\"true\" />)\n )}\n </button>\n );\n});\n\nCopyButton.displayName = \"CopyButton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Popover — Radix UI popover primitive, Assure Pro skin.\n *\n * Public API preserved:\n * Popover, PopoverTrigger, PopoverContent\n *\n * NEW (additive): PopoverAnchor, PopoverPortal, PopoverClose are\n * exported for advanced composition.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nconst PopoverPortal = PopoverPrimitive.Portal;\nconst PopoverClose = PopoverPrimitive.Close;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", side = \"bottom\", sideOffset = 8, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-72 border p-4 outline-none\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverAnchor, PopoverPortal, PopoverClose, PopoverContent };\n","\"use client\";\n\nimport { forwardRef, useCallback, useId, useImperativeHandle, useRef, useState } from \"react\";\nimport { format, parse, isValid } from \"date-fns\";\n\nimport { cn } from \"../lib/cn\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nimport { CalendarIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * DatePicker — Popover + Calendar + masked text input.\n *\n * Public API preserved EXACTLY:\n * - `value` / `defaultValue` are ISO `YYYY-MM-DD` strings (what 988 firm +\n * 174 portal call sites pass today).\n * - The displayed value in the trigger input is `MM/DD/YYYY`.\n * - `onChange` is invoked with a synthetic event of shape\n * `{ target: { name?: string; value: string } }` where `value` is the\n * ISO string. Call sites depend on this synthetic shape — do NOT change.\n * - `min` / `max` are ISO strings — gate the calendar grid.\n * - A hidden `<input name>` mirrors the ISO value for native form posts.\n * - `forwardRef<HTMLInputElement>` points to the visible text input.\n *\n * Re-exports the legacy ISO/display helpers + the placeholder constant.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface DatePickerProps {\n value?: string;\n defaultValue?: string;\n onChange?: (event: { target: { name?: string; value: string } }) => void;\n name?: string;\n id?: string;\n label?: string;\n error?: string;\n disabled?: boolean;\n required?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n className?: string;\n min?: string;\n max?: string;\n \"aria-label\"?: string;\n}\n\nexport const DATE_DISPLAY_PLACEHOLDER = \"MM/DD/YYYY\";\n\nconst ISO_RE = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DISPLAY_RE = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nexport function isoToDisplay(iso: string | undefined | null): string {\n if (!iso) return \"\";\n const m = ISO_RE.exec(iso);\n if (!m) return \"\";\n return `${m[2]}/${m[3]}/${m[1]}`;\n}\n\nexport function displayToIso(display: string): string {\n const m = DISPLAY_RE.exec(display);\n if (!m) return \"\";\n const [, mm, dd, yyyy] = m;\n // Re-validate by round-tripping through date-fns.\n const parsed = parse(`${mm}/${dd}/${yyyy}`, \"MM/dd/yyyy\", new Date());\n if (!isValid(parsed)) return \"\";\n if (\n parsed.getFullYear() !== Number(yyyy) ||\n parsed.getMonth() + 1 !== Number(mm) ||\n parsed.getDate() !== Number(dd)\n ) {\n return \"\";\n }\n return `${yyyy}-${mm}-${dd}`;\n}\n\nfunction applyMask(input: string): string {\n const digits = input.replace(/\\D/g, \"\").slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction isoToDate(iso: string): Date | undefined {\n if (!iso) return undefined;\n const parsed = parse(iso, \"yyyy-MM-dd\", new Date());\n return isValid(parsed) ? parsed : undefined;\n}\n\nfunction dateToIso(d: Date): string {\n return format(d, \"yyyy-MM-dd\");\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n name,\n id: providedId,\n label,\n error,\n disabled,\n required,\n autoFocus,\n placeholder = DATE_DISPLAY_PLACEHOLDER,\n className,\n min,\n max,\n \"aria-label\": ariaLabel,\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const isControlled = value !== undefined;\n\n const [internalIso, setInternalIso] = useState<string>(\n isControlled ? (value ?? \"\") : (defaultValue ?? \"\"),\n );\n const [display, setDisplay] = useState<string>(() =>\n isoToDisplay(isControlled ? value : defaultValue),\n );\n const [open, setOpen] = useState(false);\n\n // React-to-controlled-prop changes without a sync useEffect.\n const [lastPropValue, setLastPropValue] = useState<string | undefined>(value);\n if (isControlled && value !== lastPropValue) {\n setLastPropValue(value);\n const nextIso = value ?? \"\";\n setInternalIso(nextIso);\n if (displayToIso(display) !== nextIso) {\n setDisplay(isoToDisplay(nextIso));\n }\n }\n\n const iso = isControlled ? (value ?? \"\") : internalIso;\n\n const textRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(ref, () => textRef.current as HTMLInputElement);\n\n const emit = useCallback(\n (nextIso: string) => {\n onChange?.({ target: { name, value: nextIso } });\n },\n [name, onChange],\n );\n\n const handleTextChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = applyMask(e.target.value);\n setDisplay(masked);\n const nextIso = displayToIso(masked);\n if (nextIso !== iso) {\n if (!isControlled) setInternalIso(nextIso);\n emit(nextIso);\n } else if (!nextIso && iso) {\n if (!isControlled) setInternalIso(\"\");\n emit(\"\");\n }\n },\n [iso, isControlled, emit],\n );\n\n const handleCalendarSelect = useCallback(\n (d: Date) => {\n const nextIso = dateToIso(d);\n setDisplay(isoToDisplay(nextIso));\n if (!isControlled) setInternalIso(nextIso);\n emit(nextIso);\n setOpen(false);\n // Restore focus to the text field for keyboard continuity.\n requestAnimationFrame(() => textRef.current?.focus());\n },\n [isControlled, emit],\n );\n\n const minDate = isoToDate(min ?? \"\");\n const maxDate = isoToDate(max ?? \"\");\n const selectedDate = isoToDate(iso);\n\n return (\n <div className={cn(\"w-full\", className)}>\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n {required && (\n <span className=\"text-danger-fg ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"relative\">\n <input\n ref={textRef}\n id={id}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n value={display}\n onChange={handleTextChange}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n // Forwarding consumer-supplied autoFocus on a date input is intentional\n // (e.g. inline edit cells, return-from-modal flows). Decision lives at the call site.\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n aria-label={ariaLabel}\n className={cn(\n \"rounded-input bg-surface text-fg flex h-9 w-full border font-mono text-[13px] tabular-nums\",\n \"border-rule-strong px-3 py-2 pr-10\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:font-body placeholder:text-fg-4\",\n \"focus-visible:border-accent focus-visible:outline-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n )}\n />\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n aria-label=\"Open calendar\"\n className={cn(\n \"rounded-r-input text-fg-3 absolute inset-y-0 right-0 flex w-10 items-center justify-center\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed\",\n )}\n >\n <CalendarIcon className=\"size-4\" aria-hidden=\"true\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n sideOffset={6}\n className=\"w-auto p-0\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Calendar\n selected={selectedDate ?? null}\n onSelect={handleCalendarSelect}\n minDate={minDate}\n maxDate={maxDate}\n defaultMonth={selectedDate ?? minDate ?? undefined}\n />\n </PopoverContent>\n </Popover>\n {name && <input type=\"hidden\" name={name} value={iso} />}\n </div>\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\nimport { XIcon } from \"./icons\";\n\nconst chipVariants = cva(\n cn(\n \"inline-flex items-center gap-1 rounded-full px-2.5 py-1\",\n \"text-[12px] font-medium\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n ),\n {\n variants: {\n variant: {\n primary: \"bg-primary/10 text-primary hover:bg-primary/15\",\n neutral: \"bg-muted text-fg-2 hover:bg-muted/80\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n },\n);\n\ninterface DismissibleChipProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\" | \"children\">,\n VariantProps<typeof chipVariants> {\n label: React.ReactNode;\n onDismiss: () => void;\n}\n\nexport const DismissibleChip = React.forwardRef<\n HTMLButtonElement,\n DismissibleChipProps\n>(function DismissibleChip(\n { label, onDismiss, variant, className, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onDismiss}\n aria-label={\n typeof label === \"string\" ? `Remove ${label} filter` : \"Remove filter\"\n }\n className={cn(chipVariants({ variant }), className)}\n {...props}\n >\n <span>{label}</span>\n <XIcon size={12} aria-hidden=\"true\" />\n </button>\n );\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * DropdownMenu — Radix UI dropdown-menu primitive, Assure Pro skin.\n *\n * Public API preserved:\n * DropdownMenu, DropdownMenuTrigger, DropdownMenuContent,\n * DropdownMenuItem (with `destructive` prop), DropdownMenuSeparator,\n * DropdownMenuLabel, DropdownMenuGroup\n *\n * NEW (additive, shadcn parity):\n * DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubTrigger,\n * DropdownMenuSubContent, DropdownMenuCheckboxItem,\n * DropdownMenuRadioGroup, DropdownMenuRadioItem,\n * DropdownMenuShortcut\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[state=open]:bg-bg-2 data-[state=open]:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"text-fg-3 ml-auto size-4\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 6, align = \"start\", ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[10rem] overflow-hidden border p-1\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\ninterface DropdownMenuItemProps extends React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> {\n /** Render as a destructive (danger) action. */\n destructive?: boolean;\n /** Increase left padding to align with checkbox/radio items. */\n inset?: boolean;\n}\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, destructive, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n destructive && \"text-danger-fg focus:bg-danger-bg focus:text-danger-fg\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus:bg-bg-2 focus:text-fg\",\n \"data-[disabled]:text-fg-disabled data-[disabled]:pointer-events-none\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" aria-hidden=\"true\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.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(\"bg-rule -mx-1 my-1 h-px\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\"text-fg-4 ml-auto font-mono text-[11px] tracking-wider\", className)}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * EmptyState — restated with Assure Pro tokens. Display headline (Geist),\n * fg-3 description, neutral icon halo on bg-2.\n *\n * Public API preserved: `icon`, `title`, `description`, `action`.\n */\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(\n { icon, title, description, action, className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col items-center justify-center px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n \"mb-4 flex size-12 items-center justify-center rounded-full\",\n \"bg-bg-2 text-fg-4 [&>svg]:size-6\",\n )}\n >\n {icon}\n </div>\n )}\n <h3 className=\"font-display text-fg text-base font-medium tracking-[-0.02em]\">{title}</h3>\n {description && <p className=\"text-fg-3 mt-1 max-w-sm text-sm\">{description}</p>}\n {action && <div className=\"mt-5\">{action}</div>}\n </div>\n );\n});\n\nEmptyState.displayName = \"EmptyState\";\n","\"use client\";\n\nimport { useCallback, useId, useRef, useState } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { UploadIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * FileUpload — custom drag-drop + file picker.\n *\n * Public API preserved:\n * <FileUpload accept maxSize multiple onFilesSelected disabled className />\n *\n * Restyled with Assure Pro tokens:\n * - dashed `border-rule-strong` drop zone, rounded-card\n * - hover/drag-over uses Pro purple (bg-pro-bg / border-pro-line / text-pro-fg)\n * - catalog `UploadIcon`\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface FileUploadProps extends React.HTMLAttributes<HTMLDivElement> {\n accept?: string;\n maxSize?: number;\n multiple?: boolean;\n onFilesSelected?: (files: File[]) => void;\n disabled?: boolean;\n}\n\nexport function FileUpload({\n accept,\n maxSize,\n multiple,\n onFilesSelected,\n disabled,\n className,\n children,\n ...props\n}: FileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = useId();\n const [isDragOver, setIsDragOver] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const validateFiles = useCallback(\n (files: File[]): File[] => {\n setError(null);\n const acceptTypes = accept ? accept.split(\",\").map((t) => t.trim()) : null;\n\n const valid = files.filter((file) => {\n if (acceptTypes) {\n const ext = `.${file.name.split(\".\").pop()?.toLowerCase()}`;\n const matchesType = acceptTypes.some(\n (type) =>\n type === ext ||\n type === file.type ||\n (type.endsWith(\"/*\") && file.type.startsWith(type.replace(\"/*\", \"/\"))),\n );\n if (!matchesType) {\n setError(`File type not accepted: ${file.name}`);\n return false;\n }\n }\n if (maxSize && file.size > maxSize) {\n setError(`File too large: ${file.name} (max ${formatBytes(maxSize)})`);\n return false;\n }\n return true;\n });\n\n return valid;\n },\n [accept, maxSize],\n );\n\n function handleFiles(fileList: FileList) {\n const files = Array.from(fileList);\n const valid = validateFiles(multiple ? files : files.slice(0, 1));\n if (valid.length > 0) onFilesSelected?.(valid);\n }\n\n function handleDrop(e: React.DragEvent) {\n e.preventDefault();\n setIsDragOver(false);\n if (disabled) return;\n handleFiles(e.dataTransfer.files);\n }\n\n return (\n <div className={cn(\"w-full\", className)} {...props}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <label\n htmlFor={inputId}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setIsDragOver(true);\n }}\n onDragLeave={() => setIsDragOver(false)}\n onDrop={handleDrop}\n className={cn(\n \"flex flex-col items-center justify-center gap-2\",\n \"rounded-card border-rule-strong bg-surface border border-dashed\",\n \"font-body p-8 text-center\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n // Hover (when not disabled)\n !disabled && \"hover:border-pro-line hover:bg-pro-bg/40\",\n // Drag-over → Pro purple highlight\n isDragOver && \"border-pro-line bg-pro-bg\",\n disabled && \"border-rule bg-bg-disabled text-fg-disabled cursor-not-allowed\",\n !disabled && \"cursor-pointer\",\n )}\n >\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(e) => {\n if (e.target.files) handleFiles(e.target.files);\n // Reset value so the same file can be re-selected\n e.target.value = \"\";\n }}\n className=\"fixed -top-[9999px] -left-[9999px] opacity-0\"\n disabled={disabled}\n tabIndex={-1}\n />\n {children ?? (\n <>\n <div\n className={cn(\n \"rounded-icon flex size-10 items-center justify-center transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n isDragOver ? \"bg-pro-fg text-fg-on-pro\" : \"bg-pro-bg text-pro-fg\",\n )}\n aria-hidden=\"true\"\n >\n <UploadIcon className=\"size-5\" />\n </div>\n <div className=\"text-fg-3 text-sm\">\n <span className=\"text-fg font-medium\">Click to upload</span> or drag and drop\n </div>\n {accept && <p className=\"text-fg-4 font-mono text-[10.5px]\">Accepted: {accept}</p>}\n {maxSize && (\n <p className=\"text-fg-4 font-mono text-[10.5px]\">Max size: {formatBytes(maxSize)}</p>\n )}\n </>\n )}\n </label>\n {error && (\n <p role=\"alert\" className=\"text-danger-fg mt-2 text-sm\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n","import { cn } from \"../lib/cn\";\n\nimport { AlertCircleIcon, CheckCircle2Icon } from \"./icons\";\ninterface FormErrorProps extends React.HTMLAttributes<HTMLParagraphElement> {\n children: React.ReactNode;\n}\n\n/**\n * Inline form error — paired below an input to communicate validation failure.\n * Uses architectural --color-danger-fg token.\n */\nexport function FormError({ children, className, ...props }: FormErrorProps) {\n return (\n <p\n role=\"alert\"\n className={cn(\"text-danger-fg flex items-center gap-1.5 text-xs leading-tight\", className)}\n {...props}\n >\n <AlertCircleIcon className=\"size-3.5 shrink-0\" strokeWidth={2} aria-hidden=\"true\" />\n <span>{children}</span>\n </p>\n );\n}\n\ninterface FormSuccessProps extends React.HTMLAttributes<HTMLParagraphElement> {\n children: React.ReactNode;\n}\n\n/**\n * Inline form success — paired below an input to confirm a saved value.\n * Uses architectural --color-success-fg token.\n */\nexport function FormSuccess({ children, className, ...props }: FormSuccessProps) {\n return (\n <p\n role=\"status\"\n className={cn(\"text-success-fg flex items-center gap-1.5 text-xs leading-tight\", className)}\n {...props}\n >\n <CheckCircle2Icon className=\"size-3.5 shrink-0\" strokeWidth={2} aria-hidden=\"true\" />\n <span>{children}</span>\n </p>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * HoverCard — Radix UI hover-card primitive, Assure Pro skin.\n *\n * Public API preserved:\n * HoverCard, HoverCardTrigger, HoverCardContent\n *\n * NEW (additive): HoverCardPortal is exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst HoverCard = HoverCardPrimitive.Root;\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\nconst HoverCardPortal = HoverCardPrimitive.Portal;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", side = \"bottom\", sideOffset = 8, ...props }, ref) => (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n \"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-64 border p-4 outline-none\",\n \"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=open]:scale-100 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardPortal, HoverCardContent };\n","\"use client\";\n\nimport { forwardRef, useId, useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { EyeIcon, EyeOffIcon } from \"./icons\";\n/**\n * Input variants. Mirrors the raw HTML `<input>` styled per Assure Pro tokens\n * (rule-strong border, surface bg, accent focus ring).\n */\nconst inputVariants = cva(\n [\n \"flex w-full rounded-input border bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n ],\n {\n variants: {\n variant: {\n default: \"border-rule-strong\",\n ghost: \"border-transparent bg-transparent focus-visible:bg-surface\",\n },\n inputSize: {\n sm: \"h-8 px-2.5 py-1 text-xs\",\n md: \"h-9 px-3 py-2 text-[13px]\",\n lg: \"h-11 px-3.5 py-2.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inputSize: \"md\",\n },\n },\n);\n\nexport type InputVariants = VariantProps<typeof inputVariants>;\n\ninterface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">, InputVariants {\n label?: string;\n error?: string;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n label,\n error,\n prefixIcon,\n suffixIcon,\n variant,\n inputSize,\n type = \"text\",\n className,\n id: providedId,\n ...props\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n const inputType = isPassword && showPassword ? \"text\" : type;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n {prefixIcon && (\n <span\n className=\"text-fg-4 pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 [&>svg]:size-4\"\n aria-hidden=\"true\"\n >\n {prefixIcon}\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type={inputType}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n className={cn(\n inputVariants({ variant, inputSize }),\n prefixIcon && \"pl-9\",\n (suffixIcon || isPassword) && \"pr-9\",\n className,\n )}\n {...props}\n />\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"text-fg-4 hover:text-fg absolute top-1/2 right-2.5 -translate-y-1/2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none\"\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n tabIndex={-1}\n >\n {showPassword ? (\n <EyeOffIcon className=\"size-4\" aria-hidden=\"true\" />\n ) : (\n <EyeIcon className=\"size-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n {suffixIcon && !isPassword && (\n <span\n className=\"text-fg-4 pointer-events-none absolute top-1/2 right-3 -translate-y-1/2 [&>svg]:size-4\"\n aria-hidden=\"true\"\n >\n {suffixIcon}\n </span>\n )}\n </div>\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg mt-1.5 text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n});\n\nInput.displayName = \"Input\";\n\nexport { inputVariants };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"./dialog\";\n\nimport { CommandIcon, CornerDownLeftIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * KeyboardShortcutsDialog — global `?` toggled help dialog.\n *\n * Public API preserved: zero props (consumer-hostile by design).\n * Mount once near the app root; press `?` anywhere outside an editable\n * field to toggle.\n *\n * Built on the Assure Pro `Dialog` primitive (Radix UI). Renders a clean\n * 2-column grid of shortcuts using `<kbd>` styled per `_shared.css` .kbd.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst SHORTCUT_SECTIONS = [\n {\n title: \"Create\",\n icon: <CornerDownLeftIcon className=\"size-3\" />,\n shortcuts: [\n { keys: [\"C\"], description: \"New Client\" },\n { keys: [\"T\"], description: \"Create Task\" },\n { keys: [\"E\"], description: \"New Engagement\" },\n { keys: [\"M\"], description: \"Compose Message\" },\n ],\n },\n {\n title: \"Go to\",\n icon: null,\n shortcuts: [\n { keys: [\"G\", \"O\"], description: \"Overview\" },\n { keys: [\"G\", \"C\"], description: \"Clients\" },\n { keys: [\"G\", \"W\"], description: \"Workflow\" },\n { keys: [\"G\", \"D\"], description: \"Documents\" },\n { keys: [\"G\", \"B\"], description: \"Billing\" },\n { keys: [\"G\", \"M\"], description: \"Communications\" },\n { keys: [\"G\", \"A\"], description: \"Calendar\" },\n { keys: [\"G\", \"R\"], description: \"Reports\" },\n { keys: [\"G\", \"S\"], description: \"Settings\" },\n ],\n },\n {\n title: \"General\",\n icon: <CommandIcon className=\"size-3\" />,\n shortcuts: [\n { keys: [\"⌘\", \"K\"], description: \"Command palette\" },\n { keys: [\"/\"], description: \"Focus search\" },\n { keys: [\"?\"], description: \"Keyboard shortcuts\" },\n { keys: [\"Esc\"], description: \"Close / go back\" },\n ],\n },\n] as const;\n\n/* ── Kbd token — matches `_shared.css` .kbd lines 292-306 ───────────── */\nconst kbdClass = cn(\n \"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]\",\n \"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon\",\n \"[border-bottom-width:1.5px]\",\n);\n\nexport function KeyboardShortcutsDialog() {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n const target = e.target as HTMLElement | null;\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n target?.isContentEditable\n ) {\n return;\n }\n\n if (e.key === \"?\" && !e.metaKey && !e.ctrlKey && !e.altKey) {\n e.preventDefault();\n setOpen((prev) => !prev);\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, []);\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent size=\"md\" className=\"p-0\">\n <DialogHeader className=\"border-rule mb-0 border-b px-5 py-4 pr-12\">\n <DialogTitle className=\"text-sm font-semibold\">Keyboard Shortcuts</DialogTitle>\n </DialogHeader>\n\n <div className=\"scrollbar-thin max-h-[60vh] overflow-y-auto px-5 py-4\">\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-5\">\n {SHORTCUT_SECTIONS.map((section) => (\n <div key={section.title} className={cn(section.title === \"Go to\" && \"row-span-2\")}>\n <h3\n className={cn(\n \"mb-2.5 inline-flex items-center gap-1.5\",\n \"text-fg-3 font-mono text-[11px] tracking-[0.14em] uppercase\",\n )}\n >\n {section.icon}\n {section.title}\n </h3>\n <div className=\"space-y-1.5\">\n {section.shortcuts.map((shortcut) => (\n <div\n key={shortcut.description}\n className=\"flex items-center justify-between gap-3 py-1\"\n >\n <span className=\"text-fg text-sm\">{shortcut.description}</span>\n <div className=\"flex shrink-0 items-center gap-1\">\n {shortcut.keys.map((key, i) => (\n <React.Fragment key={i}>\n {i > 0 && <span className=\"text-fg-4 mx-0.5 text-[11px]\">then</span>}\n <kbd className={kbdClass}>{key}</kbd>\n </React.Fragment>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"border-rule bg-bg-2/40 border-t px-5 py-3\">\n <p className=\"text-fg-3 text-[11px]\">\n Press <kbd className={kbdClass}>?</kbd> anytime to toggle this dialog\n </p>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst labelVariants = cva(\n \"text-[13px] font-medium leading-none text-fg select-none peer-disabled:cursor-not-allowed peer-disabled:text-fg-disabled has-[+input:disabled]:text-fg-disabled\",\n);\n\ninterface LabelProps\n extends\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<React.ElementRef<typeof LabelPrimitive.Root>, LabelProps>(\n function Label({ children, required, className, ...props }, ref) {\n return (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props}>\n {children}\n {required && (\n <span className=\"text-danger-fg ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </LabelPrimitive.Root>\n );\n },\n);\n\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { labelVariants };\n","import Link from \"next/link\";\nimport { forwardRef } from \"react\";\n\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../lib/cn\";\n\ntype ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"destructive\"\n | \"success\"\n | \"ghost\"\n | \"outline\"\n | \"link\"\n | \"accent\";\n\ntype ButtonSize = \"sm\" | \"md\" | \"lg\";\n\ninterface LinkButtonProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\n/**\n * LinkButton — visually identical to `<Button>` but renders a `next/link`.\n * Shares `buttonVariants` so styling stays in lock-step.\n */\nexport const LinkButton = forwardRef<HTMLAnchorElement, LinkButtonProps>(function LinkButton(\n { href, variant = \"primary\", size = \"md\", iconLeft, iconRight, children, className, ...props },\n ref,\n) {\n return (\n <Link\n ref={ref}\n href={href}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n >\n {iconLeft && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n {children}\n {iconRight && (\n <span className=\"inline-flex shrink-0\" aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </Link>\n );\n});\n\nLinkButton.displayName = \"LinkButton\";\n","import Image from \"next/image\";\nimport Link from \"next/link\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Logo — Assure Pro wordmark. Per spec §4 and §6.2, the firm-app brand is\n * \"Assure Pro\": \"Assure\" in fg + \"Pro\" in pro-fg purple, set in Geist\n * (font-display). Mirrors the `.wordmark` rule in `_shared.css` (lines 226-249).\n *\n * Public API kept stable: `size`, `href`, `showText`, `inverted`, plus the\n * style-override hooks (`className`, `iconClassName`, `textClassName`).\n */\n\nconst sizeStyles = {\n sm: { icon: 20, text: \"text-sm\", gap: \"gap-2\" },\n md: { icon: 24, text: \"text-[17px]\", gap: \"gap-2.5\" },\n lg: { icon: 32, text: \"text-xl\", gap: \"gap-3\" },\n} as const;\n\ninterface LogoProps {\n size?: keyof typeof sizeStyles;\n href?: string;\n showText?: boolean;\n className?: string;\n iconClassName?: string;\n textClassName?: string;\n /** When true, render on dark/brand surfaces (white \"Assure\" + lighter \"Pro\"). */\n inverted?: boolean;\n}\n\nexport function Logo({\n size = \"md\",\n href = \"/\",\n showText = true,\n className,\n iconClassName,\n textClassName,\n inverted = false,\n}: LogoProps) {\n const s = sizeStyles[size];\n\n return (\n <Link\n href={href}\n className={cn(\"inline-flex items-center\", s.gap, className)}\n aria-label=\"Assure Pro\"\n >\n <Image\n src=\"/brand/mark.svg\"\n alt=\"\"\n width={s.icon}\n height={s.icon}\n priority\n className={cn(\"flex-shrink-0\", iconClassName)}\n />\n {showText && (\n <span\n className={cn(\n \"font-display font-semibold tracking-[-0.025em]\",\n s.text,\n inverted ? \"text-white\" : \"text-fg\",\n textClassName,\n )}\n >\n <span>Assure</span>{\" \"}\n <span className={cn(\"font-medium\", inverted ? \"text-pro-fg\" : \"text-pro-fg\")}>Pro</span>\n </span>\n )}\n </Link>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * MultiFilterPill — toolbar filter chip with multi-select dropdown.\n *\n * Matches the `.toolbar .filter-chip` mockup pattern used on the Clients\n * list. Inactive: neutral surface. Active (1+ selected): pro-purple tint\n * with a clear (X) affordance and a count or single-label.\n *\n * Public API preserved:\n * <MultiFilterPill\n * label icon\n * selected (Set<string>)\n * options ({ key, label, dot? }[])\n * onToggle onClear\n * />\n *\n * Implementation: Radix Popover (already refactored) with custom\n * checkbox-style menu items for multi-select. Closing the popover does\n * not auto-clear; that behaviour stays the caller's choice.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface MultiFilterPillProps {\n label: string;\n icon?: React.ReactNode;\n selected: Set<string>;\n options: { key: string; label: string; dot?: string }[];\n onToggle: (key: string) => void;\n onClear: () => void;\n}\n\nexport function MultiFilterPill({\n label,\n icon,\n selected,\n options,\n onToggle,\n onClear,\n}: MultiFilterPillProps) {\n const active = selected.size > 0;\n const displayLabel = active\n ? selected.size === 1\n ? (options.find((o) => o.key === [...selected][0])?.label ?? label)\n : `${label} · ${selected.size}`\n : label;\n\n return (\n <Popover>\n <PopoverTrigger\n className={cn(\n \"rounded-pill font-body inline-flex items-center gap-1.5 border px-2.5 py-1 text-xs font-medium\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n active\n ? \"border-pro-line bg-pro-bg text-pro-fg hover:bg-pro-bg-hover\"\n : \"border-rule bg-surface text-fg-2 hover:border-rule-strong hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {icon && (\n <span className=\"[&>svg]:size-3.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"truncate\">{displayLabel}</span>\n {active ? (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onClear();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n e.preventDefault();\n onClear();\n }\n }}\n className={cn(\n \"ml-0.5 inline-flex size-4 items-center justify-center rounded-full\",\n \"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-pro-bg-active\",\n \"focus-visible:bg-pro-bg-active focus-visible:outline-none\",\n )}\n aria-label={`Clear ${label} filter`}\n >\n <XIcon className=\"size-3\" aria-hidden=\"true\" />\n </span>\n ) : (\n <ChevronDownIcon className=\"text-fg-4 size-3 shrink-0\" aria-hidden=\"true\" />\n )}\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n sideOffset={6}\n className=\"w-auto max-w-[280px] min-w-[180px] p-1\"\n >\n <ul\n className=\"scrollbar-thin max-h-[280px] overflow-y-auto\"\n role=\"listbox\"\n aria-multiselectable\n >\n {options.map((opt) => {\n const isSelected = selected.has(opt.key);\n return (\n <li key={opt.key} role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => onToggle(opt.key)}\n className={cn(\n \"rounded-pill flex w-full cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:bg-bg-2 focus-visible:text-fg\",\n )}\n >\n <span\n className={cn(\n \"flex size-4 shrink-0 items-center justify-center rounded-[3px] border transition-colors duration-[var(--duration-fast)] motion-reduce:transition-none\",\n isSelected\n ? \"border-pro-fg bg-pro-fg text-fg-on-pro\"\n : \"border-rule-strong bg-surface\",\n )}\n aria-hidden=\"true\"\n >\n {isSelected && <CheckIcon className=\"size-3\" />}\n </span>\n {opt.dot && (\n <span\n className={cn(\"size-2 shrink-0 rounded-full\", opt.dot)}\n aria-hidden=\"true\"\n />\n )}\n <span className=\"truncate\">{opt.label}</span>\n </button>\n </li>\n );\n })}\n </ul>\n {active && (\n <>\n <div className=\"bg-rule -mx-1 my-1 h-px\" aria-hidden=\"true\" />\n <button\n type=\"button\"\n onClick={onClear}\n className={cn(\n \"rounded-pill flex w-full items-center justify-center px-2 py-1.5 text-[12px] outline-none\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:bg-bg-2 focus-visible:text-fg\",\n )}\n >\n Clear selection\n </button>\n </>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nMultiFilterPill.displayName = \"MultiFilterPill\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * MultiSelectField — comma-separated multi-toggle pill group.\n *\n * A row of pill buttons; clicking one toggles its membership in the\n * selection set. Selection is encoded as a single comma-separated string\n * (matches the legacy contract used by FormData submissions).\n *\n * Public API preserved:\n * <MultiSelectField label options value onChange className />\n *\n * Style: Assure Pro pills — `rounded-pill`, pro-purple when selected,\n * neutral surface with `border-rule-strong` when unselected.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface MultiSelectFieldProps {\n label: string;\n options: string[];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n /** Visual size; default \"md\" matches the form-row default. */\n size?: \"sm\" | \"md\";\n /** Optional id, used to associate the visible label with the group. */\n id?: string;\n}\n\nexport function MultiSelectField({\n label,\n options,\n value,\n onChange,\n className,\n size = \"md\",\n id,\n}: MultiSelectFieldProps) {\n const selected = React.useMemo(\n () => new Set(value ? value.split(\",\").filter(Boolean) : []),\n [value],\n );\n\n const toggle = (option: string) => {\n const next = new Set(selected);\n if (next.has(option)) {\n next.delete(option);\n } else {\n next.add(option);\n }\n onChange(Array.from(next).join(\",\"));\n };\n\n const generatedId = React.useId();\n const groupId = id ?? generatedId;\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div\n id={`${groupId}-label`}\n className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\"\n >\n {label}\n </div>\n <div role=\"group\" aria-labelledby={`${groupId}-label`} className=\"flex flex-wrap gap-1.5\">\n {options.map((option) => {\n const isSelected = selected.has(option);\n return (\n <button\n key={option}\n type=\"button\"\n onClick={() => toggle(option)}\n aria-pressed={isSelected}\n className={cn(\n \"rounded-pill font-body inline-flex items-center border font-medium\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n size === \"sm\" ? \"px-2.5 py-0.5 text-xs\" : \"px-3 py-1 text-xs\",\n isSelected\n ? \"border-pro-line bg-pro-bg text-pro-fg hover:bg-pro-bg-hover\"\n : \"border-rule-strong bg-surface text-fg-2 hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {option}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nMultiSelectField.displayName = \"MultiSelectField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput as OTPInputRoot, REGEXP_ONLY_DIGITS } from \"input-otp\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * OTPInput — `input-otp` library, Assure Pro skin.\n *\n * Public API preserved from the prior hand-rolled implementation:\n * <OTPInput name length error autoFocus defaultValue />\n *\n * Behavior preserved:\n * - Numeric-only entry (REGEXP_ONLY_DIGITS).\n * - The underlying form input carries `name` so native form posts continue\n * to receive a single concatenated value (matching legacy hidden-input).\n * - `defaultValue` seeds the field for uncontrolled usage.\n * - `error` toggles invalid styling + renders a centered error message.\n *\n * NEW (additive): consumers may pass `value` / `onChange` for controlled\n * usage; `onComplete` for auto-submit on full entry.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface OTPInputProps {\n name: string;\n length?: number;\n error?: string;\n autoFocus?: boolean;\n className?: string;\n defaultValue?: string;\n /** Optional controlled value (additive). */\n value?: string;\n /** Optional controlled onChange (additive). */\n onChange?: (value: string) => void;\n /** Optional callback fired when all slots are filled (additive). */\n onComplete?: (value: string) => void;\n /** Optional id for the underlying input (additive). */\n id?: string;\n /** Optional disabled flag (additive). */\n disabled?: boolean;\n}\n\nexport function OTPInput({\n name,\n length = 6,\n error,\n autoFocus = false,\n className,\n defaultValue,\n value,\n onChange,\n onComplete,\n id,\n disabled,\n}: OTPInputProps) {\n const errorId = id ? `${id}-error` : undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\n <OTPInputRoot\n name={name}\n id={id}\n maxLength={length}\n pattern={REGEXP_ONLY_DIGITS}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n // OTP inputs are typically the focus target of the screen they appear on\n // (e.g. step-up auth, post-redirect verification). Consumer opts in via prop.\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n defaultValue={defaultValue}\n value={value}\n onChange={onChange}\n onComplete={onComplete}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n containerClassName={cn(\n \"flex items-center justify-center gap-2.5\",\n // §5.17: disabled tints slot bg + border + text via token cascade,\n // not opacity (which destroys contrast on character readouts).\n \"has-[:disabled]:cursor-not-allowed\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:bg-bg-disabled\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:border-rule\",\n \"has-[:disabled]:[&_[aria-hidden=true]]:text-fg-disabled\",\n )}\n render={({ slots }) => (\n <div className=\"flex items-center gap-2.5\" role=\"group\" aria-label=\"One-time password\">\n {slots.map((slot, idx) => (\n <OTPSlot key={idx} {...slot} hasError={!!error} />\n ))}\n </div>\n )}\n />\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg text-center text-xs\">\n {error}\n </p>\n )}\n </div>\n );\n}\n\nOTPInput.displayName = \"OTPInput\";\n\ninterface OTPSlotProps {\n isActive: boolean;\n char: string | null;\n hasFakeCaret: boolean;\n hasError: boolean;\n}\n\nfunction OTPSlot({ isActive, char, hasFakeCaret, hasError }: OTPSlotProps) {\n return (\n <div\n className={cn(\n \"relative flex h-12 w-10 items-center justify-center\",\n \"rounded-input bg-surface text-fg border font-mono text-lg tabular-nums\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"sm:h-14 sm:w-12 sm:text-xl\",\n \"border-rule-strong\",\n isActive && \"border-accent z-10 [box-shadow:var(--shadow-focus-ring)]\",\n hasError && \"border-danger-line\",\n hasError && isActive && \"border-danger-fg [box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n )}\n aria-hidden=\"true\"\n >\n {char}\n {hasFakeCaret && !char && (\n <div\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center\"\n aria-hidden=\"true\"\n >\n <div className=\"bg-fg h-5 w-px opacity-80 motion-safe:animate-pulse\" />\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"./icons\";\n/**\n * Pagination — custom (no Radix equivalent).\n * Restyled to Assure Pro tokens: tabular-nums numerals, mono context label,\n * cyan accent for the current page (matches the `.tab.is-active` treatment\n * in `_shared.css`), `border-rule` divider boundaries.\n *\n * Public API preserved for 988 firm + 174 portal call sites:\n * currentPage, totalPages, onPageChange, siblingCount, totalItems, pageSize.\n */\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n /** Total item count — enables \"Showing X–Y of Z\" label */\n totalItems?: number;\n /** Items per page — used with totalItems for range display */\n pageSize?: number;\n}\n\nfunction getPageNumbers(current: number, total: number, siblings: number): (number | \"ellipsis\")[] {\n const range = (start: number, end: number) =>\n Array.from({ length: end - start + 1 }, (_, i) => start + i);\n\n const totalSlots = siblings * 2 + 5;\n if (total <= totalSlots) return range(1, total);\n\n const leftSibling = Math.max(current - siblings, 2);\n const rightSibling = Math.min(current + siblings, total - 1);\n\n const showLeftEllipsis = leftSibling > 2;\n const showRightEllipsis = rightSibling < total - 1;\n\n if (!showLeftEllipsis && showRightEllipsis) {\n const leftRange = range(1, 3 + 2 * siblings);\n return [...leftRange, \"ellipsis\", total];\n }\n\n if (showLeftEllipsis && !showRightEllipsis) {\n const rightRange = range(total - (2 + 2 * siblings), total);\n return [1, \"ellipsis\", ...rightRange];\n }\n\n return [1, \"ellipsis\", ...range(leftSibling, rightSibling), \"ellipsis\", total];\n}\n\nconst NAV_BUTTON = cn(\n \"inline-flex size-7 items-center justify-center rounded-btn text-fg-3\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n);\n\nconst PAGE_BUTTON_BASE = cn(\n \"inline-flex h-7 min-w-7 items-center justify-center rounded-btn px-2\",\n \"text-xs font-medium tabular-nums\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n);\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n totalItems,\n pageSize,\n className,\n ...props\n },\n ref,\n) {\n if (totalPages <= 1) return null;\n\n const pages = getPageNumbers(currentPage, totalPages, siblingCount);\n\n // Range label: \"1–10 of 47\" or fallback to \"Page 1 of 5\"\n let contextLabel: string;\n if (totalItems != null && pageSize != null) {\n const start = (currentPage - 1) * pageSize + 1;\n const end = Math.min(currentPage * pageSize, totalItems);\n contextLabel = `${start}–${end} of ${totalItems}`;\n } else {\n contextLabel = `Page ${currentPage} of ${totalPages}`;\n }\n\n return (\n <nav\n ref={ref}\n aria-label=\"Pagination\"\n className={cn(\"flex items-center justify-between gap-4\", className)}\n {...props}\n >\n {/* Context label — mono, tabular-nums, fg-4 */}\n <span className=\"text-fg-4 shrink-0 font-mono text-[11px] tracking-[0.02em] tabular-nums\">\n {contextLabel}\n </span>\n\n {/* Page controls */}\n <div className=\"flex items-center gap-0.5\">\n {/* Previous */}\n <button\n type=\"button\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n className={NAV_BUTTON}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n\n {/* Page numbers */}\n {pages.map((page, i) =>\n page === \"ellipsis\" ? (\n <span\n key={`ellipsis-${i}`}\n className=\"text-fg-5 flex h-7 w-5 items-center justify-center select-none\"\n aria-hidden=\"true\"\n >\n <MoreHorizontalIcon className=\"size-3.5\" />\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n onClick={() => onPageChange(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n className={cn(\n PAGE_BUTTON_BASE,\n page === currentPage\n ? \"bg-accent-tint text-accent-2 border border-[color:var(--color-accent-tint)]\"\n : \"text-fg-3 hover:bg-bg-2 hover:text-fg\",\n )}\n >\n {page}\n </button>\n ),\n )}\n\n {/* Next */}\n <button\n type=\"button\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n className={NAV_BUTTON}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </nav>\n );\n});\n\nPagination.displayName = \"Pagination\";\n","export function stripToDigits(input: string): string {\n return input.replace(/\\D/g, \"\").slice(0, 10);\n}\n\nexport function formatPhoneDisplay(raw: string): string {\n const digits = stripToDigits(raw);\n if (digits.length === 0) return \"\";\n if (digits.length <= 3) return `(${digits}`;\n if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n","\"use client\";\n\nimport { forwardRef, useCallback, useRef, useState } from \"react\";\n\nimport { Input } from \"./input\";\nimport { stripToDigits, formatPhoneDisplay } from \"../lib/phone\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * PhoneInput — wraps the new <Input> primitive with US phone formatting.\n *\n * Public API preserved EXACTLY:\n * - Extends Input, minus `type` (forced to \"tel\") and the `value` /\n * `onChange` / `defaultValue` overrides documented below.\n * - `value` / `defaultValue` are RAW digits (e.g. \"5551234567\").\n * - The displayed value in the field is formatted \"(555) 123-4567\".\n * - In controlled mode `onChange` fires with a synthetic event whose\n * `target.value` is the raw digit string. Call sites depend on this.\n * - In uncontrolled mode a hidden `<input name>` mirrors the raw digits\n * so native form posts still work.\n *\n * NEW (additive): forwardRef<HTMLInputElement>, label/error/prefix/suffix,\n * size variants, etc. flow through Input.\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype InputProps = React.ComponentProps<typeof Input>;\n\ninterface PhoneInputProps extends Omit<InputProps, \"type\" | \"onChange\" | \"value\" | \"defaultValue\"> {\n value?: string;\n defaultValue?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(function PhoneInput(\n { value, defaultValue, onChange, name, ...props },\n ref,\n) {\n const isControlled = value !== undefined;\n const [internalDigits, setInternalDigits] = useState(() => stripToDigits(defaultValue ?? \"\"));\n\n const hiddenRef = useRef<HTMLInputElement>(null);\n\n const digits = isControlled ? stripToDigits(value) : internalDigits;\n const displayValue = formatPhoneDisplay(digits);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = stripToDigits(e.target.value);\n\n if (isControlled && onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: raw },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n } else {\n setInternalDigits(raw);\n if (hiddenRef.current) {\n hiddenRef.current.value = raw;\n }\n }\n },\n [isControlled, onChange],\n );\n\n return (\n <>\n <Input\n {...props}\n ref={ref}\n type=\"tel\"\n name={isControlled ? name : undefined}\n value={displayValue}\n onChange={handleChange}\n inputMode=\"tel\"\n autoComplete={props.autoComplete ?? \"tel-national\"}\n />\n {!isControlled && name && (\n <input type=\"hidden\" ref={hiddenRef} name={name} defaultValue={digits} />\n )}\n </>\n );\n});\n\nPhoneInput.displayName = \"PhoneInput\";\n","\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ProgressBar — Radix-driven determinate (or indeterminate) progress meter.\n * Track sits on `bg-3`; fills follow the status palette. Variants are an\n * explicit cva enum; if `variant` is omitted, it auto-resolves from value:\n * <50% → default (Pro purple)\n * ≥50% → warning\n * ≥80% → success\n *\n * Public API preserved: `value`, `max`, `label`, `showPercentage`, `variant`.\n * Pass `value={null}` (or omit when in-doubt) to render Radix's indeterminate\n * state — but for back-compat we still accept `value: number`.\n */\nexport const progressBarVariants = cva(\n \"h-full rounded-full transition-[width,background-color] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]\",\n {\n variants: {\n variant: {\n default: \"bg-pro-fg\",\n success: \"bg-success-fg\",\n warning: \"bg-warning-fg\",\n destructive: \"bg-danger-fg\",\n info: \"bg-accent\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressBarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>, \"value\">,\n VariantProps<typeof progressBarVariants> {\n /** 0..max. Set to `null` for an indeterminate track. */\n value: number | null;\n max?: number;\n label?: string;\n showPercentage?: boolean;\n}\n\nexport const ProgressBar = forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressBarProps\n>(function ProgressBar(\n { value, max = 100, label, showPercentage, variant, className, ...props },\n ref,\n) {\n const isIndeterminate = value == null;\n const percentage = isIndeterminate ? 0 : Math.min(100, Math.max(0, (value / max) * 100));\n\n const resolvedVariant =\n variant ??\n (!isIndeterminate && percentage >= 80\n ? \"success\"\n : !isIndeterminate && percentage >= 50\n ? \"warning\"\n : \"default\");\n\n return (\n <div className={cn(\"w-full\", className)}>\n {(label || showPercentage) && (\n <div className=\"mb-1.5 flex items-center justify-between text-sm\">\n {label && <span className=\"text-fg-2 font-medium\">{label}</span>}\n {showPercentage && !isIndeterminate && (\n <span className=\"text-fg-3 font-mono text-xs tabular-nums\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n value={isIndeterminate ? null : value}\n max={max}\n aria-label={label ?? \"Progress\"}\n className=\"bg-bg-3 relative h-2 w-full overflow-hidden rounded-full\"\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n progressBarVariants({ variant: resolvedVariant }),\n isIndeterminate &&\n \"absolute inset-y-0 left-0 w-1/3 animate-[progress-indeterminate_1.4s_var(--ease-out-quart)_infinite]\",\n )}\n style={isIndeterminate ? undefined : { width: `${percentage}%` }}\n />\n </ProgressPrimitive.Root>\n {/* Indeterminate keyframes (scoped, no token leakage). */}\n {isIndeterminate && (\n <style>{`\n @keyframes progress-indeterminate {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(400%); }\n }\n `}</style>\n )}\n </div>\n );\n});\n\nProgressBar.displayName = \"ProgressBar\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ProgressRing — custom SVG ring meter (no Radix equivalent).\n * Track is `bg-3`, the indicator picks up the active variant. Variants and\n * value-driven auto-resolve mirror ProgressBar so consumers can mix freely.\n *\n * Public API preserved: `value`, `max`, `size`, `strokeWidth`, `label`, `sublabel`.\n */\n\nexport const progressRingVariants = cva(\n \"transition-[stroke-dashoffset,stroke] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]\",\n {\n variants: {\n variant: {\n default: \"text-pro-fg\",\n success: \"text-success-fg\",\n warning: \"text-warning-fg\",\n destructive: \"text-danger-fg\",\n info: \"text-accent\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressRingProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof progressRingVariants> {\n value: number;\n max?: number;\n size?: number;\n strokeWidth?: number;\n label?: string;\n sublabel?: string;\n}\n\nexport const ProgressRing = forwardRef<HTMLDivElement, ProgressRingProps>(function ProgressRing(\n { value, max = 100, size = 80, strokeWidth = 6, label, sublabel, variant, className, ...props },\n ref,\n) {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n const resolvedVariant =\n variant ?? (percentage >= 80 ? \"success\" : percentage >= 50 ? \"warning\" : \"default\");\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex flex-col items-center gap-1\", className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label ?? \"Progress\"}\n {...props}\n >\n <div className=\"relative inline-flex\" style={{ width: size, height: size }}>\n <svg width={size} height={size} className=\"-rotate-90\" aria-hidden=\"true\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n className=\"text-bg-3\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={progressRingVariants({ variant: resolvedVariant })}\n />\n </svg>\n {label && !sublabel && (\n <span className=\"text-fg pointer-events-none absolute inset-0 flex items-center justify-center font-mono text-xs font-medium tabular-nums\">\n {label}\n </span>\n )}\n </div>\n {label && sublabel && (\n <span className=\"text-fg font-mono text-sm font-medium tabular-nums\">{label}</span>\n )}\n {sublabel && <span className=\"text-fg-3 text-xs\">{sublabel}</span>}\n </div>\n );\n});\n\nProgressRing.displayName = \"ProgressRing\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CircleIcon } from \"./icons\";\n/**\n * RadioGroup — Radix-backed radio control styled per Assure Pro tokens.\n * Public API preserved: <RadioGroup value defaultValue onValueChange name>\n * with <RadioGroupItem value label />.\n */\n\ntype RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(function RadioGroup({ className, ...props }, ref) {\n return <RadioGroupPrimitive.Root ref={ref} className={cn(\"grid gap-2\", className)} {...props} />;\n});\n\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\ninterface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n> {\n /** Optional inline label rendered to the right of the radio */\n label?: string;\n}\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(function RadioGroupItem({ className, label, id: providedId, ...props }, ref) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n const root = (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={id}\n className={cn(\n \"peer border-rule-strong bg-surface text-pro-fg aspect-square size-4 shrink-0 rounded-full border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"hover:border-fg-4\",\n \"focus-visible:border-accent focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[state=checked]:border-pro-fg\",\n \"disabled:bg-bg-disabled disabled:border-rule disabled:cursor-not-allowed\",\n \"aria-[invalid=true]:border-danger-line\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <CircleIcon className=\"fill-pro-fg text-pro-fg size-2\" aria-hidden=\"true\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n\n if (!label) return root;\n\n return (\n <div className=\"flex items-center gap-2\">\n {root}\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n </div>\n );\n});\n\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* ScrollArea */\n/* Wraps Radix ScrollArea + a styled scrollbar to match _shared.css scrollbar */\n/* -------------------------------------------------------------------------- */\n\ninterface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n children: React.ReactNode;\n}\n\nexport const ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n ScrollAreaProps\n>(function ScrollArea({ className, children, ...props }, ref) {\n return (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n});\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\ntype ScrollBarProps = React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n>;\n\nexport const ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n ScrollBarProps\n>(function ScrollBar({ className, orientation = \"vertical\", ...props }, ref) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] select-none motion-reduce:transition-none\",\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className={cn(\n \"bg-rule-strong relative flex-1 rounded-full\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-fg-4\",\n )}\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n});\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\nimport { useDebounce } from \"../hooks/use-debounce\";\n\nimport { SearchIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SearchInput — raw <input type=\"search\"> with a leading catalog `SearchIcon`\n * and a trailing clear (X) button. Tokenized to Assure Pro.\n *\n * Public API preserved:\n * <SearchInput value onValueChange onSearch debounceMs />\n *\n * NEW (additive): `inputSize` (\"sm\" | \"md\" | \"lg\") variant. Default \"md\"\n * matches the toolbar `.toolbar-search` size used in the data-table mockup.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst searchInputVariants = cva(\n [\n \"flex w-full rounded-input border border-rule-strong bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n // Hide the native search-cancel button — we render our own clear button.\n \"[&::-webkit-search-cancel-button]:appearance-none\",\n \"[&::-webkit-search-decoration]:appearance-none\",\n ],\n {\n variants: {\n inputSize: {\n sm: \"h-8 pl-8 pr-8 text-xs\",\n md: \"h-9 pl-9 pr-9 text-[13px]\",\n lg: \"h-11 pl-10 pr-10 text-sm\",\n },\n },\n defaultVariants: {\n inputSize: \"md\",\n },\n },\n);\n\nexport type SearchInputVariants = VariantProps<typeof searchInputVariants>;\n\ninterface SearchInputProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\" | \"size\">,\n SearchInputVariants {\n value: string;\n onValueChange: (value: string) => void;\n onSearch?: (value: string) => void;\n debounceMs?: number;\n}\n\nexport const SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n function SearchInput(\n {\n value,\n onValueChange,\n onSearch,\n debounceMs = 300,\n inputSize,\n className,\n placeholder = \"Search...\",\n disabled,\n ...props\n },\n ref,\n ) {\n const debouncedValue = useDebounce(value, debounceMs);\n const isFirstRender = React.useRef(true);\n\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n onSearch?.(debouncedValue);\n }, [debouncedValue, onSearch]);\n\n const sz = inputSize ?? \"md\";\n const iconLeftClass = sz === \"sm\" ? \"left-2.5\" : sz === \"lg\" ? \"left-3\" : \"left-3\";\n const iconRightClass = sz === \"sm\" ? \"right-2\" : sz === \"lg\" ? \"right-3\" : \"right-2.5\";\n const iconSizeClass = sz === \"sm\" ? \"size-3.5\" : \"size-4\";\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <SearchIcon\n className={cn(\n \"text-fg-4 pointer-events-none absolute top-1/2 -translate-y-1/2\",\n iconLeftClass,\n iconSizeClass,\n )}\n aria-hidden=\"true\"\n />\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(searchInputVariants({ inputSize }))}\n {...props}\n />\n {value && !disabled && (\n <button\n type=\"button\"\n onClick={() => onValueChange(\"\")}\n className={cn(\n \"rounded-pill text-fg-4 absolute top-1/2 -translate-y-1/2 p-0.5\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n iconRightClass,\n )}\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <XIcon className={iconSizeClass} aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n },\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport { searchInputVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"./popover\";\n\nimport { CheckIcon, PlusIcon, SearchIcon, XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SearchSelect — multi-select combobox with optional create-on-the-fly.\n *\n * Implementation: cmdk (`Command`, `Command.Input`, `Command.List`,\n * `Command.Empty`, `Command.Item`) wrapped inside a Radix Popover so the\n * options surface escapes its container and matches the Assure Pro\n * `shadow-pop` elevation.\n *\n * Public API preserved verbatim:\n * <SearchSelect\n * options selected\n * onSelect onRemove onCreate\n * placeholder disabled className\n * />\n *\n * Behaviour preserved:\n * - Selected items render as chips above the input.\n * - Already-selected options are filtered out of the dropdown list.\n * - When `onCreate` is provided AND the trimmed query has no exact match,\n * a \"Create '<q>'\" affordance appears below the filtered list.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SearchSelectOption {\n id: string;\n label: string;\n}\n\ninterface SearchSelectProps {\n options: SearchSelectOption[];\n selected: SearchSelectOption[];\n onSelect: (option: SearchSelectOption) => void;\n onRemove: (option: SearchSelectOption) => void;\n onCreate?: (name: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function SearchSelect({\n options,\n selected,\n onSelect,\n onRemove,\n onCreate,\n placeholder = \"Search...\",\n className,\n disabled = false,\n}: SearchSelectProps) {\n const [search, setSearch] = React.useState(\"\");\n const [open, setOpen] = React.useState(false);\n\n const selectedIds = React.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);\n\n const filtered = React.useMemo(\n () => options.filter((opt) => !selectedIds.has(opt.id)),\n [options, selectedIds],\n );\n\n const trimmedSearch = search.trim();\n const hasExactMatch = React.useMemo(\n () => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),\n [options, trimmedSearch],\n );\n const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;\n\n const handleSelect = React.useCallback(\n (option: SearchSelectOption) => {\n onSelect(option);\n setSearch(\"\");\n },\n [onSelect],\n );\n\n const handleCreate = React.useCallback(() => {\n if (onCreate && trimmedSearch) {\n onCreate(trimmedSearch);\n setSearch(\"\");\n setOpen(false);\n }\n }, [onCreate, trimmedSearch]);\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n {/* Selected chips */}\n {selected.length > 0 && (\n <div className=\"mb-2 flex flex-wrap gap-1.5\">\n {selected.map((item) => (\n <span\n key={item.id}\n className={cn(\n \"rounded-pill border-rule inline-flex items-center gap-1 border px-2 py-0.5 text-[12px]\",\n \"bg-bg-2 font-body text-fg-2\",\n )}\n >\n {item.label}\n <button\n type=\"button\"\n onClick={() => onRemove(item)}\n disabled={disabled}\n className={cn(\n \"text-fg-3 ml-0.5 rounded-full p-0.5\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed disabled:hover:bg-transparent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label={`Remove ${item.label}`}\n >\n <XIcon className=\"size-3\" aria-hidden=\"true\" />\n </button>\n </span>\n ))}\n </div>\n )}\n\n <Popover open={open && !disabled} onOpenChange={setOpen}>\n <CommandPrimitive\n shouldFilter\n className=\"overflow-visible bg-transparent\"\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n setOpen(false);\n }\n }}\n >\n <PopoverAnchor asChild>\n <div\n className={cn(\n \"rounded-input border-rule-strong bg-surface relative flex h-9 w-full items-center border\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-within:border-accent focus-within:[box-shadow:var(--shadow-focus-ring)]\",\n disabled && \"bg-bg-disabled cursor-not-allowed\",\n )}\n >\n <SearchIcon\n className=\"text-fg-4 pointer-events-none absolute left-3 size-4\"\n aria-hidden=\"true\"\n />\n <CommandPrimitive.Input\n value={search}\n onValueChange={(v) => {\n setSearch(v);\n if (!disabled) setOpen(true);\n }}\n onFocus={() => {\n if (!disabled) setOpen(true);\n }}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"font-body text-fg flex-1 bg-transparent py-2 pr-3 pl-9 text-[13px] outline-none\",\n \"placeholder:text-fg-4\",\n \"disabled:text-fg-disabled disabled:cursor-not-allowed\",\n )}\n />\n </div>\n </PopoverAnchor>\n\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n const target = e.target as HTMLElement;\n if (target.closest(\"[cmdk-input]\")) e.preventDefault();\n }}\n className={cn(\"w-(--radix-popover-trigger-width) p-0\", \"min-w-[12rem]\")}\n >\n <CommandPrimitive.List className=\"scrollbar-thin max-h-60 overflow-y-auto p-1\">\n {filtered.length === 0 && !showCreate && (\n <CommandPrimitive.Empty className=\"text-fg-3 px-3 py-2 text-xs\">\n {search ? \"No results found.\" : \"No options available.\"}\n </CommandPrimitive.Empty>\n )}\n\n {filtered.map((option) => (\n <CommandPrimitive.Item\n key={option.id}\n value={option.label}\n onSelect={() => handleSelect(option)}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"data-[selected=true]:bg-bg-2 data-[selected=true]:text-fg\",\n )}\n >\n <CheckIcon className=\"size-4 shrink-0 text-transparent\" aria-hidden=\"true\" />\n <span className=\"truncate\">{option.label}</span>\n </CommandPrimitive.Item>\n ))}\n\n {showCreate && (\n <>\n {filtered.length > 0 && (\n <div className=\"bg-rule -mx-1 my-1 h-px\" aria-hidden=\"true\" />\n )}\n <CommandPrimitive.Item\n value={`__create_${trimmedSearch}`}\n onSelect={handleCreate}\n className={cn(\n \"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none\",\n \"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"data-[selected=true]:bg-pro-bg\",\n )}\n >\n <PlusIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <span className=\"truncate\">Create “{trimmedSearch}”</span>\n </CommandPrimitive.Item>\n </>\n )}\n </CommandPrimitive.List>\n </PopoverContent>\n </CommandPrimitive>\n </Popover>\n </div>\n );\n}\n\nSearchSelect.displayName = \"SearchSelect\";\n","import { cn } from \"../lib/cn\";\n\n/**\n * SectionHeader — title + description block for marketing-style sections.\n * Uses Geist (`font-display`) with the spec's `-0.022em` letterspacing.\n */\n\ninterface SectionHeaderProps {\n title: string;\n description?: string;\n align?: \"left\" | \"center\";\n className?: string;\n}\n\nexport function SectionHeader({\n title,\n description,\n align = \"center\",\n className,\n}: SectionHeaderProps) {\n return (\n <div\n className={cn(\n \"mb-16\",\n align === \"center\" && \"mx-auto max-w-2xl text-center\",\n align === \"left\" && \"max-w-lg\",\n className,\n )}\n >\n <h2\n className={cn(\n \"font-display text-fg mb-4 text-3xl font-medium tracking-[-0.028em] md:text-4xl\",\n )}\n >\n {title}\n </h2>\n {description && <p className=\"text-fg-3 text-lg leading-relaxed\">{description}</p>}\n </div>\n );\n}\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Section — max-width centered wrapper for marketing/section content.\n * The `--content-pad` token (32px) is the canonical app-content gutter,\n * but Section keeps its 24px (`px-6`) gutter for narrower marketing pages.\n */\n\nconst maxWidthStyles = {\n sm: \"max-w-3xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-5xl\",\n xl: \"max-w-6xl\",\n} as const;\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n maxWidth?: keyof typeof maxWidthStyles;\n as?: \"section\" | \"div\";\n}\n\nexport const Section = forwardRef<HTMLElement, SectionProps>(function Section(\n { maxWidth = \"xl\", as: Tag = \"section\", children, className, ...props },\n ref,\n) {\n // Cast ref to any: TS can't narrow forwardRef across a polymorphic Tag.\n return (\n <Tag\n ref={ref as React.Ref<HTMLElement> as never}\n className={cn(\"px-6 py-24\", className)}\n {...props}\n >\n <div className={cn(\"mx-auto\", maxWidthStyles[maxWidth])}>{children}</div>\n </Tag>\n );\n});\n\nSection.displayName = \"Section\";\n\ninterface SectionHeadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n eyebrow?: React.ReactNode;\n title?: React.ReactNode;\n meta?: React.ReactNode;\n}\n\nexport const SectionHead = forwardRef<HTMLDivElement, SectionHeadProps>(function SectionHead(\n { eyebrow, title, meta, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-rule-soft mb-3 flex items-end justify-between gap-3 border-b pb-2\",\n className,\n )}\n {...props}\n >\n <div className=\"min-w-0 space-y-1\">\n {eyebrow && (\n <div className=\"text-fg-4 font-mono [font-feature-settings:'tnum'_1,'lnum'_1,'ss01'_1] text-[10.5px] font-medium tracking-[0.14em] uppercase\">\n {eyebrow}\n </div>\n )}\n {title && (\n <h3 className=\"font-display text-fg text-sm leading-tight font-medium\">{title}</h3>\n )}\n {children}\n </div>\n {meta && <div className=\"text-fg-3 shrink-0 text-xs\">{meta}</div>}\n </div>\n );\n});\n\nSectionHead.displayName = \"SectionHead\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../lib/cn\";\n\ntype SeparatorProps = React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>;\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(function Separator({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-rule shrink-0\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className,\n )}\n {...props}\n />\n );\n});\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Sheet — slide-in panel on top of @radix-ui/react-dialog (shadcn pattern).\n *\n * Public API preserved:\n * Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader,\n * SheetTitle, SheetDescription, SheetFooter\n *\n * `side` lives on SheetContent (in shadcn it's a content-level prop). For\n * backwards compatibility with the prior implementation, the `Sheet` root\n * also accepts `side` and forwards it to SheetContent via context.\n *\n * NEW (additive): SheetPortal, SheetOverlay are also exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ninterface SheetSideContextValue {\n side?: Side;\n}\nconst SheetSideContext = React.createContext<SheetSideContextValue>({});\n\ninterface SheetProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Root> {\n /**\n * Default side for SheetContent if it doesn't specify its own.\n * Backwards-compat shim — prefer `<SheetContent side=\"…\" />`.\n */\n side?: Side;\n}\n\nconst Sheet = ({ side, children, ...props }: SheetProps) => (\n <SheetPrimitive.Root {...props}>\n <SheetSideContext value={{ side }}>{children}</SheetSideContext>\n </SheetPrimitive.Root>\n);\nSheet.displayName = \"Sheet\";\n\nconst SheetTrigger = SheetPrimitive.Trigger;\nconst SheetClose = SheetPrimitive.Close;\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n ref={ref}\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n cn(\n \"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-pop\",\n \"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n ),\n {\n variants: {\n side: {\n top: cn(\n \"inset-x-0 top-0 border-b border-rule\",\n \"data-[state=closed]:-translate-y-full data-[state=open]:translate-y-0\",\n ),\n bottom: cn(\n \"inset-x-0 bottom-0 border-t border-rule max-h-[85vh]\",\n \"data-[state=closed]:translate-y-full data-[state=open]:translate-y-0\",\n ),\n left: cn(\n \"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-rule\",\n \"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0\",\n ),\n right: cn(\n \"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-rule\",\n \"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0\",\n ),\n },\n },\n defaultVariants: { side: \"right\" },\n },\n);\n\ninterface SheetContentProps\n extends\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n /** If false, the built-in close button is hidden. Default: true. */\n showCloseButton?: boolean;\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side, className, children, showCloseButton = true, ...props }, ref) => {\n const ctx = React.use(SheetSideContext);\n const resolvedSide: Side = side ?? ctx.side ?? \"right\";\n\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side: resolvedSide }), className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n className={cn(\n \"absolute top-4 right-4 inline-flex size-7 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n});\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col gap-1.5 p-6 pr-12 pb-0\", className)} {...props} />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"border-rule mt-auto flex flex-col-reverse gap-2 border-t p-6 sm:flex-row sm:items-center sm:justify-end\",\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\n \"font-display text-fg text-base leading-tight font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description ref={ref} className={cn(\"text-fg-3 text-sm\", className)} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * SideDrawer — slide-in panel on top of @radix-ui/react-dialog.\n *\n * Public API preserved:\n * <SideDrawer open onClose width? side?>{children}</SideDrawer>\n * SideDrawer.Header({ title, subtitle, onClose, className })\n * SideDrawer.Body({ children, className })\n * SideDrawer.Footer({ children, className })\n *\n * Width presets: \"sm\" (420px) | \"md\" (640px) | \"lg\" (50vw, default)\n * Sides: \"right\" (default) | \"left\"\n *\n * Animation uses tw-animate-css `slide-in-from-{side}` keyed on\n * `data-[state=open|closed]` for parity with the Sheet primitive.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst sideDrawerVariants = cva(\n cn(\n \"fixed inset-y-0 z-[var(--z-modal)] flex h-full flex-col bg-surface text-fg shadow-pop\",\n \"font-body\",\n \"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n ),\n {\n variants: {\n side: {\n right: cn(\n \"right-0 border-l border-rule\",\n \"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0\",\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-right\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right\",\n ),\n left: cn(\n \"left-0 border-r border-rule\",\n \"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0\",\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-left\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left\",\n ),\n },\n width: {\n sm: \"w-[420px] max-md:w-[95vw]\",\n md: \"w-[640px] max-lg:w-[80vw] max-md:w-[95vw]\",\n lg: \"w-[50vw] max-lg:w-[80vw] max-md:w-[95vw]\",\n },\n },\n defaultVariants: { side: \"right\", width: \"lg\" },\n },\n);\n\ninterface SideDrawerProps extends VariantProps<typeof sideDrawerVariants> {\n open: boolean;\n onClose: () => void;\n width?: \"sm\" | \"md\" | \"lg\";\n side?: \"right\" | \"left\";\n children: React.ReactNode;\n}\n\nexport function SideDrawer({\n open,\n onClose,\n width = \"lg\",\n side = \"right\",\n children,\n}: SideDrawerProps) {\n return (\n <DialogPrimitive.Root\n open={open}\n onOpenChange={(v) => {\n if (!v) onClose();\n }}\n >\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]\",\n \"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"motion-reduce:transition-none\",\n )}\n />\n <DialogPrimitive.Content\n className={cn(sideDrawerVariants({ side, width }))}\n // Radix Dialog requires a Title for a11y. Sub-components may\n // render their own visible title, so we provide an SR-only\n // fallback that is always present and harmless.\n aria-describedby={undefined}\n >\n <DialogPrimitive.Title className=\"sr-only\">Side drawer</DialogPrimitive.Title>\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n\n/* ─── Header ────────────────────────────────────────────────── */\n\ninterface SideDrawerHeaderProps {\n title: string;\n subtitle?: string;\n onClose?: () => void;\n className?: string;\n}\n\nfunction SideDrawerHeader({ title, subtitle, onClose, className }: SideDrawerHeaderProps) {\n return (\n <div className={cn(\"border-rule bg-surface shrink-0 border-b px-6 py-4\", className)}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"font-display text-fg truncate text-base leading-tight font-medium tracking-tight\">\n {title}\n </h2>\n {subtitle && <p className=\"text-fg-3 mt-1 text-sm\">{subtitle}</p>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"inline-flex size-7 shrink-0 items-center justify-center\",\n \"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:bg-overlay-hover hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label=\"Close\"\n >\n <XIcon className=\"size-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\n/* ─── Body ──────────────────────────────────────────────────── */\n\ninterface SideDrawerBodyProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SideDrawerBody({ children, className }: SideDrawerBodyProps) {\n return (\n <div className={cn(\"scrollbar-thin flex-1 overflow-y-auto px-6 py-4\", className)}>\n {children}\n </div>\n );\n}\n\n/* ─── Footer ────────────────────────────────────────────────── */\n\ninterface SideDrawerFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SideDrawerFooter({ children, className }: SideDrawerFooterProps) {\n return (\n <div\n className={cn(\n \"border-rule bg-surface shrink-0 border-t px-6 py-4\",\n \"flex items-center justify-end gap-3\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\n/* ─── Attach sub-components ─────────────────────────────────── */\n\nSideDrawer.Header = SideDrawerHeader;\nSideDrawer.Body = SideDrawerBody;\nSideDrawer.Footer = SideDrawerFooter;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Skeleton — animated placeholder. The `.skeleton` global class supplies\n * the shimmer animation (defined in tokens.css). All three primitives are\n * `aria-hidden` because they're decorative loading affordances.\n */\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"skeleton bg-bg-3 rounded-icon animate-pulse\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n});\nSkeleton.displayName = \"Skeleton\";\n\ninterface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n lines?: number;\n}\n\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(function SkeletonText(\n { lines = 3, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)} aria-hidden=\"true\" {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={cn(\n \"skeleton bg-bg-3 rounded-icon h-4 animate-pulse\",\n i === lines - 1 && \"w-3/4\",\n )}\n />\n ))}\n </div>\n );\n});\nSkeletonText.displayName = \"SkeletonText\";\n\ninterface SkeletonCircleProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n function SkeletonCircle({ size = 40, className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"skeleton bg-bg-3 animate-pulse rounded-full\", className)}\n style={{ width: size, height: size }}\n aria-hidden=\"true\"\n {...props}\n />\n );\n },\n);\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../lib/cn\";\n\ninterface SliderProps extends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n /** Optional inline label rendered above the track */\n label?: string;\n /** When true, renders the current value to the right of the label */\n showValue?: boolean;\n}\n\nexport const Slider = React.forwardRef<React.ElementRef<typeof SliderPrimitive.Root>, SliderProps>(\n function Slider(\n {\n className,\n label,\n showValue,\n id: providedId,\n min = 0,\n max = 100,\n value,\n defaultValue,\n ...props\n },\n ref,\n ) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n // Resolve a representative single value for the optional readout\n const displayValue = (() => {\n const v = value ?? defaultValue;\n if (Array.isArray(v)) return v.join(\" – \");\n if (typeof v === \"number\") return v;\n return min;\n })();\n\n return (\n <div className=\"w-full\">\n {(label || showValue) && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n {label ? (\n <label htmlFor={id} className=\"text-fg text-[13px] leading-none font-medium\">\n {label}\n </label>\n ) : (\n <span />\n )}\n {showValue && <span className=\"text-fg-3 font-mono text-[12px]\">{displayValue}</span>}\n </div>\n )}\n <SliderPrimitive.Root\n ref={ref}\n id={id}\n min={min}\n max={max}\n value={value}\n defaultValue={defaultValue}\n className={cn(\n \"relative flex w-full touch-none items-center select-none\",\n \"data-[disabled]:cursor-not-allowed\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-bg-3 data-[disabled]:bg-bg-disabled relative h-1.5 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-pro-fg data-[disabled]:bg-fg-disabled absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n className={cn(\n \"border-pro-fg bg-surface shadow-quiet block size-4 rounded-full border\",\n \"transition-[box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:scale-105\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed\",\n \"data-[disabled]:border-fg-disabled data-[disabled]:bg-bg-disabled\",\n )}\n aria-label={label}\n />\n </SliderPrimitive.Root>\n </div>\n );\n },\n);\n\nSlider.displayName = SliderPrimitive.Root.displayName;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { StarIcon } from \"./icons\";\n/**\n * StarRating — display-only rating atom built on lucide `Star`. Supports\n * fractional ratings (half-star fill via clip path) and a sized cva variant.\n *\n * Public API preserved: `rating`, `max`, `size`, `className`. The original\n * accepted `size` as a number; that still works (overrides the variant). The\n * new optional `sizeVariant` reads via cva (`sm` / `md` / `lg`).\n */\n\nexport const starRatingVariants = cva(\"flex items-center gap-0.5\", {\n variants: {\n sizeVariant: {\n sm: \"[&_svg]:size-3.5\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: { sizeVariant: \"md\" },\n});\n\nexport interface StarRatingProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"role\">,\n VariantProps<typeof starRatingVariants> {\n rating: number;\n max?: number;\n /** Pixel size override; if set, takes precedence over `sizeVariant`. */\n size?: number;\n}\n\nexport const StarRating = forwardRef<HTMLDivElement, StarRatingProps>(function StarRating(\n { rating, max = 5, size, sizeVariant, className, ...props },\n ref,\n) {\n const stars = Array.from({ length: max });\n const sizeStyle = size ? { width: size, height: size } : undefined;\n\n return (\n <div\n ref={ref}\n role=\"img\"\n aria-label={`${rating} out of ${max} stars`}\n className={cn(starRatingVariants({ sizeVariant }), className)}\n {...props}\n >\n {stars.map((_, i) => {\n // Fractional fill calc: 0..1 per star\n const fill = Math.max(0, Math.min(1, rating - i));\n const isFull = fill >= 1;\n const isEmpty = fill === 0;\n const isHalf = !isFull && !isEmpty;\n\n return (\n <span key={i} className=\"relative inline-flex shrink-0\" style={sizeStyle}>\n {/* Track star (empty) */}\n <StarIcon\n className=\"text-fg-5\"\n style={sizeStyle}\n strokeWidth={1.5}\n aria-hidden=\"true\"\n />\n {/* Fill overlay */}\n {!isEmpty && (\n <span\n className=\"text-warning-fg pointer-events-none absolute inset-0 overflow-hidden\"\n style={{\n width: isFull ? \"100%\" : `${fill * 100}%`,\n }}\n aria-hidden=\"true\"\n >\n <StarIcon\n fill=\"currentColor\"\n className=\"text-warning-fg\"\n style={sizeStyle}\n strokeWidth={1.5}\n aria-hidden=\"true\"\n />\n </span>\n )}\n {/* Mark half stars for screen-readers via data attr (no a11y impact). */}\n {isHalf && (\n <span data-half-star className=\"sr-only\">\n half\n </span>\n )}\n </span>\n );\n })}\n </div>\n );\n});\n\nStarRating.displayName = \"StarRating\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Stat — paired numeric display + caption, the StatNum primitive from\n * spec §4. Numerals are set in `font-display` (Geist) at a fluid clamp size\n * with `font-variant-numeric: tabular-nums` for vertical alignment, ported\n * from the `.stat-num` rule in `_shared.css` (lines 152-161).\n */\n\ninterface StatProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n label: string;\n}\n\nexport const Stat = forwardRef<HTMLDivElement, StatProps>(function Stat(\n { value, label, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1\", className)} {...props}>\n <span\n className={cn(\n \"font-display text-fg block leading-none font-medium tracking-[-0.035em]\",\n \"text-[clamp(28px,3.4vw,38px)]\",\n )}\n style={{ fontVariantNumeric: \"tabular-nums\" }}\n >\n {value}\n </span>\n <span className=\"text-fg-3 text-sm\">{label}</span>\n </div>\n );\n});\n\nStat.displayName = \"Stat\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { CheckIcon } from \"./icons\";\n/**\n * Stepper — custom progress indicator. No Radix equivalent.\n * Active step uses Pro purple; completed steps use the success palette;\n * connector lines pick up the same status. Supports horizontal (default)\n * and vertical orientation.\n *\n * Public API preserved: `steps`, `currentStep`, plus the new optional\n * `orientation` prop for vertical layouts.\n */\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: Step[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n { steps, currentStep, orientation = \"horizontal\", className, ...props },\n ref,\n) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n ref={ref}\n className={cn(isVertical ? \"flex flex-col gap-1\" : \"flex items-start gap-2\", className)}\n aria-label=\"Progress\"\n {...props}\n >\n {steps.map((step, index) => {\n const isCompleted = index < currentStep;\n const isActive = index === currentStep;\n const isLast = index === steps.length - 1;\n\n return (\n <div\n key={step.label}\n className={cn(\n isVertical ? \"flex gap-3\" : \"flex items-start gap-2\",\n !isLast && isVertical && \"pb-2\",\n )}\n >\n {/* Marker + connector column (vertical) / inline (horizontal) */}\n <div\n className={cn(isVertical ? \"flex flex-col items-center\" : \"flex items-center gap-2\")}\n >\n <div\n className={cn(\n \"flex size-7 shrink-0 items-center justify-center rounded-full border text-xs font-medium tabular-nums\",\n \"transition-colors duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n isCompleted && \"bg-success-bg text-success-fg border-success-line\",\n isActive && \"bg-pro-fg text-fg-on-pro border-pro-fg shadow-quiet\",\n !isCompleted && !isActive && \"bg-surface text-fg-4 border-rule\",\n )}\n aria-current={isActive ? \"step\" : undefined}\n >\n {isCompleted ? (\n <CheckIcon className=\"size-3.5\" strokeWidth={2.5} aria-hidden=\"true\" />\n ) : (\n index + 1\n )}\n </div>\n\n {/* Vertical connector */}\n {isVertical && !isLast && (\n <div\n className={cn(\n \"mt-1 min-h-4 w-px flex-1\",\n isCompleted ? \"bg-success-line\" : \"bg-rule\",\n )}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Horizontal label inline beside marker */}\n {!isVertical && (\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"text-sm leading-tight font-medium\",\n isActive ? \"text-fg\" : isCompleted ? \"text-fg-2\" : \"text-fg-4\",\n )}\n >\n {step.label}\n </span>\n {step.description && (\n <span className=\"text-fg-4 mt-0.5 text-xs leading-tight\">\n {step.description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Vertical label column */}\n {isVertical && (\n <div className=\"flex flex-col pb-1\">\n <span\n className={cn(\n \"text-sm leading-tight font-medium\",\n isActive ? \"text-fg\" : isCompleted ? \"text-fg-2\" : \"text-fg-4\",\n )}\n >\n {step.label}\n </span>\n {step.description && (\n <span className=\"text-fg-4 mt-0.5 text-xs leading-tight\">{step.description}</span>\n )}\n </div>\n )}\n\n {/* Horizontal connector */}\n {!isVertical && !isLast && (\n <div\n className={cn(\n \"mx-2 mt-3.5 h-px w-8 shrink-0 sm:w-12\",\n isCompleted ? \"bg-success-line\" : \"bg-rule\",\n )}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n })}\n </div>\n );\n});\n\nStepper.displayName = \"Stepper\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { useFormStatus } from \"react-dom\";\n\nimport { Button, type ButtonProps } from \"./button\";\nimport { cn } from \"../lib/cn\";\n\ninterface SubmitButtonProps extends Omit<ButtonProps, \"type\" | \"loading\"> {\n pendingText?: string;\n children: React.ReactNode;\n}\n\n/**\n * SubmitButton — react-dom `useFormStatus`-aware Button.\n * Auto-disables and shows `pendingText` (or spinner) while the form is pending.\n */\nexport const SubmitButton = forwardRef<HTMLButtonElement, SubmitButtonProps>(function SubmitButton(\n { pendingText, children, className, ...props },\n ref,\n) {\n const { pending } = useFormStatus();\n\n return (\n <Button\n ref={ref}\n type=\"submit\"\n loading={pending}\n disabled={pending}\n className={cn(\"w-full\", className)}\n {...props}\n >\n {pending && pendingText ? pendingText : children}\n </Button>\n );\n});\n\nSubmitButton.displayName = \"SubmitButton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst switchVariants = cva(\n [\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent\",\n \"transition-colors duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed\",\n \"data-[state=checked]:bg-pro-fg data-[state=unchecked]:bg-bg-3\",\n // §5.17: disabled is signalled via the disabled token swap on the\n // track itself; the thumb borrows fg-disabled. No opacity.\n \"data-[disabled]:data-[state=checked]:bg-fg-disabled\",\n \"data-[disabled]:data-[state=unchecked]:bg-bg-disabled\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst switchThumbVariants = cva(\n [\n \"pointer-events-none block rounded-full bg-surface shadow-quiet ring-0\",\n \"transition-transform duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ],\n {\n variants: {\n size: {\n sm: \"size-3.5 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0.5\",\n md: \"size-[18px] data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\ninterface SwitchProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, \"size\">,\n VariantProps<typeof switchVariants> {\n label?: string;\n}\n\nexport const Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n function Switch({ label, size, className, id: providedId, ...props }, ref) {\n const generatedId = React.useId();\n const id = providedId ?? generatedId;\n\n const root = (\n <SwitchPrimitive.Root\n ref={ref}\n id={id}\n className={cn(switchVariants({ size }), className)}\n {...props}\n >\n <SwitchPrimitive.Thumb className={cn(switchThumbVariants({ size }))} />\n </SwitchPrimitive.Root>\n );\n\n if (!label) return root;\n\n return (\n <div className=\"inline-flex items-center gap-2\">\n {root}\n <label\n htmlFor={id}\n className=\"text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed\"\n >\n {label}\n </label>\n </div>\n );\n },\n);\n\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Table — semantic data-table primitives. Ports the `.data-table` rules\n * from `_shared.css` (lines 542-590):\n * - mono uppercase headers (10px, 0.12em tracking) on `bg-surface-2`\n * - 1px `border-rule` under header, `border-rule-soft` between rows\n * - 13px body cells in `text-fg-2`, hover row gets `bg-bg-2`\n *\n * Public API preserved: Table / TableHeader / TableBody / TableRow /\n * TableHead / TableCell / TableCaption. `wrapperClassName` still wraps\n * the responsive overflow container.\n */\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Class for the wrapping `div` that handles overflow. */\n wrapperClassName?: string;\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, wrapperClassName, ...props },\n ref,\n) {\n return (\n <div\n className={cn(\n \"rounded-card border-rule bg-surface w-full overflow-x-auto border\",\n wrapperClassName,\n )}\n >\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom border-collapse text-sm\", className)}\n {...props}\n />\n </div>\n );\n});\nTable.displayName = \"Table\";\n\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n function TableHeader({ className, ...props }, ref) {\n return (\n <thead ref={ref} className={cn(\"[&_tr]:border-rule [&_tr]:border-b\", className)} {...props} />\n );\n },\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, ...props },\n ref,\n) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n});\nTableBody.displayName = \"TableBody\";\n\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n ref={ref}\n className={cn(\n \"border-rule bg-surface-2 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nTableFooter.displayName = \"TableFooter\";\n\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>;\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { className, ...props },\n ref,\n) {\n return (\n <tr\n ref={ref}\n className={cn(\n \"border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n // G15 compound: selected wins over hover; selected+hover uses the\n // Pro hover tint (not bg-bg-2, which would fight the selection).\n \"data-[state=selected]:bg-pro-bg data-[state=selected]:hover:bg-pro-bg-hover\",\n \"[&:not([data-state=selected])]:hover:bg-bg-2\",\n className,\n )}\n {...props}\n />\n );\n});\nTableRow.displayName = \"TableRow\";\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement>;\n\nexport const TableHead = forwardRef<HTMLTableCellElement, TableHeadProps>(function TableHead(\n { className, ...props },\n ref,\n) {\n return (\n <th\n ref={ref}\n className={cn(\n // .data-table th — mono, 10px, uppercase, tight tracking 0.12em\n \"h-9 px-3.5 py-2 text-left align-middle whitespace-nowrap\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 bg-surface-2\",\n \"border-rule border-b\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n});\nTableHead.displayName = \"TableHead\";\n\nexport type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { className, ...props },\n ref,\n) {\n return (\n <td\n ref={ref}\n className={cn(\n // .data-table td — 13px, fg-2, soft 1px row divider, tabular nums\n \"text-fg-2 px-3.5 py-2.5 align-middle text-[13px] tabular-nums\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n});\nTableCell.displayName = \"TableCell\";\n\nexport type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>;\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n function TableCaption({ className, ...props }, ref) {\n return <caption ref={ref} className={cn(\"text-fg-3 mt-3 text-sm\", className)} {...props} />;\n },\n);\nTableCaption.displayName = \"TableCaption\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* Tabs root */\n/* -------------------------------------------------------------------------- */\n\ntype TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>;\n\nexport const Tabs = React.forwardRef<React.ElementRef<typeof TabsPrimitive.Root>, TabsProps>(\n function Tabs({ className, ...props }, ref) {\n return <TabsPrimitive.Root ref={ref} className={cn(className)} {...props} />;\n },\n);\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsList */\n/* Per spec §5 / 04-client-detail.html: a flush row sitting on a 1px rule. */\n/* -------------------------------------------------------------------------- */\n\ntype TabsListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(function TabsList({ className, ...props }, ref) {\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\"border-rule inline-flex items-center gap-0 border-b\", className)}\n {...props}\n />\n );\n});\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsTrigger — pill | underline (default underline, matches mockup) */\n/* -------------------------------------------------------------------------- */\n\nconst triggerVariants = cva(\n cn(\n \"inline-flex items-center justify-center gap-2 text-[13px] font-medium\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled\",\n \"hover:text-fg\",\n ),\n {\n variants: {\n variant: {\n // §5.16: tab current = 2px accent underline + bold foreground text.\n // The cyan rule carries the brand statement (tabs are interaction,\n // so cyan; Pro purple is reserved for selection state on\n // list/dropdown surfaces). The active LABEL stays in `text-fg` for\n // legibility — accent on text was too low-contrast against the page\n // background, especially in dark mode.\n underline: cn(\n \"rounded-none bg-transparent px-3.5 py-2.5\",\n \"border-b-2 border-transparent -mb-px\",\n \"data-[state=active]:border-accent data-[state=active]:text-fg data-[state=active]:font-semibold\",\n ),\n pill: cn(\n \"rounded-pill px-3 py-1.5\",\n \"data-[state=active]:bg-pro-bg data-[state=active]:text-pro-fg\",\n ),\n },\n },\n defaultVariants: {\n variant: \"underline\",\n },\n },\n);\n\ninterface TabsTriggerProps\n extends\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof triggerVariants> {}\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(function TabsTrigger({ className, variant, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(triggerVariants({ variant }), className)}\n {...props}\n />\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------- */\n/* TabsContent */\n/* -------------------------------------------------------------------------- */\n\ntype TabsContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-3 focus-visible:outline-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n className,\n )}\n {...props}\n />\n );\n});\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Badge } from \"./badge\";\nimport { Select, type SelectOption } from \"./select\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * TeamMemberSelect — assignee picker, built on the new Radix-based\n * `Select` primitive.\n *\n * Public API preserved verbatim:\n * <TeamMemberSelect\n * teamMembers currentUserId\n * value onValueChange\n * includeUnassigned placeholder\n * />\n *\n * Behaviour:\n * - Sort: current user first (when `currentUserId` matches), then\n * alphabetical on `fullName`.\n * - Current user is annotated with a small \"Me\" badge as the\n * `labelSuffix` of its option.\n * - When `includeUnassigned` is true (default), prepends a sentinel\n * `__unassigned__` option labelled \"Unassigned\". Note: legacy code\n * used `value: \"\"` for this, but Radix Select forbids empty-string\n * item values. We map \"\" ↔ \"__unassigned__\" transparently so the\n * consumer-facing contract (`value: \"\"` ⇔ unassigned) is preserved.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst UNASSIGNED_VALUE = \"__unassigned__\";\n\ninterface TeamMember {\n id: string;\n fullName: string;\n}\n\ninterface TeamMemberSelectProps {\n teamMembers: TeamMember[];\n currentUserId?: string | null;\n value: string;\n onValueChange: (value: string) => void;\n includeUnassigned?: boolean;\n placeholder?: string;\n className?: string;\n}\n\nexport function TeamMemberSelect({\n teamMembers,\n currentUserId,\n value,\n onValueChange,\n includeUnassigned = true,\n placeholder = \"Select team member...\",\n className,\n}: TeamMemberSelectProps) {\n const options = React.useMemo<SelectOption[]>(() => {\n const meBadge = (\n <Badge\n variant=\"secondary\"\n size=\"sm\"\n className=\"px-1.5 py-0 font-mono text-[10px] tracking-wider uppercase\"\n >\n Me\n </Badge>\n );\n\n // Sort: current user first, then alphabetical\n const sorted = [...teamMembers].sort((a, b) => {\n if (currentUserId) {\n if (a.id === currentUserId) return -1;\n if (b.id === currentUserId) return 1;\n }\n return a.fullName.localeCompare(b.fullName);\n });\n\n const memberOptions: SelectOption[] = sorted.map((m) => ({\n value: m.id,\n label: m.fullName,\n labelSuffix: m.id === currentUserId ? meBadge : undefined,\n }));\n\n if (includeUnassigned) {\n return [{ value: UNASSIGNED_VALUE, label: \"Unassigned\" }, ...memberOptions];\n }\n\n return memberOptions;\n }, [teamMembers, currentUserId, includeUnassigned]);\n\n // Map \"\" (legacy unassigned) ↔ sentinel for Radix.\n const innerValue = value === \"\" ? UNASSIGNED_VALUE : value;\n const handleChange = (next: string) => {\n onValueChange(next === UNASSIGNED_VALUE ? \"\" : next);\n };\n\n return (\n <Select\n options={options}\n value={innerValue}\n onValueChange={handleChange}\n placeholder={placeholder}\n className={className}\n />\n );\n}\n\nTeamMemberSelect.displayName = \"TeamMemberSelect\";\n","\"use client\";\n\nimport { forwardRef, useCallback, useEffect, useId, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nconst textareaVariants = cva(\n [\n \"flex w-full rounded-input border bg-surface font-body text-fg\",\n \"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]\",\n \"placeholder:text-fg-4\",\n \"focus-visible:outline-none focus-visible:border-accent\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg\",\n \"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]\",\n ],\n {\n variants: {\n variant: {\n default: \"border-rule-strong\",\n ghost: \"border-transparent bg-transparent focus-visible:bg-surface\",\n },\n inputSize: {\n sm: \"min-h-16 px-2.5 py-1.5 text-xs\",\n md: \"min-h-20 px-3 py-2 text-[13px]\",\n lg: \"min-h-24 px-3.5 py-2.5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inputSize: \"md\",\n },\n },\n);\n\nexport type TextareaVariants = VariantProps<typeof textareaVariants>;\n\ninterface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">, TextareaVariants {\n label?: string;\n error?: string;\n showCount?: boolean;\n autoResize?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n {\n label,\n error,\n showCount,\n autoResize,\n variant,\n inputSize,\n maxLength,\n value,\n defaultValue,\n className,\n id: providedId,\n onChange,\n ...props\n },\n ref,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const errorId = `${id}-error`;\n const internalRef = useRef<HTMLTextAreaElement | null>(null);\n\n const setRefs = useCallback(\n (node: HTMLTextAreaElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const adjustHeight = useCallback(() => {\n if (!autoResize || !internalRef.current) return;\n const el = internalRef.current;\n el.style.height = \"auto\";\n el.style.height = `${el.scrollHeight}px`;\n }, [autoResize]);\n\n useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n const currentLength =\n typeof value === \"string\"\n ? value.length\n : typeof defaultValue === \"string\"\n ? defaultValue.length\n : 0;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label htmlFor={id} className=\"text-fg mb-1.5 block text-[13px] leading-none font-medium\">\n {label}\n </label>\n )}\n <textarea\n ref={setRefs}\n id={id}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? errorId : undefined}\n onChange={(e) => {\n onChange?.(e);\n adjustHeight();\n }}\n className={cn(\n textareaVariants({ variant, inputSize }),\n autoResize && \"resize-none overflow-hidden\",\n className,\n )}\n {...props}\n />\n {(error || (showCount && maxLength)) && (\n <div className=\"mt-1.5 flex items-center justify-between gap-2\">\n {error ? (\n <p id={errorId} role=\"alert\" className=\"text-danger-fg text-xs\">\n {error}\n </p>\n ) : (\n <span />\n )}\n {showCount && maxLength && (\n <span className=\"text-fg-4 ml-auto font-mono text-[11px]\">\n {currentLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\n\nTextarea.displayName = \"Textarea\";\n\nexport { textareaVariants };\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { XIcon } from \"./icons\";\n/* ───────────────────────────────────────────────────────────────────────\n * Toast — custom (no Radix). Consumer contract:\n * useToast() → { toast, dismiss }\n *\n * Public API preserved + EXPANDED:\n * - `ToastProvider` mounts the toast region.\n * - `useToast()` now returns BOTH `{ toast, dismiss }` per the\n * lighttaxes-platform consumer contract (72+ call sites).\n * • `toast({ title, description?, variant?, duration? })`\n * • `dismiss(id?)` — dismiss a specific toast, or all when no id given.\n *\n * Variants restyled with Assure Pro tokens:\n * default → bg-surface / border-rule / text-fg\n * success → bg-success-bg / border-success-line / text-success-fg\n * destructive→ bg-danger-bg / border-danger-line / text-danger-fg\n * warning → bg-warning-bg / border-warning-line / text-warning-fg\n * ─────────────────────────────────────────────────────────────────────── */\n\ntype ToastVariant = \"default\" | \"success\" | \"destructive\" | \"warning\";\n\ninterface Toast {\n id: string;\n title: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n}\n\ninterface ToastContextValue {\n toast: (options: Omit<Toast, \"id\">) => string;\n dismiss: (id?: string) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast() {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nlet toastCount = 0;\n\ninterface ToastProviderProps {\n children: React.ReactNode;\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((options: Omit<Toast, \"id\">) => {\n const id = `toast-${++toastCount}`;\n setToasts((prev) => [...prev, { id, ...options }]);\n return id;\n }, []);\n\n const dismiss = useCallback((id?: string) => {\n if (id === undefined) {\n setToasts([]);\n return;\n }\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const value = useMemo<ToastContextValue>(\n () => ({ toast: addToast, dismiss }),\n [addToast, dismiss],\n );\n\n return (\n <ToastContext value={value}>\n {children}\n <div\n className=\"pointer-events-none fixed top-4 right-4 z-[var(--z-toast)] flex flex-col gap-2\"\n aria-live=\"polite\"\n aria-label=\"Notifications\"\n >\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={removeToast} />\n ))}\n </div>\n </ToastContext>\n );\n}\n\nconst variantStyles: Record<ToastVariant, string> = {\n default: \"bg-surface border-rule text-fg\",\n success: \"bg-success-bg border-success-line text-success-fg\",\n destructive: \"bg-danger-bg border-danger-line text-danger-fg\",\n warning: \"bg-warning-bg border-warning-line text-warning-fg\",\n};\n\ninterface ToastItemProps {\n toast: Toast;\n onDismiss: (id: string) => void;\n}\n\nfunction ToastItem({ toast, onDismiss }: ToastItemProps) {\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const [exiting, setExiting] = useState(false);\n\n const close = useCallback(() => {\n setExiting(true);\n // Match exit animation duration (--duration-fast, 150ms) so the toast\n // unmounts immediately after it visually leaves the screen.\n setTimeout(() => onDismiss(toast.id), 150);\n }, [toast.id, onDismiss]);\n\n useEffect(() => {\n const duration = toast.duration ?? 5000;\n if (duration <= 0) return; // 0 = sticky toast\n timerRef.current = setTimeout(close, duration);\n return () => clearTimeout(timerRef.current);\n }, [toast.duration, close]);\n\n return (\n <div\n role=\"status\"\n data-state={exiting ? \"closed\" : \"open\"}\n className={cn(\n \"rounded-card shadow-card pointer-events-auto w-80 border p-4\",\n \"font-body\",\n // Unified data-state animation (spec §5.27) — same model as Dialog/Tooltip:\n // open → fade+slide in over --duration-overlay (200ms), ease-out-quart\n // close → fade+slide out over --duration-fast (150ms), ease-in\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-right-8 data-[state=open]:fade-in-0\",\n \"data-[state=open]:duration-[var(--duration-overlay)] data-[state=open]:ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right-8 data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:duration-[var(--duration-fast)] data-[state=closed]:ease-[var(--ease-in)]\",\n \"motion-reduce:animate-none\",\n variantStyles[toast.variant ?? \"default\"],\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm leading-tight font-semibold\">{toast.title}</p>\n {toast.description && (\n <p className=\"mt-1 text-sm leading-snug opacity-80\">{toast.description}</p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={close}\n className={cn(\n \"rounded-icon inline-flex size-5 shrink-0 items-center justify-center\",\n \"opacity-70 transition-opacity duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:opacity-100 motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n aria-label=\"Dismiss\"\n >\n <XIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\n/* -------------------------------------------------------------------------- */\n/* ToggleGroup */\n/* Wraps Radix ToggleGroup; preserves single|multiple + default|outline. */\n/* -------------------------------------------------------------------------- */\n\nconst itemVariants = cva(\n cn(\n \"inline-flex items-center justify-center rounded-pill px-3 py-1.5 text-[13px] font-medium\",\n \"text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-2 hover:text-fg\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled\",\n \"data-[state=on]:bg-pro-bg data-[state=on]:text-pro-fg\",\n ),\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-rule-strong bg-surface\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ntype ToggleGroupContextValue = VariantProps<typeof itemVariants>;\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n variant: \"default\",\n});\n\ntype ToggleGroupRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof itemVariants>;\n\nexport const ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n ToggleGroupRootProps\n>(function ToggleGroup({ className, variant, children, ...props }, ref) {\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...(props as React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>)}\n >\n <ToggleGroupContext.Provider value={{ variant }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n});\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\ninterface ToggleGroupItemProps\n extends\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n VariantProps<typeof itemVariants> {}\n\nexport const ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n ToggleGroupItemProps\n>(function ToggleGroupItem({ className, variant, ...props }, ref) {\n const ctx = React.useContext(ToggleGroupContext);\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(itemVariants({ variant: variant ?? ctx.variant }), className)}\n {...props}\n />\n );\n});\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Tooltip — Radix UI tooltip primitive, Assure Pro skin.\n *\n * The root `Tooltip` wraps `TooltipPrimitive.Provider` once per instance\n * so single-use tooltips work without app-level provider scaffolding.\n * Apps that render many tooltips should still mount a single\n * `<TooltipProvider>` at the app root for shared `delayDuration` /\n * `skipDelayDuration` semantics.\n *\n * Public API preserved:\n * Tooltip (with `delayMs` prop), TooltipTrigger, TooltipContent\n *\n * NEW (additive): TooltipProvider, TooltipPortal are exported.\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipPortal = TooltipPrimitive.Portal;\n\ninterface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /**\n * Backwards-compat alias for Radix's `delayDuration`. Kept so existing\n * call sites that passed `delayMs={…}` keep working unchanged.\n */\n delayMs?: number;\n /**\n * Optional delayDuration applied to the implicit Provider. Forwarded\n * here when no surrounding `<TooltipProvider>` is present.\n */\n delayDuration?: number;\n}\n\nconst Tooltip = ({ delayMs, delayDuration, children, ...props }: TooltipProps) => {\n const resolvedDelay = delayDuration ?? delayMs ?? 300;\n return (\n <TooltipPrimitive.Provider delayDuration={resolvedDelay}>\n <TooltipPrimitive.Root delayDuration={resolvedDelay} {...props}>\n {children}\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\nTooltip.displayName = \"Tooltip\";\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 \"rounded-input border-rule-strong bg-surface z-[var(--z-tooltip)] max-w-xs border px-2.5 py-1.5\",\n \"font-body text-fg shadow-pop text-xs leading-tight\",\n \"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]\",\n \"data-[state=closed]:scale-95 data-[state=closed]:opacity-0\",\n \"data-[state=delayed-open]:scale-100 data-[state=delayed-open]:opacity-100\",\n \"data-[state=instant-open]:scale-100 data-[state=instant-open]:opacity-100\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipProvider, TooltipTrigger, TooltipPortal, TooltipContent };\n","import * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { forwardRef } from \"react\";\n\n/**\n * VisuallyHidden — hides content from sighted users while keeping it\n * available to assistive tech. Backed by `@radix-ui/react-visually-hidden`\n * (the canonical implementation; survives strict-mode + portals).\n */\n\ninterface VisuallyHiddenProps extends React.ComponentPropsWithoutRef<\n typeof VisuallyHiddenPrimitive.Root\n> {\n children: React.ReactNode;\n}\n\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n function VisuallyHidden({ children, ...props }, ref) {\n return (\n <VisuallyHiddenPrimitive.Root ref={ref} {...props}>\n {children}\n </VisuallyHiddenPrimitive.Root>\n );\n },\n);\n\nVisuallyHidden.displayName = \"VisuallyHidden\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type ShellProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Shell = forwardRef<HTMLDivElement, ShellProps>(function Shell(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"bg-bg flex h-dvh w-full\", className)} {...props} />;\n});\nShell.displayName = \"Shell\";\n\nexport type MainProps = React.HTMLAttributes<HTMLElement>;\n\nexport const Main = forwardRef<HTMLElement, MainProps>(function Main({ className, ...props }, ref) {\n return (\n <main\n ref={ref}\n className={cn(\"flex min-w-0 flex-1 flex-col overflow-hidden\", className)}\n {...props}\n />\n );\n});\nMain.displayName = \"Main\";\n\nexport interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Override the bottom padding only — the rest of the content area keeps\n * `--content-pad` so the header alignment stays intact. Use this on\n * long-scroll pages (Kanban, document trees, large tables) that want\n * extra breathing room beneath the last row.\n *\n * Accepts any CSS length (e.g. `\"64px\"`, `\"4rem\"`). Omit to inherit\n * the symmetric default.\n */\n padBottom?: string;\n}\n\nexport const Content = forwardRef<HTMLDivElement, ContentProps>(function Content(\n { padBottom, className, style, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex-1 overflow-y-auto p-[var(--content-pad)]\", className)}\n style={padBottom ? { paddingBottom: padBottom, ...style } : style}\n {...props}\n />\n );\n});\nContent.displayName = \"Content\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { Avatar } from \"../primitives/avatar\";\nimport { Collapsible, CollapsibleContent } from \"../primitives/collapsible\";\nimport { ChevronDownIcon, PanelLeftCloseIcon, PanelLeftIcon } from \"../primitives/icons\";\nimport { cn } from \"../lib/cn\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * State model\n *\n * `expanded` — full 256px column, labels visible. The legacy behavior;\n * still the default for any consumer that doesn't opt in.\n * `rail` — 64px icon column, labels hidden. The user's *pinned*\n * intent to reclaim canvas width.\n *\n * Peek is *transient* and not part of the user intent — when in `rail`,\n * hovering the column momentarily widens it back to expanded as a\n * floating overlay so the user can read labels without losing their\n * pinned preference. Peek lives inside the <Sidebar> as local state.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type SidebarState = \"expanded\" | \"rail\";\n\ninterface SidebarContextValue {\n state: SidebarState;\n setState: (next: SidebarState) => void;\n toggle: () => void;\n collapsible: boolean;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\n// Sentinel so atoms can render outside a provider without crashing —\n// keeps the legacy \"drop a <Sidebar> into a <Shell>\" path working\n// untouched.\nconst NOOP_CONTEXT: SidebarContextValue = {\n state: \"expanded\",\n setState: () => {},\n toggle: () => {},\n collapsible: false,\n};\n\nexport function useSidebarState(): SidebarContextValue {\n return React.useContext(SidebarContext) ?? NOOP_CONTEXT;\n}\n\n/* ───────────────────────────────────────────────────────────────────────\n * Provider\n *\n * Wraps the app shell. Owns the user's pinned intent. Controlled\n * (`state` + `onStateChange`) and uncontrolled (`defaultState`) modes\n * both supported, following the Radix pattern.\n *\n * `storageKey` opts into localStorage persistence; rehydration happens\n * post-mount so SSR markup is stable.\n *\n * `shortcut` defaults to `Mod+\\` — same chord as VS Code, GitHub, Linear.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SidebarProviderProps {\n children?: React.ReactNode;\n state?: SidebarState;\n defaultState?: SidebarState;\n onStateChange?: (next: SidebarState) => void;\n /** Persist the user's intent across reloads under this localStorage key. */\n storageKey?: string;\n /** Global toggle shortcut. Pass `null` to disable. Defaults to `Mod+\\`. */\n shortcut?: string | null;\n}\n\nconst DEFAULT_SHORTCUT = \"Mod+\\\\\";\n\nfunction readStorage(key: string | undefined): SidebarState | null {\n if (!key || typeof window === \"undefined\") return null;\n try {\n const v = window.localStorage.getItem(key);\n return v === \"rail\" || v === \"expanded\" ? v : null;\n } catch {\n return null;\n }\n}\n\nexport function SidebarProvider({\n children,\n state: controlled,\n defaultState = \"expanded\",\n onStateChange,\n storageKey,\n shortcut = DEFAULT_SHORTCUT,\n}: SidebarProviderProps) {\n // Lazy initializer reads localStorage on the *first* client render so the\n // sidebar arrives at the user's pinned width immediately rather than\n // flashing expanded → rail on hydration. SSR still gets `defaultState`\n // (no `window`), so server markup and client markup will differ when\n // the pinned intent isn't the default — that legitimate divergence is\n // handled by `suppressHydrationWarning` on the <aside> root.\n const [uncontrolled, setUncontrolled] = React.useState<SidebarState>(() => {\n if (controlled !== undefined) return controlled;\n const stored = readStorage(storageKey);\n return stored ?? defaultState;\n });\n\n React.useEffect(() => {\n if (controlled !== undefined) return;\n const stored = readStorage(storageKey);\n if (stored && stored !== uncontrolled) setUncontrolled(stored);\n // We only want this on mount — subsequent storage writes are owned\n // by setState below.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const state = controlled ?? uncontrolled;\n\n const setState = React.useCallback(\n (next: SidebarState) => {\n if (controlled === undefined) setUncontrolled(next);\n onStateChange?.(next);\n if (storageKey && typeof window !== \"undefined\") {\n try {\n window.localStorage.setItem(storageKey, next);\n } catch {\n /* quota / private-mode — ignore, runtime state still works */\n }\n }\n },\n [controlled, onStateChange, storageKey],\n );\n\n const toggle = React.useCallback(() => {\n setState(state === \"expanded\" ? \"rail\" : \"expanded\");\n }, [state, setState]);\n\n React.useEffect(() => {\n if (!shortcut) return;\n const parts = shortcut.split(\"+\");\n const key = parts.pop() ?? \"\";\n const wantMod = parts.includes(\"Mod\");\n const wantShift = parts.includes(\"Shift\");\n const wantAlt = parts.includes(\"Alt\");\n function onKey(e: KeyboardEvent) {\n const isMac =\n typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.platform);\n const mod = isMac ? e.metaKey : e.ctrlKey;\n if (e.key.toLowerCase() !== key.toLowerCase()) return;\n if (wantMod !== mod) return;\n if (wantShift !== e.shiftKey) return;\n if (wantAlt !== e.altKey) return;\n e.preventDefault();\n toggle();\n }\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [shortcut, toggle]);\n\n const value: SidebarContextValue = React.useMemo(\n () => ({ state, setState, toggle, collapsible: true }),\n [state, setState, toggle],\n );\n\n return <SidebarContext.Provider value={value}>{children}</SidebarContext.Provider>;\n}\nSidebarProvider.displayName = \"SidebarProvider\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Sidebar root\n *\n * Visual contract:\n * - Width is driven by inline style (either the expanded or rail\n * token). Setting it inline means the flex Shell layout reflows\n * with no coordination needed in <Main>.\n * - Drives child styling via three data-attributes:\n * data-state=\"expanded\"|\"rail\" → user intent\n * data-peek=\"true\"|undefined → transient hover state\n * data-labels=\"show\"|\"hide\" → derived; \"hide\" only when\n * rail AND not peeking. Atoms\n * read this single attribute\n * rather than computing the\n * combination themselves.\n * - Carries `group/sidebar` so descendants can target the parent\n * via `group-data-[labels=hide]/sidebar:…` etc.\n *\n * Peek behavior: when state=\"rail\", hovering the column waits\n * PEEK_ENTER_DELAY_MS (forgives mouse-passthrough) then expands the\n * column to its full width as `position: fixed` overlay. Leaving waits\n * PEEK_LEAVE_DELAY_MS (forgives overshoot toward an item).\n * ─────────────────────────────────────────────────────────────────────── */\n\nconst PEEK_ENTER_DELAY_MS = 100;\nconst PEEK_LEAVE_DELAY_MS = 200;\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Opt into the rail / hover-peek behavior. When false (default), the\n * sidebar always renders expanded — the legacy behavior. When true,\n * the sidebar reads pinned state from <SidebarProvider>; if no\n * provider is mounted it still renders expanded, so dropping\n * `collapsible` alone is a no-op.\n */\n collapsible?: boolean;\n}\n\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(function Sidebar(\n { className, collapsible = false, onMouseEnter, onMouseLeave, style, ...props },\n ref,\n) {\n const ctx = React.useContext(SidebarContext);\n const state: SidebarState = collapsible && ctx ? ctx.state : \"expanded\";\n const [peek, setPeek] = React.useState(false);\n const enterTimer = React.useRef<number | null>(null);\n const leaveTimer = React.useRef<number | null>(null);\n\n const clearTimers = React.useCallback(() => {\n if (enterTimer.current != null) {\n window.clearTimeout(enterTimer.current);\n enterTimer.current = null;\n }\n if (leaveTimer.current != null) {\n window.clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n }, []);\n\n React.useEffect(() => () => clearTimers(), [clearTimers]);\n\n // The moment a user re-pins to expanded, drop any pending peek state\n // so we never end up in \"expanded + peek=true\" (visually identical\n // but with the wrong shadow/position).\n React.useEffect(() => {\n if (state === \"expanded\") {\n clearTimers();\n setPeek(false);\n }\n }, [state, clearTimers]);\n\n const handleEnter = (e: React.MouseEvent<HTMLElement>) => {\n onMouseEnter?.(e);\n if (!collapsible || state !== \"rail\") return;\n if (leaveTimer.current != null) {\n window.clearTimeout(leaveTimer.current);\n leaveTimer.current = null;\n }\n if (peek) return;\n enterTimer.current = window.setTimeout(() => setPeek(true), PEEK_ENTER_DELAY_MS);\n };\n\n const handleLeave = (e: React.MouseEvent<HTMLElement>) => {\n onMouseLeave?.(e);\n if (!collapsible) return;\n if (enterTimer.current != null) {\n window.clearTimeout(enterTimer.current);\n enterTimer.current = null;\n }\n if (!peek) return;\n leaveTimer.current = window.setTimeout(() => setPeek(false), PEEK_LEAVE_DELAY_MS);\n };\n\n const labelsHidden = state === \"rail\" && !peek;\n const effectiveWidth = labelsHidden ? \"var(--shell-sidebar-w-rail)\" : \"var(--shell-sidebar-w)\";\n\n return (\n // Hover-peek is *enhancement only*: the canonical way to toggle the\n // sidebar is <SidebarTrigger> (button) or the Mod+\\ shortcut, both\n // fully keyboard- and screen-reader-accessible. The mouse handlers\n // here exist to widen the column on pointer hover, which has no\n // keyboard analogue and intentionally so.\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <aside\n ref={ref}\n data-state={state}\n data-peek={peek ? \"true\" : undefined}\n data-labels={labelsHidden ? \"hide\" : \"show\"}\n data-collapsible={collapsible ? \"true\" : undefined}\n // The pinned state is recovered from localStorage on the first client\n // render — SSR cannot see it, so server markup says `expanded` while\n // the client may immediately render `rail`. The mismatch is on style\n // attributes only (data-state, data-labels, width); no content\n // differs, so the suppression is honest.\n suppressHydrationWarning\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n style={{ width: effectiveWidth, ...style }}\n className={cn(\n \"group/sidebar scrollbar-thin flex h-dvh shrink-0 flex-col overflow-y-auto\",\n \"border-rule bg-bg-2 border-r px-3 pt-4 pb-4\",\n // 220ms feels right for a ~192px width sweep — slower than the\n // 150ms `--duration-fast` (which reads as a snap on this size of\n // movement) but well short of `--duration-slow` (which feels\n // sluggish). `will-change` hints the compositor so the column\n // doesn't repaint every frame mid-transition.\n \"transition-[width,box-shadow] duration-[220ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"[will-change:width]\",\n // Peek overlay: float above the canvas without reflowing layout.\n \"data-[peek=true]:fixed data-[peek=true]:top-0 data-[peek=true]:left-0\",\n \"data-[peek=true]:z-[var(--z-overlay)] data-[peek=true]:shadow-pop\",\n // Padding is held constant across states so icons keep their\n // horizontal anchor when the column widens — peek expands the\n // labels rightward rather than shifting the icons leftward.\n className,\n )}\n {...props}\n />\n );\n});\nSidebar.displayName = \"Sidebar\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Trigger\n *\n * Toggle button. Designed to live in either the brand row (inside\n * <Sidebar>) or an app header (outside <Sidebar>, but inside the\n * provider tree). Renders `null` when no provider is mounted so apps\n * can drop it in without conditionals.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n expandLabel?: string;\n collapseLabel?: string;\n}\n\nexport const SidebarTrigger = React.forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n function SidebarTrigger(\n {\n className,\n expandLabel = \"Expand sidebar\",\n collapseLabel = \"Collapse sidebar\",\n onClick,\n ...props\n },\n ref,\n ) {\n const ctx = React.useContext(SidebarContext);\n if (!ctx) return null;\n const { state, toggle } = ctx;\n const label = state === \"expanded\" ? collapseLabel : expandLabel;\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n aria-expanded={state === \"expanded\"}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) toggle();\n }}\n className={cn(\n \"inline-flex size-7 shrink-0 items-center justify-center rounded-md\",\n \"text-fg-3 hover:bg-bg-3 hover:text-fg\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"[&_svg]:size-4\",\n className,\n )}\n {...props}\n >\n {state === \"expanded\" ? <PanelLeftCloseIcon /> : <PanelLeftIcon />}\n </button>\n );\n },\n);\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Brand\n *\n * Plain flex row. Children that should disappear in rail (e.g. the\n * \"Assure Pro\" wordmark) should be wrapped in <SidebarBrandText>;\n * a bare logo glyph passed as a sibling stays put.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type SidebarBrandProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SidebarBrand = React.forwardRef<HTMLDivElement, SidebarBrandProps>(\n function SidebarBrand({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex min-w-0 items-center gap-2 px-2 pt-1 pb-4\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarBrand.displayName = \"SidebarBrand\";\n\n/**\n * Text portion of the brand row. Hides itself when the sidebar\n * collapses to a rail. Use to wrap product names / wordmarks so the\n * logo glyph alone remains visible at 64px.\n */\nexport type SidebarBrandTextProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const SidebarBrandText = React.forwardRef<HTMLSpanElement, SidebarBrandTextProps>(\n function SidebarBrandText({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n aria-hidden=\"false\"\n className={cn(\n \"min-w-0 truncate\",\n // Smooth fade + width collapse on rail. Keeps the wordmark\n // legible up to the moment the column reaches rail width, then\n // fully drops out (visibility:hidden cuts hit-testing).\n \"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"max-w-[160px] opacity-100\",\n \"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarBrandText.displayName = \"SidebarBrandText\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Section\n *\n * Label hides in rail (the section keeps its vertical rhythm via the\n * existing `mb-4`, so grouping reads even without the text). Stays in\n * the DOM as `aria-label` on the group when collapsed — screen readers\n * announce the group regardless of visual state.\n *\n * Also: provides an *exclusive-open scope* to descendant <SidebarLinkGroup>s.\n * When a group's body row is clicked it claims exclusivity within its\n * containing section; siblings collapse. Chevron clicks bypass this and\n * toggle in place. See `SidebarLinkGroup` for the rule.\n * ─────────────────────────────────────────────────────────────────────── */\n\ninterface SidebarGroupScopeValue {\n exclusiveId: string | null;\n setExclusive: (id: string) => void;\n}\n\nconst SidebarGroupScopeContext = React.createContext<SidebarGroupScopeValue | null>(null);\n\nexport interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: React.ReactNode;\n /**\n * Label color tone. Encodes the *meaning* of the section's\n * priority in the scan path:\n * - `\"pro\"` (default) — Pro-purple, for primary day-to-day work.\n * - `\"muted\"` — `text-fg-3`, for system-level or settings groups\n * that should sit lower in the visual hierarchy.\n *\n * Mirrors the `tone` API on `<SidebarLinkBadge>`.\n */\n tone?: \"pro\" | \"muted\";\n}\n\nexport const SidebarSection = React.forwardRef<HTMLDivElement, SidebarSectionProps>(\n function SidebarSection({ label, tone = \"pro\", className, children, ...props }, ref) {\n const ariaLabel =\n typeof label === \"string\" ? label : typeof label === \"number\" ? String(label) : undefined;\n\n const [exclusiveId, setExclusiveIdState] = React.useState<string | null>(null);\n const setExclusive = React.useCallback(\n (id: string) => setExclusiveIdState(id),\n [],\n );\n const scope = React.useMemo<SidebarGroupScopeValue>(\n () => ({ exclusiveId, setExclusive }),\n [exclusiveId, setExclusive],\n );\n\n return (\n <SidebarGroupScopeContext.Provider value={scope}>\n <div\n ref={ref}\n role={ariaLabel ? \"group\" : undefined}\n aria-label={ariaLabel}\n className={cn(\n \"mb-4\",\n // In rail, the visible section labels disappear and the only\n // grouping cue is a thin rule. No extra mb/pb — the border\n // itself separates groups, so inter-section spacing matches\n // intra-section spacing and the rail stays dense.\n \"group-data-[labels=hide]/sidebar:mb-0 group-data-[labels=hide]/sidebar:border-b group-data-[labels=hide]/sidebar:border-rule group-data-[labels=hide]/sidebar:pb-0 group-data-[labels=hide]/sidebar:last:border-b-0\",\n className,\n )}\n {...props}\n >\n {label != null && (\n <div\n className={cn(\n \"mb-1 flex items-center justify-between px-2.5 py-1\",\n \"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"opacity-100\",\n \"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0\",\n )}\n >\n <span\n className={cn(\n \"font-mono text-[11px] tracking-[0.14em] uppercase\",\n tone === \"muted\" ? \"text-fg-3\" : \"text-pro-fg\",\n )}\n >\n {label}\n </span>\n </div>\n )}\n {children}\n </div>\n </SidebarGroupScopeContext.Provider>\n );\n },\n);\nSidebarSection.displayName = \"SidebarSection\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Link\n *\n * In rail (no peek):\n * - Icon centers (justify-center, no gap consumption)\n * - Label, badge, and any other text children are hidden\n *\n * The active rail indicator already anchors to `before:left-0` of the\n * link itself, so it stays visually correct without changes.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SidebarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Required when rendered as `<a>`; ignored when `asChild` is true. */\n href?: string;\n icon?: React.ReactNode;\n active?: boolean;\n /**\n * Render via Radix `<Slot>` so the consumer can wrap a router-aware\n * component (e.g. Next.js `<Link>`, React Router `<NavLink>`) that\n * owns `href` and prefetch behavior. Without this, sidebar clicks\n * bypass client-side routing and trigger full page loads.\n */\n asChild?: boolean;\n}\n\nexport const SidebarLink = React.forwardRef<HTMLAnchorElement, SidebarLinkProps>(\n function SidebarLink(\n { href, icon, active = false, asChild, className, children, ...props },\n ref,\n ) {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n {...(asChild ? {} : { href })}\n data-active={active ? \"true\" : undefined}\n aria-current={active ? \"page\" : undefined}\n className={cn(\n \"group/link relative mb-px flex items-center gap-2.5 rounded-md px-2.5 py-1.5\",\n \"text-fg-2 text-[13px] font-normal no-underline\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-3 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium\",\n // In rail, the icon itself carries the active state rather\n // than just the rule bar — color is more legible than a 2px\n // vertical mark at the column's left edge when labels are\n // hidden. The full-opacity icon override (`opacity-100`)\n // counters the default `[&_svg]:opacity-85` so the active\n // icon doesn't read as \"still inactive but darker\".\n \"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100\",\n // Active rail: 2px wide, 16px tall, anchored to the link's\n // own left edge — no parent-padding dependency. Continues\n // working unchanged when the aside narrows to a rail.\n \"data-[active=true]:before:absolute data-[active=true]:before:content-['']\",\n \"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0\",\n \"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2\",\n \"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full\",\n // Padding/gap stay constant so the icon stays under the cursor\n // when the column widens during peek. The label simply collapses\n // to width 0 via <SidebarLinkLabel>.\n \"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85\",\n className,\n )}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {icon}\n <span\n className={cn(\n \"min-w-0 flex-1 truncate\",\n \"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"max-w-full opacity-100\",\n \"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible\",\n )}\n >\n {children}\n </span>\n </>\n )}\n </Comp>\n );\n },\n);\nSidebarLink.displayName = \"SidebarLink\";\n\n/**\n * Label slot for `<SidebarLink asChild>` consumers.\n *\n * The default (non-`asChild`) `SidebarLink` already hides its label in rail\n * mode. When consumers opt into `asChild` to wrap a router-aware element,\n * the design system can't reach inside to apply that rule — so consumers\n * compose this atom around their label text. Removes the leaky requirement\n * that every consumer re-stamp `group-data-[labels=hide]/sidebar:hidden`\n * on their inner spans.\n */\nexport type SidebarLinkLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const SidebarLinkLabel = React.forwardRef<HTMLSpanElement, SidebarLinkLabelProps>(\n function SidebarLinkLabel({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\n \"min-w-0 flex-1 truncate\",\n // Fade + collapse instead of hard display:none so a single\n // 180ms opacity tween covers all labels in lockstep with the\n // 220ms aside-width transition — no snap on the last frame.\n \"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"max-w-full opacity-100\",\n \"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarLinkLabel.displayName = \"SidebarLinkLabel\";\n\n/**\n * Optional trailing action inside a `<SidebarLink asChild>` (e.g. an\n * expand/collapse chevron for a nested section). Hides in rail because the\n * action is not meaningful when labels themselves are hidden.\n */\nexport type SidebarLinkActionProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const SidebarLinkAction = React.forwardRef<HTMLSpanElement, SidebarLinkActionProps>(\n function SidebarLinkAction({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\n \"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"opacity-100\",\n \"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarLinkAction.displayName = \"SidebarLinkAction\";\n\nexport const sidebarLinkBadgeVariants = cva(\n \"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums group-data-[labels=hide]/sidebar:hidden\",\n {\n variants: {\n tone: {\n default: \"text-[10.5px] text-fg-4 group-data-[active=true]/link:text-pro-fg\",\n danger: \"rounded-pill bg-danger-bg px-1.5 py-0.5 text-[10.5px] text-danger-fg\",\n warning: \"rounded-pill bg-warning-bg px-1.5 py-0.5 text-[10.5px] text-warning-fg\",\n neutral: \"rounded-pill bg-bg-3 px-1.5 py-0.5 text-[10.5px] text-fg-2\",\n },\n },\n defaultVariants: { tone: \"default\" },\n },\n);\n\nexport type SidebarLinkBadgeVariants = VariantProps<typeof sidebarLinkBadgeVariants>;\n\nexport interface SidebarLinkBadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n SidebarLinkBadgeVariants {}\n\nexport const SidebarLinkBadge = React.forwardRef<HTMLSpanElement, SidebarLinkBadgeProps>(\n function SidebarLinkBadge({ tone, className, ...props }, ref) {\n return (\n <span ref={ref} className={cn(sidebarLinkBadgeVariants({ tone }), className)} {...props} />\n );\n },\n);\nSidebarLinkBadge.displayName = \"SidebarLinkBadge\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * LinkGroup\n *\n * Expandable nav row with split-click semantics:\n * - Body click (icon + label area): \"I'm activating this section.\"\n * Fires `onActivate` (and follows `href` if no consumer prevents\n * default), opens this group, and *closes any other open group in\n * the same SidebarSection*. The accordion behavior matches user\n * mental model: \"I want to focus on this branch.\"\n * - Chevron click: \"Just let me peek at this.\" Toggles open/closed\n * on this group only — siblings are untouched. Lets users keep\n * two branches open side-by-side for cross-reference work.\n *\n * Exclusive coordination lives in the enclosing `<SidebarSection>` via\n * a small registry context. Outside a section, exclusive becomes a\n * no-op and groups behave as pure independent disclosures.\n *\n * Routing: the body renders as an `<a href>`. For client-side routing\n * frameworks that hijack anchor clicks (Next.js Link, React Router),\n * the standard pattern works as-is. A future `asChild` flag can opt\n * the body into Radix `Slot` for direct router-component wrapping.\n *\n * In rail mode the chevron and the collapsible content hide; the body\n * row collapses to icon-only and a body click still navigates without\n * trying to expand the (hidden) tree.\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport interface SidebarLinkGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n /**\n * Stable id used for exclusive-mode coordination. Defaults to a\n * generated React id, which is stable across renders within a\n * single tree.\n */\n id?: string;\n icon?: React.ReactNode;\n label: React.ReactNode;\n /** Body href — the body row renders as `<a href>`. */\n href?: string;\n /** Highlights the body row. Independent of the open state. */\n active?: boolean;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /**\n * Called when the body row is clicked, before the open state is\n * updated and before the section's exclusive lock is claimed. Call\n * `e.preventDefault()` to opt out of both. Use for navigation that\n * needs to run *before* the accordion behavior (rare).\n */\n onActivate?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n children?: React.ReactNode;\n}\n\nexport const SidebarLinkGroup = React.forwardRef<HTMLDivElement, SidebarLinkGroupProps>(\n function SidebarLinkGroup(\n {\n id: idProp,\n icon,\n label,\n href,\n active = false,\n defaultOpen = false,\n open: controlled,\n onOpenChange,\n onActivate,\n className,\n children,\n ...props\n },\n ref,\n ) {\n const reactId = React.useId();\n const id = idProp ?? reactId;\n const scope = React.useContext(SidebarGroupScopeContext);\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const open = controlled ?? uncontrolledOpen;\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (controlled === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [controlled, onOpenChange],\n );\n\n // When another group in the same section claims exclusivity, close.\n // We watch `exclusiveId` rather than reading it in handlers so a\n // group that's already open closes promptly when a sibling activates.\n React.useEffect(() => {\n if (scope?.exclusiveId && scope.exclusiveId !== id && open) {\n setOpen(false);\n }\n }, [scope?.exclusiveId, id, open, setOpen]);\n\n const handleBodyClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n onActivate?.(e);\n if (e.defaultPrevented) return;\n scope?.setExclusive(id);\n setOpen(true);\n };\n\n const handleChevronClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n // Stop propagation so the body row doesn't also activate.\n e.preventDefault();\n e.stopPropagation();\n setOpen(!open);\n };\n\n const contentId = `${id}-content`;\n\n const bodyClassName = cn(\n \"group/link relative flex flex-1 items-center gap-2.5 rounded-md px-2.5 py-1.5\",\n \"text-fg-2 text-[13px] font-normal no-underline\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"hover:bg-bg-3 hover:text-fg\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium\",\n // In rail, color carries active state since the chevron is hidden.\n \"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100\",\n // Active rail mark — anchored to body row's left edge.\n \"data-[active=true]:before:absolute data-[active=true]:before:content-['']\",\n \"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0\",\n \"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2\",\n \"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full\",\n \"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85\",\n );\n\n const labelSpan = (\n <span\n className={cn(\n \"min-w-0 flex-1 truncate\",\n \"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"max-w-full opacity-100\",\n \"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible\",\n )}\n >\n {label}\n </span>\n );\n\n return (\n <div ref={ref} className={cn(\"mb-px\", className)} {...props}>\n <Collapsible open={open} onOpenChange={setOpen}>\n <div className=\"flex items-stretch\">\n <a\n href={href}\n data-active={active ? \"true\" : undefined}\n aria-current={active ? \"page\" : undefined}\n onClick={handleBodyClick}\n className={bodyClassName}\n >\n {icon}\n {labelSpan}\n </a>\n <button\n type=\"button\"\n aria-expanded={open}\n aria-controls={contentId}\n aria-label={open ? \"Collapse section\" : \"Expand section\"}\n onClick={handleChevronClick}\n className={cn(\n \"ml-px inline-flex size-7 shrink-0 items-center justify-center rounded-md\",\n \"text-fg-4 hover:bg-bg-3 hover:text-fg-2\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n \"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-[var(--duration-fast)] [&_svg]:ease-[var(--ease-out-quart)] motion-reduce:[&_svg]:transition-none\",\n // Hide in rail — content tree is hidden too, so the\n // affordance has nothing to control.\n \"group-data-[labels=hide]/sidebar:hidden\",\n )}\n >\n <ChevronDownIcon className={open ? \"\" : \"-rotate-90\"} />\n </button>\n </div>\n <CollapsibleContent\n id={contentId}\n className={cn(\n // Indent column + connecting rule. Children render as\n // standard <SidebarLink>s and keep their own active-rail\n // indicator, which lands flush at the indented column's\n // left edge.\n \"group-data-[labels=hide]/sidebar:hidden\",\n )}\n >\n <div className=\"border-rule mt-px ml-[18px] border-l pl-2\">{children}</div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n );\n },\n);\nSidebarLinkGroup.displayName = \"SidebarLinkGroup\";\n\n/* ───────────────────────────────────────────────────────────────────────\n * Footer\n *\n * Stays at the bottom via `mt-auto`. In rail, centers content (avatar\n * only — see <SidebarUser>).\n * ─────────────────────────────────────────────────────────────────────── */\n\nexport type SidebarFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(\n function SidebarFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-rule mt-auto flex items-center gap-2.5 border-t px-2 pt-2.5 pb-1\",\n \"text-fg-3 text-xs\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarFooter.displayName = \"SidebarFooter\";\n\nexport interface SidebarUserProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n subtitle?: React.ReactNode;\n avatarSrc?: string | null;\n}\n\nexport const SidebarUser = React.forwardRef<HTMLDivElement, SidebarUserProps>(function SidebarUser(\n { name, subtitle, avatarSrc, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex min-w-0 items-center gap-2.5\", className)} {...props}>\n <Avatar size=\"sm\" variant=\"branded\" name={name} src={avatarSrc ?? undefined} />\n <div\n className={cn(\n \"min-w-0 leading-tight\",\n \"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"max-w-full opacity-100\",\n \"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible\",\n )}\n >\n <div className=\"text-fg truncate text-[13px] font-medium\">{name}</div>\n {subtitle != null && (\n <div className=\"text-fg-4 truncate font-mono text-[10.5px]\">{subtitle}</div>\n )}\n </div>\n </div>\n );\n});\nSidebarUser.displayName = \"SidebarUser\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nimport { SearchIcon } from \"../primitives/icons\";\n/**\n * AppHeader — sticky 56px-tall top bar mounted inside `<Main>`, above\n * `<Content>`. Ports `.app-header` from `_shared.css` (lines 393-404).\n *\n * Children flow horizontally:\n * breadcrumb → title → flex-1 spacer → search → actions\n *\n * Sub-components are layout slots; the consumer composes them in any order\n * and the AppHeaderSearch's `flex-1` collapses any remaining space.\n */\n\nexport type AppHeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport const AppHeader = forwardRef<HTMLElement, AppHeaderProps>(function AppHeader(\n { className, ...props },\n ref,\n) {\n return (\n <header\n ref={ref}\n className={cn(\n // Sticky bar at the top of <Main>. Padding tracks --content-pad so\n // the header's left edge aligns with content padding underneath\n // (breadcrumb/title vs page H1/table left edge match).\n \"border-rule bg-bg/95 sticky top-0 z-[var(--z-sticky)] flex h-[var(--shell-header-h)] items-center gap-3 border-b px-[var(--content-pad)] backdrop-blur\",\n className,\n )}\n {...props}\n />\n );\n});\nAppHeader.displayName = \"AppHeader\";\n\nexport type AppHeaderBreadcrumbProps = React.HTMLAttributes<HTMLElement>;\n\nexport const AppHeaderBreadcrumb = forwardRef<HTMLElement, AppHeaderBreadcrumbProps>(\n function AppHeaderBreadcrumb({ className, ...props }, ref) {\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"text-fg-3 flex items-center gap-1.5 text-sm\", className)}\n {...props}\n />\n );\n },\n);\nAppHeaderBreadcrumb.displayName = \"AppHeaderBreadcrumb\";\n\nexport type AppHeaderTitleProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * App-shell title rendered inside the sticky header.\n *\n * Intentionally a `<span>` rather than `<h1>`: the page below the chrome\n * owns its own document heading (`<h1>` in the page body). The header is\n * navigational chrome; making it the page's `<h1>` would couple every page\n * heading to the chrome wrapper and confuse screen-reader heading nav.\n */\nexport const AppHeaderTitle = forwardRef<HTMLSpanElement, AppHeaderTitleProps>(\n function AppHeaderTitle({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"font-display text-fg text-sm font-medium\", className)}\n {...props}\n />\n );\n },\n);\nAppHeaderTitle.displayName = \"AppHeaderTitle\";\n\nexport interface AppHeaderSearchProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Placeholder text rendered inside the search trigger. */\n placeholder?: string;\n /** Keyboard shortcut hint shown on the right. Defaults to ⌘K. */\n shortcut?: React.ReactNode;\n}\n\nexport const AppHeaderSearch = forwardRef<HTMLButtonElement, AppHeaderSearchProps>(\n function AppHeaderSearch({ placeholder = \"Search…\", shortcut = \"⌘K\", className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n // Search-input-shaped trigger — ports `.header-search-trigger`\n \"rounded-input border-rule bg-bg-2 text-fg-4 ml-auto flex h-8 max-w-[360px] flex-1 items-center gap-2.5 border px-2.5 text-xs\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:border-rule-strong hover:bg-bg-3\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n className,\n )}\n {...props}\n >\n <SearchIcon className=\"size-[13px] shrink-0\" strokeWidth={1.8} aria-hidden=\"true\" />\n <span className=\"truncate text-left\">{placeholder}</span>\n {shortcut !== null && shortcut !== undefined && shortcut !== \"\" && (\n <kbd\n className={cn(\n \"rounded-icon border-rule bg-bg ml-auto inline-flex h-[18px] min-w-[18px] items-center justify-center border px-[5px]\",\n \"text-fg-3 [border-bottom-width:1.5px] font-mono text-[10.5px]\",\n )}\n >\n {shortcut}\n </kbd>\n )}\n </button>\n );\n },\n);\nAppHeaderSearch.displayName = \"AppHeaderSearch\";\n\nexport type AppHeaderActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const AppHeaderActions = forwardRef<HTMLDivElement, AppHeaderActionsProps>(\n function AppHeaderActions({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"flex items-center gap-1.5\", className)} {...props} />;\n },\n);\nAppHeaderActions.displayName = \"AppHeaderActions\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * PageHeader — top-of-page title block: eyebrow → headline → meta row.\n * Ports `.page-header` rules from `_shared.css` (lines 486-498).\n *\n * `title` is a string per the consumer-side contract (see\n * `assure-pro-spec/from-lighttaxes-claude.md`, \"Page header\" section).\n * If a consumer needs richer markup in the headline they should compose\n * around PageHeader rather than via this prop.\n */\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n /** Slot above the title — usually `<Eyebrow numeric>`. */\n eyebrow?: React.ReactNode;\n /** Page title text. */\n title: string;\n /** Slot below the title for pills, specs, separators. */\n meta?: React.ReactNode;\n}\n\nexport const PageHeader = forwardRef<HTMLElement, PageHeaderProps>(function PageHeader(\n { eyebrow, title, meta, className, ...props },\n ref,\n) {\n return (\n <header ref={ref} className={cn(\"mb-7\", className)} {...props}>\n {eyebrow && <div className=\"mb-1.5\">{eyebrow}</div>}\n <h1 className=\"font-display text-fg text-[26px] leading-tight tracking-tight\">{title}</h1>\n {meta && <div className=\"text-fg-3 mt-2 flex items-center gap-2 text-sm\">{meta}</div>}\n </header>\n );\n});\nPageHeader.displayName = \"PageHeader\";\n\nexport type PageHeaderSpecProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * PageHeaderSpec — small `.spec`-style span (Geist Mono w/ tnum/lnum/ss01).\n * Used inside the `meta` slot for numeric facts (\"4 due today\",\n * \"EIN ·· 12-3456789\").\n */\nexport const PageHeaderSpec = forwardRef<HTMLSpanElement, PageHeaderSpecProps>(\n function PageHeaderSpec({ className, style, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"font-spec text-fg-3 text-xs\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nPageHeaderSpec.displayName = \"PageHeaderSpec\";\n\nexport type PageHeaderSepProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** PageHeaderSep — the `·` dot separator used between meta items. */\nexport const PageHeaderSep = forwardRef<HTMLSpanElement, PageHeaderSepProps>(function PageHeaderSep(\n { children, className, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n role=\"presentation\"\n className={cn(\"text-fg-4\", className)}\n {...props}\n >\n {children ?? \"·\"}\n </span>\n );\n});\nPageHeaderSep.displayName = \"PageHeaderSep\";\n","\"use client\";\n\nimport { forwardRef, useCallback, useState, type ReactNode } from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Input } from \"../primitives/input\";\nimport { Pagination } from \"../primitives/pagination\";\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n ChevronsUpDownIcon,\n SearchIcon,\n} from \"../primitives/icons\";\n/* ============================================================\n DataTable — composite chrome around the Table primitive.\n\n Ports `.data-table*` rules from `assure-pro-spec/mockups/_shared.css`\n (lines 542-633) and the `03-clients-list.html` mockup. Composes the\n existing `Table` styling but re-exports under `DataTable*` names so\n the consumer-side codemod (326 sites) can swap in one shot without\n touching the underlying primitive.\n\n Public API — names are locked by the consumer contract in\n `assure-pro-spec/from-lighttaxes-claude.md` (lines 64-69).\n ============================================================ */\n\n/* ── Frame ────────────────────────────────────────────────── */\n\nexport interface DataTableProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, renders the table card with a flat top edge so it\n * visually attaches to a `<DataTableToolbar>` above it. */\n withToolbar?: boolean;\n}\n\n/**\n * DataTable — outer wrapper. Children are typically:\n * <DataTableToolbar /> + <table> + <DataTablePagination />.\n *\n * The `<table>` is hand-written by the consumer; this wrapper renders\n * the surface card chrome on its descendant `<table>` element via a\n * Tailwind arbitrary-variant selector. When `withToolbar` is set, the\n * top corners flatten so the table visually joins the toolbar above.\n *\n * Children render in document order — toolbar (if any) then `<table>`\n * then pagination — with the table card and the pagination not sharing\n * a background.\n */\nexport const DataTable = forwardRef<HTMLDivElement, DataTableProps>(function DataTable(\n { withToolbar, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n // Surface card chrome on the descendant `<table>`.\n \"[&_table]:bg-surface [&_table]:w-full [&_table]:border-collapse\",\n \"[&_table]:border-rule [&_table]:border\",\n withToolbar ? \"[&_table]:rounded-b-card [&_table]:border-t-0\" : \"[&_table]:rounded-card\",\n // Clip cell backgrounds at the rounded corners.\n \"[&_table]:overflow-hidden\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n});\nDataTable.displayName = \"DataTable\";\n\n/* ── Toolbar ──────────────────────────────────────────────── */\n\nexport type DataTableToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * DataTableToolbar — top row above the table. Renders the same surface\n * card as `<table>`, but with rounded corners only on top so the table\n * below visually attaches to it (see `.toolbar` rules in `_shared.css`,\n * lines 592-633).\n */\nexport const DataTableToolbar = forwardRef<HTMLDivElement, DataTableToolbarProps>(\n function DataTableToolbar({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-2 px-3 py-2.5\",\n \"rounded-t-card border-rule bg-surface border\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableToolbar.displayName = \"DataTableToolbar\";\n\nexport interface DataTableSearchProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> {\n /** Override the default placeholder. */\n placeholder?: string;\n}\n\n/**\n * DataTableSearch — small search input slot inside the toolbar. Wraps\n * the `Input` primitive at `inputSize=\"sm\"` with a leading search icon.\n */\nexport const DataTableSearch = forwardRef<HTMLInputElement, DataTableSearchProps>(\n function DataTableSearch({ placeholder = \"Search…\", className, ...props }, ref) {\n return (\n <Input\n ref={ref}\n type=\"search\"\n inputSize=\"sm\"\n placeholder={placeholder}\n prefixIcon={<SearchIcon aria-hidden=\"true\" />}\n className={cn(\"w-[280px]\", className)}\n {...props}\n />\n );\n },\n);\nDataTableSearch.displayName = \"DataTableSearch\";\n\nexport type DataTableSpacerProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** DataTableSpacer — `flex-1` spacer for arranging toolbar items. */\nexport const DataTableSpacer = forwardRef<HTMLSpanElement, DataTableSpacerProps>(\n function DataTableSpacer({ className, ...props }, ref) {\n return <span ref={ref} aria-hidden=\"true\" className={cn(\"flex-1\", className)} {...props} />;\n },\n);\nDataTableSpacer.displayName = \"DataTableSpacer\";\n\nexport interface DataTableResultsCountProps extends Omit<\n React.HTMLAttributes<HTMLSpanElement>,\n \"children\"\n> {\n current: number;\n total: number;\n}\n\n/**\n * DataTableResultsCount — small spec-styled \"12 of 247\" indicator.\n * Mono + tabular per `.results-count` (`_shared.css` lines 628-633).\n */\nexport const DataTableResultsCount = forwardRef<HTMLSpanElement, DataTableResultsCountProps>(\n function DataTableResultsCount({ current, total, className, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\"text-fg-4 mr-1 font-mono text-[11px] tabular-nums\", className)}\n {...props}\n >\n {current.toLocaleString()} of {total.toLocaleString()}\n </span>\n );\n },\n);\nDataTableResultsCount.displayName = \"DataTableResultsCount\";\n\n/* ── Table sections ───────────────────────────────────────── */\n\n/**\n * DataTableHead — wraps `<thead>`. Renders the surface-2 header row\n * with the rule-bottom divider (`.data-table th` styling lives on the\n * `DataTableHeader` cells themselves).\n */\nexport type DataTableHeadProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const DataTableHead = forwardRef<HTMLTableSectionElement, DataTableHeadProps>(\n function DataTableHead({ className, ...props }, ref) {\n return (\n <thead ref={ref} className={cn(\"[&_tr]:border-rule [&_tr]:border-b\", className)} {...props} />\n );\n },\n);\nDataTableHead.displayName = \"DataTableHead\";\n\nexport type DataTableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;\n\n/** DataTableBody — wraps `<tbody>`. Last row drops its bottom border. */\nexport const DataTableBody = forwardRef<HTMLTableSectionElement, DataTableBodyProps>(\n function DataTableBody({ className, ...props }, ref) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n },\n);\nDataTableBody.displayName = \"DataTableBody\";\n\nexport interface DataTableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** Pro-tinted highlight for the current selection. */\n selected?: boolean;\n}\n\n/**\n * DataTableRow — `<tr>` with hover styling. `selected` switches the\n * row to the Pro-bg highlight (matches `data-[state=selected]` on the\n * Table primitive).\n */\nexport const DataTableRow = forwardRef<HTMLTableRowElement, DataTableRowProps>(\n function DataTableRow({ selected, className, ...props }, ref) {\n return (\n <tr\n ref={ref}\n data-state={selected ? \"selected\" : undefined}\n className={cn(\n \"border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n // Selected hover stays in the Pro tint (G15) — when both states fire,\n // hover:bg-bg-2 was previously winning and dropping the row out of\n // the selected tint, which read as the row deselecting on hover.\n selected ? \"bg-pro-bg hover:bg-pro-bg-hover\" : \"hover:bg-bg-2\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableRow.displayName = \"DataTableRow\";\n\n/* ── Header cell ──────────────────────────────────────────── */\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface DataTableHeaderProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** When true, the cell becomes a clickable button that toggles sort\n * state and renders a chevron indicator. */\n sortable?: boolean;\n /** Initial sort direction when the header mounts in a sorted state. */\n defaultSort?: SortDirection;\n /** Optional controlled sort state. When provided, `onSortChange` should\n * also be wired up — the header becomes fully controlled. */\n sort?: SortDirection | null;\n /** Fires whenever the user clicks a sortable header. */\n onSortChange?: (sort: SortDirection | null) => void;\n}\n\n/**\n * DataTableHeader — `<th>` cell. Mono uppercase label with optional\n * sort indicator. Sort cycle when uncontrolled:\n * unsorted → asc → desc → unsorted (3-state).\n * `defaultSort` seeds the initial state. Pass `sort` + `onSortChange`\n * for fully-controlled usage when an upstream store owns the sort.\n */\nexport const DataTableHeader = forwardRef<HTMLTableCellElement, DataTableHeaderProps>(\n function DataTableHeader(\n {\n sortable = false,\n defaultSort,\n sort: controlledSort,\n onSortChange,\n children,\n className,\n ...props\n },\n ref,\n ) {\n const [uncontrolledSort, setUncontrolledSort] = useState<SortDirection | null>(\n defaultSort ?? null,\n );\n const isControlled = controlledSort !== undefined;\n const currentSort = isControlled ? controlledSort : uncontrolledSort;\n\n const handleClick = useCallback(() => {\n if (!sortable) return;\n const next: SortDirection | null =\n currentSort === null ? \"asc\" : currentSort === \"asc\" ? \"desc\" : null;\n if (!isControlled) setUncontrolledSort(next);\n onSortChange?.(next);\n }, [sortable, currentSort, isControlled, onSortChange]);\n\n const indicator = sortable ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"text-fg-5 ml-1 inline-flex shrink-0 items-center justify-center\",\n currentSort && \"text-fg-3\",\n )}\n >\n {currentSort === \"asc\" ? (\n <ChevronUpIcon className=\"size-3\" strokeWidth={2.2} />\n ) : currentSort === \"desc\" ? (\n <ChevronDownIcon className=\"size-3\" strokeWidth={2.2} />\n ) : (\n <ChevronsUpDownIcon className=\"size-3\" strokeWidth={2} />\n )}\n </span>\n ) : null;\n\n const ariaSort: React.AriaAttributes[\"aria-sort\"] = sortable\n ? currentSort === \"asc\"\n ? \"ascending\"\n : currentSort === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined;\n\n return (\n <th\n ref={ref}\n scope=\"col\"\n aria-sort={ariaSort}\n className={cn(\n \"h-9 px-3.5 py-2 text-left align-middle whitespace-nowrap\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 bg-surface-2\",\n \"border-rule border-b\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n \"-mx-1 -my-1 inline-flex items-center gap-1 rounded-[4px] px-1 py-1\",\n \"font-mono text-[10px] font-medium tracking-[0.12em] uppercase\",\n \"text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n \"hover:text-fg-2\",\n \"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none\",\n )}\n >\n {children}\n {indicator}\n </button>\n ) : (\n children\n )}\n </th>\n );\n },\n);\nDataTableHeader.displayName = \"DataTableHeader\";\n\n/* ── Body cells ───────────────────────────────────────────── */\n\nconst cellBase = \"px-3.5 py-2.5 align-middle\";\n\nexport type DataTableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;\n\n/** DataTableCell — default cell, 13px / fg-2. */\nexport const DataTableCell = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCell({ className, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(\n cellBase,\n \"text-fg-2 text-[13px]\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nDataTableCell.displayName = \"DataTableCell\";\n\n/**\n * DataTableCellName — primary identifier of the row. Display font,\n * fg color, medium weight (matches `.cell-name` in `_shared.css`\n * line 586).\n */\nexport const DataTableCellName = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellName({ className, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-display text-fg text-[13px] font-medium\", className)}\n {...props}\n />\n );\n },\n);\nDataTableCellName.displayName = \"DataTableCellName\";\n\n/**\n * DataTableCellMono — currency / IDs / numerics. Geist Mono with\n * tabular numerals and the same tight tracking the spec uses\n * (`.cell-mono`, `_shared.css` lines 579-584).\n */\nexport const DataTableCellMono = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellMono({ className, style, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-spec text-fg-2 text-[12.5px]\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nDataTableCellMono.displayName = \"DataTableCellMono\";\n\n/**\n * DataTableCellId — muted mono ID (EIN, UUID, \"5h ago\"). Matches\n * `.cell-mono.cell-id` from the spec.\n */\nexport const DataTableCellId = forwardRef<HTMLTableCellElement, DataTableCellProps>(\n function DataTableCellId({ className, style, ...props }, ref) {\n return (\n <td\n ref={ref}\n className={cn(cellBase, \"font-spec text-fg-4 text-xs\", className)}\n style={style}\n {...props}\n />\n );\n },\n);\nDataTableCellId.displayName = \"DataTableCellId\";\n\n/* ── Due-date cell ────────────────────────────────────────── */\n\nconst MS_PER_DAY = 86_400_000;\nconst DUE_NEAR_THRESHOLD_DAYS = 14;\n\nconst dueDateFormatter = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n});\n\nexport interface DataTableCellDueProps extends Omit<\n React.TdHTMLAttributes<HTMLTableCellElement>,\n \"children\"\n> {\n /** Date this row is due. */\n value: Date;\n /** Optional override for the displayed label (defaults to the\n * formatted date). */\n children?: ReactNode;\n}\n\n/**\n * DataTableCellDue — accepts a Date and auto-colors:\n * diff < 0 → text-danger-fg (overdue)\n * diff < 14d → text-warning-fg (due-near)\n * otherwise → text-fg-3 (default)\n *\n * The 14-day threshold and day-rounding (`Math.floor`) match the\n * `.cell-due-near` / `.cell-due-overdue` CSS classes in the mockup.\n */\nexport const DataTableCellDue = forwardRef<HTMLTableCellElement, DataTableCellDueProps>(\n function DataTableCellDue({ value, children, className, style, ...props }, ref) {\n const days = Math.floor((value.getTime() - Date.now()) / MS_PER_DAY);\n const tone =\n days < 0\n ? \"text-danger-fg font-medium\"\n : days < DUE_NEAR_THRESHOLD_DAYS\n ? \"text-warning-fg font-medium\"\n : \"text-fg-3\";\n\n const ariaState = days < 0 ? \"overdue\" : days < DUE_NEAR_THRESHOLD_DAYS ? \"near\" : \"future\";\n\n return (\n <td\n ref={ref}\n data-due-state={ariaState}\n className={cn(cellBase, \"font-spec text-[12.5px]\", tone, className)}\n style={style}\n {...props}\n >\n {children ?? dueDateFormatter.format(value)}\n </td>\n );\n },\n);\nDataTableCellDue.displayName = \"DataTableCellDue\";\n\n/* ── Checkbox cell ────────────────────────────────────────── */\n\nexport interface DataTableCheckboxProps extends Omit<\n React.TdHTMLAttributes<HTMLTableCellElement>,\n \"onChange\" | \"defaultChecked\"\n> {\n /** Forwarded to the inner `Checkbox` primitive. */\n checked?: boolean | \"indeterminate\";\n defaultChecked?: boolean | \"indeterminate\";\n onCheckedChange?: (checked: boolean | \"indeterminate\") => void;\n /** Accessible label for the checkbox (e.g. \"Select row Acme Corp.\"). */\n ariaLabel?: string;\n disabled?: boolean;\n /** Render the cell as `<th>` (for the select-all header) instead of `<td>`. */\n asHeader?: boolean;\n}\n\n/**\n * DataTableCheckbox — `<td>` containing the row-selection checkbox.\n * Tightened to a 32px column with no right padding to match\n * `.row-checkbox` in the spec.\n */\nexport const DataTableCheckbox = forwardRef<HTMLTableCellElement, DataTableCheckboxProps>(\n function DataTableCheckbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n ariaLabel,\n disabled,\n asHeader,\n className,\n ...props\n },\n ref,\n ) {\n const Cell = (asHeader ? \"th\" : \"td\") as \"td\";\n return (\n <Cell\n ref={ref}\n className={cn(\n \"w-8 px-3.5 py-2.5 pr-0 align-middle\",\n asHeader && \"bg-surface-2 border-rule h-9 border-b\",\n className,\n )}\n {...props}\n >\n <Checkbox\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n aria-label={ariaLabel}\n />\n </Cell>\n );\n },\n);\nDataTableCheckbox.displayName = \"DataTableCheckbox\";\n\n/* ── Pagination ───────────────────────────────────────────── */\n\nexport interface DataTablePaginationProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"onChange\"\n> {\n /** 1-indexed current page. */\n current: number;\n /** Total number of items across all pages. */\n total: number;\n /** Items per page. Default 25. */\n pageSize?: number;\n onPageChange?: (page: number) => void;\n siblingCount?: number;\n}\n\n/**\n * DataTablePagination — full pagination strip. Wraps the existing\n * `Pagination` primitive: derives `pageCount` from `total / pageSize`\n * and forwards the page label (\"1–25 of 327\"). Page size defaults to\n * 25 (the consumer contract did not specify; this matches the most\n * common firm-app table page size).\n */\nexport const DataTablePagination = forwardRef<HTMLElement, DataTablePaginationProps>(\n function DataTablePagination(\n { current, total, pageSize = 25, onPageChange, siblingCount, className, ...props },\n ref,\n ) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n return (\n <Pagination\n ref={ref}\n currentPage={current}\n totalPages={totalPages}\n onPageChange={onPageChange ?? (() => {})}\n siblingCount={siblingCount}\n totalItems={total}\n pageSize={pageSize}\n className={cn(\"mt-4\", className)}\n {...props}\n />\n );\n },\n);\nDataTablePagination.displayName = \"DataTablePagination\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Avatar } from \"../primitives/avatar\";\n\n/**\n * Detail layout composites — port of the `.detail-grid` / `.detail-spine`\n * pattern from `_shared.css` (lines 814-822) and the canonical detail page\n * mockup (`assure-pro-spec/mockups/04-client-detail.html`).\n *\n * Two-column layout: a sticky left rail (the \"spine\", 320px) holding\n * identity + key facts, and a scrollable main column for tabs, sections,\n * tables, and activity feeds.\n */\n\n/* -------------------------------------------------------------------------- */\n/* DetailGrid — outermost 2-column container */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailGridProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const DetailGrid = forwardRef<HTMLDivElement, DetailGridProps>(function DetailGrid(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"grid grid-cols-1 items-start gap-6 lg:grid-cols-[320px_1fr] lg:gap-9\",\n className,\n )}\n {...props}\n />\n );\n});\nDetailGrid.displayName = \"DetailGrid\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpine — left rail card */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailSpineProps = React.HTMLAttributes<HTMLElement>;\n\nexport const DetailSpine = forwardRef<HTMLElement, DetailSpineProps>(function DetailSpine(\n { className, ...props },\n ref,\n) {\n return (\n <aside\n ref={ref}\n className={cn(\n \"rounded-card border-rule bg-surface shadow-quiet border p-[18px]\",\n \"space-y-4\",\n \"lg:sticky lg:top-[calc(var(--shell-header-h)+24px)] lg:self-start\",\n className,\n )}\n {...props}\n />\n );\n});\nDetailSpine.displayName = \"DetailSpine\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineHeader — avatar + name + subtitle */\n/* -------------------------------------------------------------------------- */\n\nexport interface DetailSpineHeaderProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"title\"\n> {\n /** Image src or initials/name string passed through to <Avatar>. */\n avatar: string;\n /** Display name / entity title. */\n title: string;\n /** Smaller line under the title — entity type, classification, etc. */\n subtitle: string;\n}\n\nexport const DetailSpineHeader = forwardRef<HTMLDivElement, DetailSpineHeaderProps>(\n function DetailSpineHeader({ avatar, title, subtitle, className, ...props }, ref) {\n const isImageSrc = /^(https?:|data:|\\/)/i.test(avatar);\n\n return (\n <div ref={ref} className={cn(\"flex items-center gap-3\", className)} {...props}>\n <Avatar\n size=\"lg\"\n src={isImageSrc ? avatar : undefined}\n name={isImageSrc ? title : avatar}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-display text-fg truncate text-base leading-tight font-medium\">\n {title}\n </div>\n <div className=\"font-spec text-fg-4 text-[11px]\">{subtitle}</div>\n </div>\n </div>\n );\n },\n);\nDetailSpineHeader.displayName = \"DetailSpineHeader\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineSection — eyebrow-labeled sub-block inside the spine */\n/* -------------------------------------------------------------------------- */\n\nexport interface DetailSpineSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Small caps label rendered above the section content. */\n eyebrow: string;\n}\n\nexport const DetailSpineSection = forwardRef<HTMLDivElement, DetailSpineSectionProps>(\n function DetailSpineSection({ eyebrow, children, className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"border-rule-soft border-t pt-3\", className)} {...props}>\n <div className=\"text-fg-4 mb-2 font-mono text-[10.5px] font-medium tracking-[0.14em] uppercase\">\n {eyebrow}\n </div>\n {children}\n </div>\n );\n },\n);\nDetailSpineSection.displayName = \"DetailSpineSection\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailSpineStats — 2-col grid container for <Stat> primitives */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailSpineStatsProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const DetailSpineStats = forwardRef<HTMLDivElement, DetailSpineStatsProps>(\n function DetailSpineStats({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-2 gap-x-3 gap-y-3.5\", className)} {...props} />\n );\n },\n);\nDetailSpineStats.displayName = \"DetailSpineStats\";\n\n/* -------------------------------------------------------------------------- */\n/* DetailMain — right side, scrollable page content */\n/* -------------------------------------------------------------------------- */\n\nexport type DetailMainProps = React.HTMLAttributes<HTMLElement>;\n\nexport const DetailMain = forwardRef<HTMLElement, DetailMainProps>(function DetailMain(\n { className, ...props },\n ref,\n) {\n return <section ref={ref} className={cn(\"min-w-0 flex-1 space-y-6\", className)} {...props} />;\n});\nDetailMain.displayName = \"DetailMain\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * ActivityList — vertical feed of activity rows.\n * Ports `.activity-list` / `.activity-item` from `_shared.css` (lines 635-664)\n * with the simplified row API from `from-lighttaxes-claude.md` (line 71):\n *\n * <ActivityList>\n * <ActivityItem dot=\"success\" actor=\"Anna\" text=\"filed\" target=\"1120S\" time=\"2h ago\" />\n * </ActivityList>\n */\n\nexport type ActivityListProps = React.HTMLAttributes<HTMLUListElement>;\n\nexport const ActivityList = forwardRef<HTMLUListElement, ActivityListProps>(function ActivityList(\n { className, children, ...props },\n ref,\n) {\n return (\n <ul ref={ref} className={cn(\"flex flex-col\", className)} {...props}>\n {children}\n </ul>\n );\n});\nActivityList.displayName = \"ActivityList\";\n\nexport type ActivityDotVariant = \"default\" | \"success\" | \"warn\" | \"accent\";\n\nconst dotClass: Record<ActivityDotVariant, string> = {\n default: \"bg-fg-4\",\n success: \"bg-success-fg\",\n warn: \"bg-warning-fg\",\n accent: \"bg-accent\",\n};\n\nexport interface ActivityItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, \"children\"> {\n dot?: ActivityDotVariant;\n actor: string;\n text: string;\n target?: string;\n time: string;\n}\n\nexport const ActivityItem = forwardRef<HTMLLIElement, ActivityItemProps>(function ActivityItem(\n { dot = \"default\", actor, text, target, time, className, ...props },\n ref,\n) {\n return (\n <li\n ref={ref}\n className={cn(\n \"border-rule-soft flex items-center gap-2 border-b py-2 text-sm last:border-0\",\n className,\n )}\n {...props}\n >\n <span aria-hidden=\"true\" className={cn(\"size-1.5 shrink-0 rounded-full\", dotClass[dot])} />\n <span className=\"text-fg-2 font-medium\">{actor}</span>\n <span className=\"text-fg-3\">{text}</span>\n {target && <span className=\"text-accent hover:underline\">{target}</span>}\n <span className=\"text-fg-4 ml-auto text-xs tabular-nums\">{time}</span>\n </li>\n );\n});\nActivityItem.displayName = \"ActivityItem\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Kanban — flex container for board columns.\n * Ports `.kanban` / `.kanban-col` / `.kanban-card` from `_shared.css`\n * (lines 700-778). API per `from-lighttaxes-claude.md` line 81-84.\n */\n\nexport type KanbanProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Kanban = forwardRef<HTMLDivElement, KanbanProps>(function Kanban(\n { className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex items-start gap-4 overflow-x-auto\", className)} {...props}>\n {children}\n </div>\n );\n});\nKanban.displayName = \"Kanban\";\n\nexport interface KanbanColumnProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: string;\n count: number;\n}\n\nexport const KanbanColumn = forwardRef<HTMLDivElement, KanbanColumnProps>(function KanbanColumn(\n { title, count, className, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex max-w-[320px] min-w-[280px] flex-1 flex-col gap-3\", className)}\n {...props}\n >\n <div className=\"text-fg-2 flex items-center justify-between text-sm font-medium\">\n <span>{title}</span>\n <span className=\"bg-bg-2 text-fg-3 rounded-pill px-2 py-0.5 text-xs tabular-nums\">\n {count}\n </span>\n </div>\n <div className=\"flex flex-col gap-2\">{children}</div>\n </div>\n );\n});\nKanbanColumn.displayName = \"KanbanColumn\";\n\nexport const kanbanCardVariants = cva(\n cn(\n \"bg-surface border border-rule rounded-card shadow-quiet p-3 space-y-2 cursor-grab\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none\",\n ),\n {\n variants: {\n variant: {\n default: \"\",\n pro: \"border-l-2 border-l-pro-fg\",\n warn: \"border-l-2 border-l-warning-fg\",\n danger: \"border-l-2 border-l-danger-fg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface KanbanCardProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof kanbanCardVariants> {}\n\nexport const KanbanCard = forwardRef<HTMLDivElement, KanbanCardProps>(function KanbanCard(\n { variant, className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(kanbanCardVariants({ variant }), className)} {...props}>\n {children}\n </div>\n );\n});\nKanbanCard.displayName = \"KanbanCard\";\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Toolbar — horizontal row of controls used above lists, dashboards, etc.\n * Ports `.toolbar` from `_shared.css` (lines 591-633). FilterChip is a\n * simpler atom than `MultiFilterPill` — single filter, not multi-select.\n */\n\nexport type ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Toolbar = forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar(\n { className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex items-center gap-2\", className)} {...props}>\n {children}\n </div>\n );\n});\nToolbar.displayName = \"Toolbar\";\n\nexport const filterChipVariants = cva(\n cn(\n \"inline-flex items-center gap-1.5 h-8 px-3 rounded-pill text-xs font-medium border\",\n \"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]\",\n \"motion-reduce:transition-none\",\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled disabled:border-rule\",\n ),\n {\n variants: {\n active: {\n true: \"bg-pro-bg text-pro-fg border-pro-fg/30 hover:bg-pro-bg-hover\",\n false: \"bg-bg-2 text-fg-2 border-rule hover:bg-bg-3\",\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n\nexport interface FilterChipProps\n extends\n Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof VariantProps<typeof filterChipVariants>\n >,\n VariantProps<typeof filterChipVariants> {\n count?: number;\n}\n\nexport const FilterChip = forwardRef<HTMLButtonElement, FilterChipProps>(function FilterChip(\n { active = false, count, className, children, type, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n type={type ?? \"button\"}\n aria-pressed={active ?? false}\n className={cn(filterChipVariants({ active }), className)}\n {...props}\n >\n {children}\n {typeof count === \"number\" && (\n <span className=\"font-mono text-[10.5px] tabular-nums\">{count}</span>\n )}\n </button>\n );\n});\nFilterChip.displayName = \"FilterChip\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { Button, type ButtonProps } from \"../primitives/button\";\nimport { LinkButton } from \"../primitives/link-button\";\nimport { cn } from \"../lib/cn\";\n\nimport { ArrowRightIcon } from \"../primitives/icons\";\n/**\n * Intent-named action wrappers (Phase 4).\n *\n * Thin wrappers over Button / LinkButton. Bake in the right variant + size\n * so the correct call is shorter than the raw call.\n *\n * Note: `Button` has no `variant=\"icon\"`. `IconAction` uses `variant=\"ghost\"`\n * + `size=\"icon\"` (the existing icon size token).\n */\n\ntype LinkButtonProps = React.ComponentProps<typeof LinkButton>;\n\nexport interface PrimaryActionProps extends Omit<ButtonProps, \"variant\" | \"size\"> {\n arrow?: boolean;\n}\n\nexport const PrimaryAction = forwardRef<HTMLButtonElement, PrimaryActionProps>(\n function PrimaryAction({ arrow, iconRight, children, className, ...props }, ref) {\n return (\n <Button\n ref={ref}\n variant=\"accent\"\n size=\"sm\"\n iconRight={arrow ? <ArrowRightIcon className=\"size-4\" /> : iconRight}\n className={cn(className)}\n {...props}\n >\n {children}\n </Button>\n );\n },\n);\nPrimaryAction.displayName = \"PrimaryAction\";\n\nexport type SecondaryActionProps = Omit<ButtonProps, \"variant\" | \"size\">;\n\nexport const SecondaryAction = forwardRef<HTMLButtonElement, SecondaryActionProps>(\n function SecondaryAction({ className, children, ...props }, ref) {\n return (\n <Button ref={ref} variant=\"ghost\" size=\"sm\" className={cn(className)} {...props}>\n {children}\n </Button>\n );\n },\n);\nSecondaryAction.displayName = \"SecondaryAction\";\n\nexport interface DangerActionProps extends Omit<ButtonProps, \"variant\" | \"size\" | \"onClick\"> {\n /** Required — explicit name forces the consumer to acknowledge intent. */\n onConfirm: () => void;\n}\n\nexport const DangerAction = forwardRef<HTMLButtonElement, DangerActionProps>(function DangerAction(\n { onConfirm, className, children, ...props },\n ref,\n) {\n return (\n <Button\n ref={ref}\n variant=\"destructive\"\n size=\"sm\"\n onClick={onConfirm}\n className={cn(className)}\n {...props}\n >\n {children}\n </Button>\n );\n});\nDangerAction.displayName = \"DangerAction\";\n\nexport interface IconActionProps extends Omit<ButtonProps, \"variant\" | \"size\"> {\n /** Required — icon-only buttons must announce themselves to assistive tech. */\n \"aria-label\": string;\n}\n\nexport const IconAction = forwardRef<HTMLButtonElement, IconActionProps>(function IconAction(\n { className, children, ...props },\n ref,\n) {\n return (\n <Button ref={ref} variant=\"ghost\" size=\"icon\" className={cn(className)} {...props}>\n {children}\n </Button>\n );\n});\nIconAction.displayName = \"IconAction\";\n\nexport interface LinkActionProps extends Omit<LinkButtonProps, \"variant\" | \"size\"> {\n arrow?: boolean;\n}\n\nexport const LinkAction = forwardRef<HTMLAnchorElement, LinkActionProps>(function LinkAction(\n { arrow, iconRight, children, className, ...props },\n ref,\n) {\n return (\n <LinkButton\n ref={ref}\n variant=\"ghost\"\n size=\"sm\"\n iconRight={arrow ? <ArrowRightIcon className=\"size-4\" /> : iconRight}\n className={cn(className)}\n {...props}\n >\n {children}\n </LinkButton>\n );\n});\nLinkAction.displayName = \"LinkAction\";\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\n/**\n * Intent-named atom wrappers (Phase 4).\n *\n * Thin <span>/<div>/<kbd> wrappers that bake in the right typography +\n * color tokens. Compose with the addressable utility classes in tokens.css\n * (`.tabular`, `.font-spec`, `.eyebrow`, `.eyebrow-num`).\n */\n\nexport type NumericProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const Numeric = forwardRef<HTMLSpanElement, NumericProps>(function Numeric(\n { className, children, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"tabular font-mono\", className)} {...props}>\n {children}\n </span>\n );\n});\nNumeric.displayName = \"Numeric\";\n\nexport type MutedSpecProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const MutedSpec = forwardRef<HTMLSpanElement, MutedSpecProps>(function MutedSpec(\n { className, children, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"font-spec text-fg-3\", className)} {...props}>\n {children}\n </span>\n );\n});\nMutedSpec.displayName = \"MutedSpec\";\n\nexport interface EyebrowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, switches to spec font + Pro purple (the `01 — Today` pattern). */\n numeric?: boolean;\n}\n\nexport const Eyebrow = forwardRef<HTMLDivElement, EyebrowProps>(function Eyebrow(\n { numeric, className, children, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cn(numeric ? \"eyebrow-num\" : \"eyebrow\", className)} {...props}>\n {children}\n </div>\n );\n});\nEyebrow.displayName = \"Eyebrow\";\n\nexport type KbdHintProps = React.HTMLAttributes<HTMLElement>;\n\nexport const KbdHint = forwardRef<HTMLElement, KbdHintProps>(function KbdHint(\n { className, children, ...props },\n ref,\n) {\n return (\n <kbd\n ref={ref}\n className={cn(\n \"rounded-icon inline-flex h-5 min-w-5 items-center justify-center px-1.5\",\n \"border-rule bg-bg-2 text-fg-3 border font-mono text-[10.5px]\",\n className,\n )}\n {...props}\n >\n {children}\n </kbd>\n );\n});\nKbdHint.displayName = \"KbdHint\";\n"]}
|