@quinkit/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +1445 -0
- package/dist/index.d.ts +1445 -0
- package/dist/index.js +2567 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2366 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +97 -0
- package/src/styles/globals.css +150 -0
- package/src/styles/theme-switcher.tsx +95 -0
- package/src/styles/themes/.gitkeep +0 -0
- package/src/styles/themes/dashboard-data.css +64 -0
- package/src/styles/themes/dashboard-executive.css +64 -0
- package/src/styles/themes/dashboard-glass.css +64 -0
- package/src/styles/themes/dashboard.css +46 -0
- package/src/styles/themes/ecommerce-luxury.css +64 -0
- package/src/styles/themes/ecommerce-minimal.css +64 -0
- package/src/styles/themes/ecommerce-playful.css +64 -0
- package/src/styles/themes/ecommerce.css +36 -0
- package/src/styles/themes/edtech-campus.css +64 -0
- package/src/styles/themes/edtech-kids.css +64 -0
- package/src/styles/themes/edtech-professional.css +64 -0
- package/src/styles/themes/edtech.css +36 -0
- package/src/styles/themes/fintech-crypto.css +64 -0
- package/src/styles/themes/fintech-modern.css +64 -0
- package/src/styles/themes/fintech-wealth.css +64 -0
- package/src/styles/themes/fintech.css +46 -0
- package/src/styles/themes/healthcare-clinical.css +64 -0
- package/src/styles/themes/healthcare-urgent.css +64 -0
- package/src/styles/themes/healthcare-wellness.css +64 -0
- package/src/styles/themes/healthcare.css +46 -0
- package/src/styles/tokens/.gitkeep +0 -0
- package/src/styles/tokens/charts.css +26 -0
- package/src/styles/tokens/dark.css +36 -0
- package/src/styles/tokens/palettes.css +2663 -0
- package/src/styles/tokens/primitives.css +34 -0
- package/src/styles/tokens/semantic.css +35 -0
- package/src/styles/tokens/typography.css +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useDebounce.ts","../src/hooks/useMediaQuery.ts","../src/lib/palettes.ts","../src/hooks/useTheme.ts","../src/lib/fonts.ts","../src/utils/cn.ts","../src/components/atoms/avatar/avatar.tsx","../src/components/atoms/badge/badge.tsx","../src/components/atoms/button/button.tsx","../src/components/atoms/checkbox/checkbox.tsx","../src/components/atoms/input/input.tsx","../src/components/atoms/label/label.tsx","../src/components/atoms/radio-group/radio-group.tsx","../src/components/atoms/select/select.tsx","../src/components/atoms/separator/separator.tsx","../src/components/atoms/spinner/spinner.tsx","../src/components/atoms/switch/switch.tsx","../src/components/atoms/textarea/textarea.tsx","../src/components/data-feedback/alert/alert.tsx","../src/components/data-feedback/aspect-ratio/aspect-ratio.tsx","../src/components/data-feedback/breadcrumb/breadcrumb.tsx","../src/components/data-feedback/calendar/calendar.tsx","../src/components/data-feedback/table/table.tsx","../src/components/data-feedback/data-table/data-table.tsx","../src/components/molecules/popover/popover.tsx","../src/components/data-feedback/date-range-picker/date-range-picker.tsx","../src/components/data-feedback/pagination/pagination.tsx","../src/components/data-feedback/progress/progress.tsx","../src/components/data-feedback/scroll-area/scroll-area.tsx","../src/components/data-feedback/skeleton/skeleton.tsx","../src/components/molecules/accordion/accordion.tsx","../src/components/molecules/alert-dialog/alert-dialog.tsx","../src/components/molecules/card/card.tsx","../src/components/molecules/dialog/dialog.tsx","../src/components/molecules/command/command.tsx","../src/components/molecules/dropdown-menu/dropdown-menu.tsx","../src/components/molecules/navigation-menu/navigation-menu.tsx","../src/components/molecules/sheet/sheet.tsx","../src/components/molecules/tabs/tabs.tsx","../src/components/molecules/tooltip/tooltip.tsx","../src/components/molecules/toast/toast.tsx","../src/components/organisms/combobox/combobox.tsx","../src/components/organisms/form/form.tsx","../src/components/organisms/sidebar/sidebar.tsx","../src/styles/theme-switcher.tsx","../src/utils/formatters.ts"],"names":["useState","useEffect","useCallback","twMerge","clsx","forwardRef","jsx","AvatarPrimitive","jsxs","CheckboxPrimitive","LabelPrimitive","RadioGroupPrimitive","SelectPrimitive","SeparatorPrimitive","SwitchPrimitive","AspectRatioPrimitive","DayPicker","useReactTable","getCoreRowModel","getSortedRowModel","getFilteredRowModel","getPaginationRowModel","flexRender","PopoverPrimitive","format","ProgressPrimitive","ScrollAreaPrimitive","AccordionPrimitive","AlertDialogPrimitive","DialogPrimitive","CommandPrimitive","DropdownMenuPrimitive","NavigationMenuPrimitive","DialogPrimitive2","TabsPrimitive","TooltipPrimitive","SonnerToaster","useMemo","FormProvider","createContext","Controller","useContext","useFormContext","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useDebounce<TValue>(value: TValue, delayMs = 300): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const timeout = window.setTimeout(() => setDebouncedValue(value), delayMs);\n\n return () => window.clearTimeout(timeout);\n }, [value, delayMs]);\n\n return debouncedValue;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useMediaQuery(query: string, initialValue = false): boolean {\n const [matches, setMatches] = useState(initialValue);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(query);\n const updateMatches = () => setMatches(mediaQuery.matches);\n\n updateMatches();\n mediaQuery.addEventListener(\"change\", updateMatches);\n\n return () => mediaQuery.removeEventListener(\"change\", updateMatches);\n }, [query]);\n\n return matches;\n}\n","export const uiPalettes = [\n {\n name: \"Neutral Slate\",\n value: \"neutral-slate\",\n category: \"Neutral\",\n description: \"Neutral Slate palette for neutral interfaces.\",\n inspiredBy: [\"Neutral Slate\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Executive Slate\",\n value: \"executive-slate\",\n category: \"Neutral\",\n description: \"Executive Slate palette for neutral interfaces.\",\n inspiredBy: [\"Executive Slate\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Vercel Mono\",\n value: \"vercel-mono\",\n category: \"Neutral\",\n description: \"Vercel Mono palette for neutral interfaces.\",\n inspiredBy: [\"Vercel Mono\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Warm Sand\",\n value: \"warm-sand\",\n category: \"Neutral\",\n description: \"Warm Sand palette for neutral interfaces.\",\n inspiredBy: [\"Warm Sand\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Zinc Cool\",\n value: \"zinc-cool\",\n category: \"Neutral\",\n description: \"Zinc Cool palette for neutral interfaces.\",\n inspiredBy: [\"Zinc Cool\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Stone Warm\",\n value: \"stone-warm\",\n category: \"Neutral\",\n description: \"Stone Warm palette for neutral interfaces.\",\n inspiredBy: [\"Stone Warm\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Ink Black\",\n value: \"ink-black\",\n category: \"Neutral\",\n description: \"Ink Black palette for neutral interfaces.\",\n inspiredBy: [\"Ink Black\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Parchment\",\n value: \"parchment\",\n category: \"Neutral\",\n description: \"Parchment palette for neutral interfaces.\",\n inspiredBy: [\"Parchment\"],\n bestFor: [\"Neutral UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Default Blue\",\n value: \"default-blue\",\n category: \"SaaS\",\n description: \"Default Blue palette for saas interfaces.\",\n inspiredBy: [\"Default Blue\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Linear Minimal\",\n value: \"linear-minimal\",\n category: \"SaaS\",\n description: \"Linear Minimal palette for saas interfaces.\",\n inspiredBy: [\"Linear Minimal\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Github Neutral\",\n value: \"github-neutral\",\n category: \"SaaS\",\n description: \"Github Neutral palette for saas interfaces.\",\n inspiredBy: [\"Github Neutral\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Atlassian Blue\",\n value: \"atlassian-blue\",\n category: \"SaaS\",\n description: \"Atlassian Blue palette for saas interfaces.\",\n inspiredBy: [\"Atlassian Blue\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Analytics Cyan\",\n value: \"analytics-cyan\",\n category: \"SaaS\",\n description: \"Analytics Cyan palette for saas interfaces.\",\n inspiredBy: [\"Analytics Cyan\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Notion Blue\",\n value: \"notion-blue\",\n category: \"SaaS\",\n description: \"Notion Blue palette for saas interfaces.\",\n inspiredBy: [\"Notion Blue\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Intercom Blue\",\n value: \"intercom-blue\",\n category: \"SaaS\",\n description: \"Intercom Blue palette for saas interfaces.\",\n inspiredBy: [\"Intercom Blue\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Salesforce Sky\",\n value: \"salesforce-sky\",\n category: \"SaaS\",\n description: \"Salesforce Sky palette for saas interfaces.\",\n inspiredBy: [\"Salesforce Sky\"],\n bestFor: [\"SaaS UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Medical Teal\",\n value: \"medical-teal\",\n category: \"Healthcare\",\n description: \"Medical Teal palette for healthcare interfaces.\",\n inspiredBy: [\"Medical Teal\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Clinical Blue\",\n value: \"clinical-blue\",\n category: \"Healthcare\",\n description: \"Clinical Blue palette for healthcare interfaces.\",\n inspiredBy: [\"Clinical Blue\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Calm Cyan\",\n value: \"calm-cyan\",\n category: \"Healthcare\",\n description: \"Calm Cyan palette for healthcare interfaces.\",\n inspiredBy: [\"Calm Cyan\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Teladoc Teal\",\n value: \"teladoc-teal\",\n category: \"Healthcare\",\n description: \"Teladoc Teal palette for healthcare interfaces.\",\n inspiredBy: [\"Teladoc Teal\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Noom Green\",\n value: \"noom-green\",\n category: \"Healthcare\",\n description: \"Noom Green palette for healthcare interfaces.\",\n inspiredBy: [\"Noom Green\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Headspace Orange\",\n value: \"headspace-orange\",\n category: \"Healthcare\",\n description: \"Headspace Orange palette for healthcare interfaces.\",\n inspiredBy: [\"Headspace Orange\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Epic Blue\",\n value: \"epic-blue\",\n category: \"Healthcare\",\n description: \"Epic Blue palette for healthcare interfaces.\",\n inspiredBy: [\"Epic Blue\"],\n bestFor: [\"Healthcare UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Fintech Navy\",\n value: \"fintech-navy\",\n category: \"Fintech\",\n description: \"Fintech Navy palette for fintech interfaces.\",\n inspiredBy: [\"Fintech Navy\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Finance Gold\",\n value: \"finance-gold\",\n category: \"Fintech\",\n description: \"Finance Gold palette for fintech interfaces.\",\n inspiredBy: [\"Finance Gold\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Emerald Wealth\",\n value: \"emerald-wealth\",\n category: \"Fintech\",\n description: \"Emerald Wealth palette for fintech interfaces.\",\n inspiredBy: [\"Emerald Wealth\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Risk Amber\",\n value: \"risk-amber\",\n category: \"Fintech\",\n description: \"Risk Amber palette for fintech interfaces.\",\n inspiredBy: [\"Risk Amber\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Stripe Indigo\",\n value: \"stripe-indigo\",\n category: \"Fintech\",\n description: \"Stripe Indigo palette for fintech interfaces.\",\n inspiredBy: [\"Stripe Indigo\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Coinbase Blue\",\n value: \"coinbase-blue\",\n category: \"Fintech\",\n description: \"Coinbase Blue palette for fintech interfaces.\",\n inspiredBy: [\"Coinbase Blue\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Robinhood Green\",\n value: \"robinhood-green\",\n category: \"Fintech\",\n description: \"Robinhood Green palette for fintech interfaces.\",\n inspiredBy: [\"Robinhood Green\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Plaid Navy\",\n value: \"plaid-navy\",\n category: \"Fintech\",\n description: \"Plaid Navy palette for fintech interfaces.\",\n inspiredBy: [\"Plaid Navy\"],\n bestFor: [\"Fintech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"E-commerce Rose\",\n value: \"ecommerce-rose\",\n category: \"E-commerce\",\n description: \"E-commerce Rose palette for e-commerce interfaces.\",\n inspiredBy: [\"E-commerce Rose\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Luxury Black Gold\",\n value: \"luxury-black-gold\",\n category: \"E-commerce\",\n description: \"Luxury Black Gold palette for e-commerce interfaces.\",\n inspiredBy: [\"Luxury Black Gold\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Commerce Green\",\n value: \"commerce-green\",\n category: \"E-commerce\",\n description: \"Commerce Green palette for e-commerce interfaces.\",\n inspiredBy: [\"Commerce Green\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Lifestyle Coral\",\n value: \"lifestyle-coral\",\n category: \"E-commerce\",\n description: \"Lifestyle Coral palette for e-commerce interfaces.\",\n inspiredBy: [\"Lifestyle Coral\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Shopify Green\",\n value: \"shopify-green\",\n category: \"E-commerce\",\n description: \"Shopify Green palette for e-commerce interfaces.\",\n inspiredBy: [\"Shopify Green\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Amazon Orange\",\n value: \"amazon-orange\",\n category: \"E-commerce\",\n description: \"Amazon Orange palette for e-commerce interfaces.\",\n inspiredBy: [\"Amazon Orange\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Etsy Orange\",\n value: \"etsy-orange\",\n category: \"E-commerce\",\n description: \"Etsy Orange palette for e-commerce interfaces.\",\n inspiredBy: [\"Etsy Orange\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Netflix Red\",\n value: \"netflix-red\",\n category: \"E-commerce\",\n description: \"Netflix Red palette for e-commerce interfaces.\",\n inspiredBy: [\"Netflix Red\"],\n bestFor: [\"E-commerce UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Edtech Playful\",\n value: \"edtech-playful\",\n category: \"EdTech\",\n description: \"Edtech Playful palette for edtech interfaces.\",\n inspiredBy: [\"Edtech Playful\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Learning Purple\",\n value: \"learning-purple\",\n category: \"EdTech\",\n description: \"Learning Purple palette for edtech interfaces.\",\n inspiredBy: [\"Learning Purple\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Gamified Green\",\n value: \"gamified-green\",\n category: \"EdTech\",\n description: \"Gamified Green palette for edtech interfaces.\",\n inspiredBy: [\"Gamified Green\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Achievement Amber\",\n value: \"achievement-amber\",\n category: \"EdTech\",\n description: \"Achievement Amber palette for edtech interfaces.\",\n inspiredBy: [\"Achievement Amber\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Duolingo Green\",\n value: \"duolingo-green\",\n category: \"EdTech\",\n description: \"Duolingo Green palette for edtech interfaces.\",\n inspiredBy: [\"Duolingo Green\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Coursera Blue\",\n value: \"coursera-blue\",\n category: \"EdTech\",\n description: \"Coursera Blue palette for edtech interfaces.\",\n inspiredBy: [\"Coursera Blue\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Khan Blue\",\n value: \"khan-blue\",\n category: \"EdTech\",\n description: \"Khan Blue palette for edtech interfaces.\",\n inspiredBy: [\"Khan Blue\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Udemy Purple\",\n value: \"udemy-purple\",\n category: \"EdTech\",\n description: \"Udemy Purple palette for edtech interfaces.\",\n inspiredBy: [\"Udemy Purple\"],\n bestFor: [\"EdTech UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"AI Cyber\",\n value: \"ai-cyber\",\n category: \"AI/Dev\",\n description: \"AI Cyber palette for ai/dev interfaces.\",\n inspiredBy: [\"AI Cyber\"],\n bestFor: [\"AI/Dev UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Raycast Dark\",\n value: \"raycast-dark\",\n category: \"AI/Dev\",\n description: \"Raycast Dark palette for ai/dev interfaces.\",\n inspiredBy: [\"Raycast Dark\"],\n bestFor: [\"AI/Dev UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Railway Violet\",\n value: \"railway-violet\",\n category: \"AI/Dev\",\n description: \"Railway Violet palette for ai/dev interfaces.\",\n inspiredBy: [\"Railway Violet\"],\n bestFor: [\"AI/Dev UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Terminal Green\",\n value: \"terminal-green\",\n category: \"AI/Dev\",\n description: \"Terminal Green palette for ai/dev interfaces.\",\n inspiredBy: [\"Terminal Green\"],\n bestFor: [\"AI/Dev UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"VS Code Dark\",\n value: \"vscode-dark\",\n category: \"Developer Tools\",\n description: \"VS Code Dark palette for developer tools interfaces.\",\n inspiredBy: [\"VS Code Dark\"],\n bestFor: [\"Developer Tools UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"iTerm Green\",\n value: \"iterm-green\",\n category: \"Developer Tools\",\n description: \"iTerm Green palette for developer tools interfaces.\",\n inspiredBy: [\"iTerm Green\"],\n bestFor: [\"Developer Tools UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Supabase Emerald\",\n value: \"supabase-emerald\",\n category: \"Developer Tools\",\n description: \"Supabase Emerald palette for developer tools interfaces.\",\n inspiredBy: [\"Supabase Emerald\"],\n bestFor: [\"Developer Tools UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Neon Cyber\",\n value: \"neon-cyber\",\n category: \"Developer Tools\",\n description: \"Neon Cyber palette for developer tools interfaces.\",\n inspiredBy: [\"Neon Cyber\"],\n bestFor: [\"Developer Tools UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"IBM Carbon\",\n value: \"ibm-carbon\",\n category: \"Enterprise\",\n description: \"IBM Carbon palette for enterprise interfaces.\",\n inspiredBy: [\"IBM Carbon\"],\n bestFor: [\"Enterprise UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Microsoft Fluent\",\n value: \"microsoft-fluent\",\n category: \"Enterprise\",\n description: \"Microsoft Fluent palette for enterprise interfaces.\",\n inspiredBy: [\"Microsoft Fluent\"],\n bestFor: [\"Enterprise UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Gov Blue\",\n value: \"gov-blue\",\n category: \"Enterprise\",\n description: \"Gov Blue palette for enterprise interfaces.\",\n inspiredBy: [\"Gov Blue\"],\n bestFor: [\"Enterprise UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Stripe Gradient\",\n value: \"stripe-gradient\",\n category: \"Enterprise\",\n description: \"Stripe Gradient palette for enterprise interfaces.\",\n inspiredBy: [\"Stripe Gradient\"],\n bestFor: [\"Enterprise UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Solana Gradient\",\n value: \"solana-gradient\",\n category: \"Creative\",\n description: \"Solana Gradient palette for creative interfaces.\",\n inspiredBy: [\"Solana Gradient\"],\n bestFor: [\"Creative UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Figma Purple\",\n value: \"figma-purple\",\n category: \"Creative\",\n description: \"Figma Purple palette for creative interfaces.\",\n inspiredBy: [\"Figma Purple\"],\n bestFor: [\"Creative UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Dribbble Pink\",\n value: \"dribbble-pink\",\n category: \"Creative\",\n description: \"Dribbble Pink palette for creative interfaces.\",\n inspiredBy: [\"Dribbble Pink\"],\n bestFor: [\"Creative UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Behance Blue\",\n value: \"behance-blue\",\n category: \"Creative\",\n description: \"Behance Blue palette for creative interfaces.\",\n inspiredBy: [\"Behance Blue\"],\n bestFor: [\"Creative UI\", \"dashboards\", \"product screens\"]\n },\n {\n name: \"Awwwards Dark\",\n value: \"awwwards-dark\",\n category: \"Creative\",\n description: \"Awwwards Dark palette for creative interfaces.\",\n inspiredBy: [\"Awwwards Dark\"],\n bestFor: [\"Creative UI\", \"dashboards\", \"product screens\"]\n }\n] as const;\n\nexport type UiPalette = (typeof uiPalettes)[number][\"value\"];\nexport type UiPaletteCategory = (typeof uiPalettes)[number][\"category\"];\nexport type Appearance = \"light\" | \"dark\" | \"system\";\n\nexport const uiPaletteValues = uiPalettes.map((palette) => palette.value) as readonly UiPalette[];\nexport const DEFAULT_PALETTE: UiPalette = \"neutral-slate\";\n\nexport function palettesByCategory(): Record<UiPaletteCategory, (typeof uiPalettes)[number][]> {\n const out = {} as Record<UiPaletteCategory, (typeof uiPalettes)[number][]>;\n for (const palette of uiPalettes) {\n out[palette.category] = out[palette.category] ?? [];\n out[palette.category].push(palette);\n }\n return out;\n}\n\nexport function isUiPalette(value: string): value is UiPalette {\n return uiPaletteValues.includes(value as UiPalette);\n}\n\nconst STORAGE_PALETTE = \"ui-palette\";\nconst STORAGE_APPEARANCE = \"ui-appearance\";\n\nexport function applyPalette(palette: UiPalette): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.dataset.palette = palette;\n try {\n localStorage.setItem(STORAGE_PALETTE, palette);\n } catch {\n /* storage may be unavailable */\n }\n}\n\nexport function applyAppearance(appearance: Appearance): void {\n if (typeof document === \"undefined\") return;\n const prefersDark =\n typeof window !== \"undefined\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const isDark = appearance === \"dark\" || (appearance === \"system\" && prefersDark);\n document.documentElement.classList.toggle(\"dark\", isDark);\n try {\n localStorage.setItem(STORAGE_APPEARANCE, appearance);\n } catch {\n /* storage may be unavailable */\n }\n}\n\nexport const appliers = {\n appearance: applyAppearance,\n palette: applyPalette\n} as const;\n\nexport function getStoredPalette(): UiPalette {\n if (typeof localStorage === \"undefined\") return DEFAULT_PALETTE;\n const raw = localStorage.getItem(STORAGE_PALETTE);\n return raw && isUiPalette(raw) ? raw : DEFAULT_PALETTE;\n}\n\nexport function getStoredAppearance(): Appearance {\n if (typeof localStorage === \"undefined\") return \"system\";\n const raw = localStorage.getItem(STORAGE_APPEARANCE);\n return raw === \"light\" || raw === \"dark\" || raw === \"system\" ? raw : \"system\";\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n type Appearance,\n applyAppearance,\n applyPalette,\n getStoredAppearance,\n getStoredPalette,\n type UiPalette\n} from \"../lib/palettes\";\n\n// Expanded from 5 → 20 (5 base kits + 15 sub-themes). Same hook API as before,\n// so your existing useTheme() call sites keep working with no changes.\nexport const uiThemes = [\n // base kits\n \"dashboard\",\n \"ecommerce\",\n \"healthcare\",\n \"fintech\",\n \"edtech\",\n // SaaS sub-themes\n \"dashboard-executive\",\n \"dashboard-glass\",\n \"dashboard-data\",\n // E-commerce sub-themes\n \"ecommerce-luxury\",\n \"ecommerce-playful\",\n \"ecommerce-minimal\",\n // Healthcare sub-themes\n \"healthcare-clinical\",\n \"healthcare-wellness\",\n \"healthcare-urgent\",\n // Fintech sub-themes\n \"fintech-wealth\",\n \"fintech-crypto\",\n \"fintech-modern\",\n // EdTech sub-themes\n \"edtech-campus\",\n \"edtech-kids\",\n \"edtech-professional\"\n] as const;\n\nexport type UiTheme = (typeof uiThemes)[number];\n\n/** Optional pretty labels for pickers (your dev app can keep using the raw value). */\nexport const uiThemeLabels: Record<UiTheme, string> = {\n dashboard: \"Dashboard\",\n ecommerce: \"E-Commerce\",\n healthcare: \"Healthcare\",\n fintech: \"Fintech\",\n edtech: \"EdTech\",\n \"dashboard-executive\": \"Dashboard · Executive\",\n \"dashboard-glass\": \"Dashboard · Glass\",\n \"dashboard-data\": \"Dashboard · Data\",\n \"ecommerce-luxury\": \"E-Commerce · Luxury\",\n \"ecommerce-playful\": \"E-Commerce · Playful\",\n \"ecommerce-minimal\": \"E-Commerce · Minimal\",\n \"healthcare-clinical\": \"Healthcare · Clinical\",\n \"healthcare-wellness\": \"Healthcare · Wellness\",\n \"healthcare-urgent\": \"Healthcare · Urgent\",\n \"fintech-wealth\": \"Fintech · Wealth\",\n \"fintech-crypto\": \"Fintech · Crypto\",\n \"fintech-modern\": \"Fintech · Modern\",\n \"edtech-campus\": \"EdTech · Campus\",\n \"edtech-kids\": \"EdTech · Kids\",\n \"edtech-professional\": \"EdTech · Professional\"\n};\n\nconst DEFAULT_THEME: UiTheme = \"dashboard\";\nconst STORAGE_THEME = \"ui-theme\";\n\nexport function isUiTheme(value: string): value is UiTheme {\n return uiThemes.includes(value as UiTheme);\n}\n\nexport function applyTheme(theme: UiTheme): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.dataset.theme = theme;\n try {\n localStorage.setItem(STORAGE_THEME, theme);\n } catch {\n /* storage may be unavailable */\n }\n}\n\nexport function getStoredTheme(): UiTheme {\n if (typeof localStorage === \"undefined\") return DEFAULT_THEME;\n const raw = localStorage.getItem(STORAGE_THEME);\n return raw && isUiTheme(raw) ? raw : DEFAULT_THEME;\n}\n\nexport interface UseThemeResult {\n appearance: Appearance;\n mounted: boolean;\n palette: UiPalette;\n setAppearance: (appearance: Appearance) => void;\n setPalette: (palette: UiPalette) => void;\n setTheme: (theme: UiTheme) => void;\n theme: UiTheme;\n}\n\nexport function useTheme(): UseThemeResult {\n const [mounted, setMounted] = useState(false);\n const [theme, setThemeState] = useState<UiTheme>(DEFAULT_THEME);\n const [palette, setPaletteState] = useState<UiPalette>(\"neutral-slate\");\n const [appearance, setAppearanceState] = useState<Appearance>(\"system\");\n\n useEffect(() => {\n setThemeState(getStoredTheme());\n setPaletteState(getStoredPalette());\n setAppearanceState(getStoredAppearance());\n setMounted(true);\n }, []);\n\n const setTheme = useCallback((nextTheme: UiTheme) => {\n setThemeState(nextTheme);\n applyTheme(nextTheme);\n }, []);\n\n const setPalette = useCallback((nextPalette: UiPalette) => {\n setPaletteState(nextPalette);\n applyPalette(nextPalette);\n }, []);\n\n const setAppearance = useCallback((nextAppearance: Appearance) => {\n setAppearanceState(nextAppearance);\n applyAppearance(nextAppearance);\n }, []);\n\n useEffect(() => {\n if (!mounted) return;\n applyTheme(theme);\n }, [mounted, theme]);\n\n useEffect(() => {\n if (!mounted) return;\n applyPalette(palette);\n }, [mounted, palette]);\n\n useEffect(() => {\n if (!mounted) return;\n applyAppearance(appearance);\n\n if (appearance !== \"system\") return;\n\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateAppearance = () => applyAppearance(\"system\");\n mediaQuery.addEventListener(\"change\", updateAppearance);\n\n return () => mediaQuery.removeEventListener(\"change\", updateAppearance);\n }, [mounted, appearance]);\n\n return {\n appearance,\n mounted,\n palette,\n setAppearance,\n setPalette,\n setTheme,\n theme\n };\n}\n","/* NEW FILE: packages/ui/src/lib/fonts.ts */\n\nexport type UiFont =\n | \"inter\"\n | \"geist\"\n | \"geist-mono\"\n | \"jetbrains-mono\"\n | \"manrope\"\n | \"outfit\"\n | \"lato\"\n | \"playfair-display\"\n | \"plus-jakarta-sans\"\n | \"cormorant-garamond\"\n | \"dm-sans\"\n | \"ibm-plex-sans\"\n | \"ibm-plex-mono\"\n | \"nunito\"\n | \"source-serif-4\";\n\nexport interface UiFontMeta {\n name: string;\n googleUrl: string;\n cssValue: string;\n recommendedFor: string[];\n}\n\nexport const uiFonts: Record<UiFont, UiFontMeta> = {\n inter: {\n name: \"Inter\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap\",\n cssValue: '\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif',\n recommendedFor: [\n \"dashboard-executive\",\n \"fintech-modern\",\n \"ecommerce-minimal\",\n \"edtech-professional\"\n ]\n },\n geist: {\n name: \"Geist\",\n googleUrl: \"https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap\",\n cssValue: '\"Geist\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"dashboard-executive\", \"fintech-crypto\"]\n },\n \"geist-mono\": {\n name: \"Geist Mono\",\n googleUrl: \"https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&display=swap\",\n cssValue: '\"Geist Mono\", ui-monospace, \"JetBrains Mono\", monospace',\n recommendedFor: [\"code\", \"price data\", \"dashboard-data\"]\n },\n \"jetbrains-mono\": {\n name: \"JetBrains Mono\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap\",\n cssValue: '\"JetBrains Mono\", ui-monospace, monospace',\n recommendedFor: [\"code fallback\", \"logs\"]\n },\n manrope: {\n name: \"Manrope\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap\",\n cssValue: '\"Manrope\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"healthcare base\", \"calm headings\"]\n },\n outfit: {\n name: \"Outfit\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap\",\n cssValue: '\"Outfit\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"fintech base\", \"geometric headings\"]\n },\n lato: {\n name: \"Lato\",\n googleUrl: \"https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap\",\n cssValue: '\"Lato\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"ecommerce-luxury body\", \"editorial body\"]\n },\n \"playfair-display\": {\n name: \"Playfair Display\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;0,800;1,500&display=swap\",\n cssValue: '\"Playfair Display\", ui-serif, Georgia, serif',\n recommendedFor: [\"ecommerce-luxury\", \"fintech-wealth\"]\n },\n \"plus-jakarta-sans\": {\n name: \"Plus Jakarta Sans\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap\",\n cssValue: '\"Plus Jakarta Sans\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"dashboard-glass\", \"edtech base\"]\n },\n \"cormorant-garamond\": {\n name: \"Cormorant Garamond\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap\",\n cssValue: '\"Cormorant Garamond\", ui-serif, Georgia, serif',\n recommendedFor: [\"luxury display\", \"editorial\"]\n },\n \"dm-sans\": {\n name: \"DM Sans\",\n googleUrl: \"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap\",\n cssValue: '\"DM Sans\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"ecommerce-playful\"]\n },\n \"ibm-plex-sans\": {\n name: \"IBM Plex Sans\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap\",\n cssValue: '\"IBM Plex Sans\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"healthcare-clinical\"]\n },\n \"ibm-plex-mono\": {\n name: \"IBM Plex Mono\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap\",\n cssValue: '\"IBM Plex Mono\", ui-monospace, monospace',\n recommendedFor: [\"healthcare-urgent data\", \"clinical tables\"]\n },\n nunito: {\n name: \"Nunito\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&display=swap\",\n cssValue: '\"Nunito\", ui-sans-serif, system-ui, sans-serif',\n recommendedFor: [\"healthcare-wellness\", \"edtech-kids\"]\n },\n \"source-serif-4\": {\n name: \"Source Serif 4\",\n googleUrl:\n \"https://fonts.googleapis.com/css2?family=Source+Serif+4:wght@400;600;700&display=swap\",\n cssValue: '\"Source Serif 4\", ui-serif, Georgia, serif',\n recommendedFor: [\"edtech-campus\"]\n }\n};\n\nexport const uiFontValues = Object.keys(uiFonts) as UiFont[];\n/** Combined <link href> for all families (or import each googleUrl individually). */\nexport const allFontsHref =\n \"https://fonts.googleapis.com/css2?\" +\n uiFontValues\n .map((f) => new URL(uiFonts[f].googleUrl).searchParams.get(\"family\") ?? \"\")\n .filter((family) => family.length > 0)\n .map((fam) => `family=${fam}`)\n .join(\"&\") +\n \"&display=swap\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge conditional class names and resolve Tailwind utility conflicts.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Sizes supported by {@link Avatar}. */\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\";\n\n/** Public props for {@link Avatar}. */\nexport interface AvatarProps extends ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> {\n /** Visual size of the avatar. */\n size?: AvatarSize;\n}\n\n/** Public props for {@link AvatarImage}. */\nexport interface AvatarImageProps extends ComponentPropsWithoutRef<typeof AvatarPrimitive.Image> {\n /** Alternative text describing the avatar image. */\n alt: string;\n}\n\n/** Public props for {@link AvatarFallback}. */\nexport interface AvatarFallbackProps\n extends ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback> {\n /** Initials or short fallback content. */\n children: string;\n}\n\nconst avatarSizes: Record<AvatarSize, string> = {\n sm: \"size-8 text-xs\",\n md: \"size-10 text-sm\",\n lg: \"size-12 text-base\"\n};\n\n/**\n * Avatar root that displays an image with accessible fallback initials.\n */\nexport const Avatar = forwardRef<ElementRef<typeof AvatarPrimitive.Root>, AvatarProps>(\n ({ className, size = \"md\", ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex shrink-0 overflow-hidden rounded-full\",\n avatarSizes[size],\n className\n )}\n {...props}\n />\n )\n);\n\nAvatar.displayName = \"Avatar\";\n\n/**\n * Image element for {@link Avatar}.\n */\nexport const AvatarImage = forwardRef<ElementRef<typeof AvatarPrimitive.Image>, AvatarImageProps>(\n ({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square size-full object-cover\", className)}\n {...props}\n />\n )\n);\n\nAvatarImage.displayName = \"AvatarImage\";\n\n/**\n * Fallback initials shown when the avatar image is unavailable.\n */\nexport const AvatarFallback = forwardRef<\n ElementRef<typeof AvatarPrimitive.Fallback>,\n AvatarFallbackProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted font-medium text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\n\nAvatarFallback.displayName = \"AvatarFallback\";\n","import type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Visual variants supported by {@link Badge}. */\nexport type BadgeVariant = \"default\" | \"secondary\" | \"outline\" | \"destructive\";\n\n/** Public props for {@link Badge}. */\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /** Visual treatment of the badge. */\n variant?: BadgeVariant;\n}\n\nconst badgeVariants: Record<BadgeVariant, string> = {\n default: \"border-transparent bg-primary text-primary-foreground\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground\",\n outline: \"border-border text-foreground\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground\"\n};\n\n/**\n * Compact status label for metadata, categories, and state indicators.\n */\nexport function Badge({ className, variant = \"default\", ...props }: BadgeProps) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors motion-reduce:transition-none focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n badgeVariants[variant],\n className\n )}\n {...props}\n />\n );\n}\n","import { type ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Visual style variants supported by {@link Button}. */\nexport type ButtonVariant = \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"link\" | \"destructive\";\n\n/** Size variants supported by {@link Button}. */\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\" | \"icon\";\n\n/** Public props for {@link Button}. */\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Visual treatment of the button. */\n variant?: ButtonVariant;\n /** Height, spacing, and typography scale of the button. */\n size?: ButtonSize;\n /** When true, marks the button busy and prevents pointer interaction. */\n isLoading?: boolean;\n}\n\nconst variantClasses: Record<ButtonVariant, string> = {\n default: \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n secondary: \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"h-auto p-0 text-primary underline-offset-4 hover:underline\",\n destructive: \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\"\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: \"h-8 rounded-md px-3 text-xs\",\n md: \"h-10 rounded-md px-4 py-2 text-sm\",\n lg: \"h-11 rounded-lg px-8 text-base\",\n icon: \"size-10 rounded-md p-0\"\n};\n\n/**\n * Accessible, theme-aware button primitive with product-ready variants and sizes.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n isLoading = false,\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n aria-busy={isLoading || undefined}\n className={cn(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n disabled={disabled || isLoading}\n type=\"button\"\n {...props}\n >\n {isLoading ? (\n <span\n aria-hidden=\"true\"\n className=\"size-4 animate-spin rounded-full border-2 border-current border-t-transparent motion-reduce:animate-none\"\n />\n ) : null}\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Checkbox}. */\nexport interface CheckboxProps extends ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n /** Accessible label used when no visible label is associated. */\n \"aria-label\"?: string;\n}\n\n/**\n * Accessible checkbox primitive with keyboard support and indeterminate state.\n */\nexport const Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer size-4 shrink-0 rounded-sm border border-primary bg-background shadow-sm transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <span aria-hidden=\"true\" className=\"text-xs leading-none\">\n ✓\n </span>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import { type InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Input types intentionally supported by the design-system text input. */\nexport type InputType = \"text\" | \"email\" | \"password\" | \"number\" | \"search\";\n\n/** Public props for {@link Input}. */\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Native input type. */\n type?: InputType;\n /** Marks the field invalid and applies error styling. */\n error?: boolean;\n}\n\n/**\n * Theme-aware form input with disabled, invalid, and focus-visible states.\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type = \"text\", error = false, \"aria-invalid\": ariaInvalid, ...props }, ref) => (\n <input\n ref={ref}\n aria-invalid={ariaInvalid ?? (error || undefined)}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground shadow-sm transition-colors motion-reduce:transition-none file:border-0 file:bg-transparent file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n type={type}\n {...props}\n />\n )\n);\n\nInput.displayName = \"Input\";\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Label}. */\nexport interface LabelProps extends ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n /** Shows a required-field marker. */\n required?: boolean;\n /** Shows optional helper copy for non-required fields. */\n optional?: boolean;\n /** Applies destructive/error label styling. */\n error?: boolean;\n}\n\n/**\n * Accessible label primitive that connects text with form controls.\n */\nexport const Label = forwardRef<ElementRef<typeof LabelPrimitive.Root>, LabelProps>(\n ({ className, required = false, optional = false, error = false, children, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n error && \"text-destructive\",\n className\n )}\n {...props}\n >\n {children}\n {required ? (\n <span aria-hidden=\"true\" className=\"ml-1 text-destructive\">\n *\n </span>\n ) : null}\n {optional && !required ? (\n <span className=\"ml-1 text-xs font-normal text-muted-foreground\">Optional</span>\n ) : null}\n </LabelPrimitive.Root>\n )\n);\n\nLabel.displayName = \"Label\";\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link RadioGroup}. */\nexport interface RadioGroupProps extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** Accessible group label when not using a visible legend/label. */\n \"aria-label\"?: string;\n}\n\n/** Public props for {@link RadioGroupItem}. */\nexport interface RadioGroupItemProps\n extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n /** Accessible item label when not paired with visible text. */\n \"aria-label\"?: string;\n}\n\n/**\n * Accessible radio group container with roving keyboard focus.\n */\nexport const RadioGroup = forwardRef<ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Root ref={ref} className={cn(\"grid gap-2\", className)} {...props} />\n )\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n\n/**\n * Accessible radio option for use inside {@link RadioGroup}.\n */\nexport const RadioGroupItem = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square size-4 rounded-full border border-primary bg-background text-primary shadow-sm transition-colors motion-reduce:transition-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className=\"size-2 rounded-full bg-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n));\n\nRadioGroupItem.displayName = \"RadioGroupItem\";\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Select}. */\nexport interface SelectProps extends ComponentPropsWithoutRef<typeof SelectPrimitive.Root> {\n /** Current selected value for controlled usage. */\n value?: string;\n /** Initial selected value for uncontrolled usage. */\n defaultValue?: string;\n}\n\n/** Public props for {@link SelectTrigger}. */\nexport interface SelectTriggerProps\n extends ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n /** Placeholder shown when no value is selected. */\n placeholder?: string;\n}\n\n/** Public props for {@link SelectContent}. */\nexport interface SelectContentProps\n extends ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n /** Positioning strategy for the popover content. */\n position?: \"item-aligned\" | \"popper\";\n}\n\n/** Public props for {@link SelectItem}. */\nexport interface SelectItemProps extends ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n /** Option value submitted by the select. */\n value: string;\n}\n\n/**\n * Radix-powered single select root with accessible keyboard navigation.\n */\nexport const Select = SelectPrimitive.Root;\n\n/**\n * Select trigger button that opens the option list.\n */\nexport const SelectTrigger = forwardRef<\n ElementRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, placeholder = \"Select an option\", ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground shadow-sm transition-colors motion-reduce:transition-none placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children ?? <SelectPrimitive.Value placeholder={placeholder} />}\n <SelectPrimitive.Icon aria-hidden=\"true\" className=\"ml-2 text-muted-foreground\">\n ⌄\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\n\nSelectTrigger.displayName = \"SelectTrigger\";\n\n/**\n * Portal-rendered select content containing selectable items.\n */\nexport const SelectContent = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in motion-reduce:animate-none\",\n position === \"popper\" && \"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\"p-1\", position === \"popper\" && \"min-w-[var(--radix-select-trigger-width)]\")}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\n\nSelectContent.displayName = \"SelectContent\";\n\n/**\n * Selectable option for use inside {@link SelectContent}.\n */\nexport const SelectItem = forwardRef<ElementRef<typeof SelectPrimitive.Item>, SelectItemProps>(\n ({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none transition-colors motion-reduce:transition-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"absolute right-2 inline-flex items-center\">\n ✓\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n);\n\nSelectItem.displayName = \"SelectItem\";\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Separator}. */\nexport interface SeparatorProps extends ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {\n /** Whether the separator should be exposed to assistive technologies. */\n decorative?: boolean;\n}\n\n/**\n * Theme-aware separator for dividing content horizontally or vertically.\n */\nexport const Separator = forwardRef<ElementRef<typeof SeparatorPrimitive.Root>, SeparatorProps>(\n ({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n decorative={decorative}\n orientation={orientation}\n {...props}\n />\n )\n);\n\nSeparator.displayName = \"Separator\";\n","import type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Sizes supported by {@link Spinner}. */\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\n/** Public props for {@link Spinner}. */\nexport interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {\n /** Accessible label announced to assistive technology. */\n label?: string;\n /** Visual size of the loading indicator. */\n size?: SpinnerSize;\n}\n\nconst spinnerSizes: Record<SpinnerSize, string> = {\n sm: \"size-4 border-2\",\n md: \"size-6 border-2\",\n lg: \"size-8 border-4\"\n};\n\n/**\n * Accessible loading spinner that respects reduced-motion preferences.\n */\nexport function Spinner({ className, label = \"Loading\", size = \"md\", ...props }: SpinnerProps) {\n return (\n <span aria-label={label} role=\"status\" className=\"inline-flex items-center\" {...props}>\n <span\n aria-hidden=\"true\"\n className={cn(\n \"inline-block animate-spin rounded-full border-current border-t-transparent text-primary motion-reduce:animate-none\",\n spinnerSizes[size],\n className\n )}\n />\n </span>\n );\n}\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Switch}. */\nexport interface SwitchProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n /** Accessible label used when no visible label is associated. */\n \"aria-label\"?: string;\n}\n\n/**\n * Accessible switch control for binary settings.\n */\nexport const Switch = forwardRef<ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n ({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent bg-input shadow-sm transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb className=\"pointer-events-none block size-5 rounded-full bg-background shadow-lg ring-0 transition-transform motion-reduce:transition-none data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\" />\n </SwitchPrimitive.Root>\n )\n);\n\nSwitch.displayName = \"Switch\";\n","import { type TextareaHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Resize behavior supported by {@link Textarea}. */\nexport type TextareaResize = \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n\n/** Public props for {@link Textarea}. */\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Marks the field invalid and applies error styling. */\n error?: boolean;\n /** Controls CSS resize behavior. */\n resize?: TextareaResize;\n}\n\nconst resizeClasses: Record<TextareaResize, string> = {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\"\n};\n\n/**\n * Multi-line text field with theme-aware focus, disabled, and invalid states.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n { className, error = false, resize = \"vertical\", \"aria-invalid\": ariaInvalid, ...props },\n ref\n ) => (\n <textarea\n ref={ref}\n aria-invalid={ariaInvalid ?? (error || undefined)}\n className={cn(\n \"flex min-h-24 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground shadow-sm transition-colors motion-reduce:transition-none placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n resizeClasses[resize],\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n {...props}\n />\n )\n);\n\nTextarea.displayName = \"Textarea\";\n","import { type HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"error\" | \"destructive\";\n/** Public props for {@link Alert}. */ export interface AlertProps\n extends HTMLAttributes<HTMLDivElement> {\n /** Visual feedback variant. */ variant?: AlertVariant;\n}\n/** Public props for {@link AlertTitle}. */ export interface AlertTitleProps\n extends HTMLAttributes<HTMLHeadingElement> {}\n/** Public props for {@link AlertDescription}. */ export interface AlertDescriptionProps\n extends HTMLAttributes<HTMLParagraphElement> {}\nconst variants: Record<AlertVariant, string> = {\n info: \"border-primary/40 bg-primary/10 text-foreground\",\n success: \"border-green-500/40 bg-green-500/10 text-foreground\",\n warning: \"border-yellow-500/40 bg-yellow-500/10 text-foreground\",\n error: \"border-destructive/40 bg-destructive/10 text-foreground\",\n destructive: \"border-destructive bg-destructive/10 text-destructive\"\n};\n/** Accessible status alert. */ export const Alert = forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"info\", ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\"relative w-full rounded-lg border p-4\", variants[variant], className)}\n {...props}\n />\n )\n);\nAlert.displayName = \"Alert\";\n/** Alert heading. */ export const AlertTitle = forwardRef<HTMLHeadingElement, AlertTitleProps>(\n ({ className, ...props }, ref) => (\n <h5 ref={ref} className={cn(\"mb-1 font-medium leading-none\", className)} {...props} />\n )\n);\nAlertTitle.displayName = \"AlertTitle\";\n/** Alert body copy. */ export const AlertDescription = forwardRef<\n HTMLParagraphElement,\n AlertDescriptionProps\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n));\nAlertDescription.displayName = \"AlertDescription\";\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n/** Public props for {@link AspectRatio}. */ export interface AspectRatioProps\n extends ComponentPropsWithoutRef<typeof AspectRatioPrimitive.Root> {\n /** Desired width/height ratio. */ ratio?: number;\n}\n/** Maintains a consistent width-to-height ratio for media. */ export const AspectRatio =\n AspectRatioPrimitive.Root;\n","import { type AnchorHTMLAttributes, type HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n /** Accessible label for breadcrumb navigation. */\n label?: string;\n}\nexport interface BreadcrumbListProps extends HTMLAttributes<HTMLOListElement> {}\nexport interface BreadcrumbItemProps extends HTMLAttributes<HTMLLIElement> {}\nexport interface BreadcrumbLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {}\nexport interface BreadcrumbPageProps extends HTMLAttributes<HTMLSpanElement> {}\nexport interface BreadcrumbSeparatorProps extends HTMLAttributes<HTMLLIElement> {}\nexport interface BreadcrumbEllipsisProps extends HTMLAttributes<HTMLSpanElement> {}\n\n/** Accessible breadcrumb navigation landmark. */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n ({ label = \"breadcrumb\", ...props }, ref) => <nav ref={ref} aria-label={label} {...props} />\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/** Ordered breadcrumb list. */\nexport const BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-muted-foreground text-sm\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\n/** Breadcrumb list item. */\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n )\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\n/** Clickable breadcrumb link. */\nexport const BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n \"transition-colors motion-reduce:transition-none hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\n/** Current breadcrumb page. */\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\n/** Breadcrumb separator. */\nexport const BreadcrumbSeparator = forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n ({ children = \"/\", className, ...props }, ref) => (\n <li ref={ref} aria-hidden=\"true\" className={cn(\"select-none\", className)} {...props}>\n {children}\n </li>\n )\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\n/** Breadcrumb collapsed items marker. */\nexport const BreadcrumbEllipsis = forwardRef<HTMLSpanElement, BreadcrumbEllipsisProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"img\"\n aria-label=\"More pages\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n …\n </span>\n )\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n","import { DayPicker, type DayPickerProps } from \"react-day-picker\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Calendar}. */\nexport type CalendarProps = DayPickerProps & {\n /** Additional class names for the calendar root. */\n className?: string;\n};\n\n/** Accessible date-picker calendar powered by react-day-picker. */\nexport function Calendar({ className, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"rounded-md border border-border bg-popover p-3 text-popover-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n","import {\n type HTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n forwardRef\n} from \"react\";\nimport { cn } from \"../../../utils/cn\";\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Accessible wrapper label. */ label?: string;\n}\nexport interface TableSectionProps extends HTMLAttributes<HTMLTableSectionElement> {}\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {}\nexport interface TableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {}\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {}\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {}\n/** Semantic responsive table wrapper. */\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n ({ className, label, ...props }, ref) => (\n <div className=\"w-full overflow-auto\">\n <table\n ref={ref}\n aria-label={label}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n);\nTable.displayName = \"Table\";\n/** Table header section. */ export const TableHeader = forwardRef<\n HTMLTableSectionElement,\n TableSectionProps\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n/** Table body section. */ export const TableBody = forwardRef<\n HTMLTableSectionElement,\n TableSectionProps\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n));\nTableBody.displayName = \"TableBody\";\n/** Table footer section. */ export const TableFooter = forwardRef<\n HTMLTableSectionElement,\n TableSectionProps\n>(({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn(\"border-t bg-muted/50 font-medium\", className)} {...props} />\n));\nTableFooter.displayName = \"TableFooter\";\n/** Table row. */ export const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors motion-reduce:transition-none hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n);\nTableRow.displayName = \"TableRow\";\n/** Table header cell. */ export const TableHead = forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n);\nTableHead.displayName = \"TableHead\";\n/** Table data cell. */ export const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, ...props }, ref) => (\n <td ref={ref} className={cn(\"p-2 align-middle\", className)} {...props} />\n )\n);\nTableCell.displayName = \"TableCell\";\n/** Table caption. */ export const TableCaption = forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn(\"mt-4 text-muted-foreground text-sm\", className)} {...props} />\n));\nTableCaption.displayName = \"TableCaption\";\n","import {\n type ColumnDef,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from \"@tanstack/react-table\";\nimport { Input } from \"../../atoms/input\";\nimport { Button } from \"../../atoms/button\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../table\";\n\n/** Public props for {@link DataTable}. */\nexport interface DataTableProps<TData, TValue> {\n /** Column definitions. */ columns: ColumnDef<TData, TValue>[];\n /** Table rows. */ data: TData[];\n /** Optional global filter placeholder. */ filterPlaceholder?: string;\n /** Loading state. */ loading?: boolean;\n /** Empty state message. */ emptyMessage?: string;\n}\n\n/** TanStack Table wrapper with filtering, sorting, pagination, loading, and empty states. */\nexport function DataTable<TData, TValue>({\n columns,\n data,\n filterPlaceholder = \"Filter rows...\",\n loading = false,\n emptyMessage = \"No results.\"\n}: DataTableProps<TData, TValue>) {\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel()\n });\n return (\n <div className=\"space-y-3\">\n <Input\n type=\"search\"\n placeholder={filterPlaceholder}\n value={(table.getState().globalFilter as string) ?? \"\"}\n onChange={(event) => table.setGlobalFilter(event.target.value)}\n />\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length}>Loading...</TableCell>\n </TableRow>\n ) : table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length}>{emptyMessage}</TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n <div className=\"flex items-center justify-end gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.previousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.nextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n );\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Popover}. */\nexport interface PopoverProps extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {}\n/** Public props for {@link PopoverTrigger}. */\nexport interface PopoverTriggerProps\n extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger> {}\n/** Public props for {@link PopoverAnchor}. */\nexport interface PopoverAnchorProps\n extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Anchor> {}\n/** Public props for {@link PopoverContent}. */\nexport interface PopoverContentProps\n extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n /** Side offset from anchor. */ sideOffset?: number;\n}\n\n/** Accessible floating content root powered by Radix Popover. */\nexport const Popover = PopoverPrimitive.Root;\n/** Button or custom element that opens the popover. */\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\n/** Optional anchor used for custom positioning. */\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n/** Portal-rendered popover content. */\nexport const PopoverContent = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = \"PopoverContent\";\n","import { format } from \"date-fns\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Button } from \"../../atoms/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../../molecules/popover\";\nimport { Calendar } from \"../calendar\";\n\n/** Public props for {@link DateRangePicker}. */\nexport interface DateRangePickerProps {\n /** Selected date range. */\n value?: DateRange;\n /** Called when the selected date range changes. */\n onChange?: (range: DateRange | undefined) => void;\n /** Placeholder shown when no date range is selected. */\n placeholder?: string;\n}\n\n/** Popover-based date range picker composed from Calendar. */\nexport function DateRangePicker({\n value,\n onChange,\n placeholder = \"Pick a date range\"\n}: DateRangePickerProps) {\n const label = value?.from\n ? value.to\n ? `${format(value.from, \"LLL dd, y\")} - ${format(value.to, \"LLL dd, y\")}`\n : format(value.from, \"LLL dd, y\")\n : placeholder;\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"outline\">{label}</Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar mode=\"range\" selected={value} onSelect={onChange} numberOfMonths={2} />\n </PopoverContent>\n </Popover>\n );\n}\n","import { type AnchorHTMLAttributes, type HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nexport interface PaginationProps extends HTMLAttributes<HTMLElement> {\n /** Accessible label for pagination navigation. */ label?: string;\n}\nexport interface PaginationContentProps extends HTMLAttributes<HTMLUListElement> {}\nexport interface PaginationItemProps extends HTMLAttributes<HTMLLIElement> {}\nexport interface PaginationLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Marks the link as current page. */ isActive?: boolean;\n}\n/** Pagination navigation landmark. */ export const Pagination = forwardRef<\n HTMLElement,\n PaginationProps\n>(({ label = \"pagination\", ...props }, ref) => <nav ref={ref} aria-label={label} {...props} />);\nPagination.displayName = \"Pagination\";\n/** Pagination list wrapper. */ export const PaginationContent = forwardRef<\n HTMLUListElement,\n PaginationContentProps\n>(({ className, ...props }, ref) => (\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\n));\nPaginationContent.displayName = \"PaginationContent\";\n/** Pagination item wrapper. */ export const PaginationItem = forwardRef<\n HTMLLIElement,\n PaginationItemProps\n>((props, ref) => <li ref={ref} {...props} />);\nPaginationItem.displayName = \"PaginationItem\";\n/** Pagination page link. */ export const PaginationLink = forwardRef<\n HTMLAnchorElement,\n PaginationLinkProps\n>(({ className, isActive = false, ...props }, ref) => (\n <a\n ref={ref}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n \"inline-flex size-10 items-center justify-center rounded-md text-sm transition-colors motion-reduce:transition-none hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isActive && \"border border-input bg-background\",\n className\n )}\n {...props}\n />\n));\nPaginationLink.displayName = \"PaginationLink\";\n/** Previous page link. */ export const PaginationPrevious = forwardRef<\n HTMLAnchorElement,\n PaginationLinkProps\n>(({ children = \"Previous\", ...props }, ref) => (\n <PaginationLink ref={ref} aria-label=\"Go to previous page\" {...props}>\n {children}\n </PaginationLink>\n));\nPaginationPrevious.displayName = \"PaginationPrevious\";\n/** Next page link. */ export const PaginationNext = forwardRef<\n HTMLAnchorElement,\n PaginationLinkProps\n>(({ children = \"Next\", ...props }, ref) => (\n <PaginationLink ref={ref} aria-label=\"Go to next page\" {...props}>\n {children}\n </PaginationLink>\n));\nPaginationNext.displayName = \"PaginationNext\";\n/** Pagination ellipsis marker. */ export function PaginationEllipsis(\n props: HTMLAttributes<HTMLSpanElement>\n) {\n return (\n <span aria-hidden=\"true\" className=\"flex size-10 items-center justify-center\" {...props}>\n …\n </span>\n );\n}\n","import * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n/** Public props for {@link Progress}. */ export interface ProgressProps\n extends ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {\n /** Current value. */ value?: number;\n}\n/** Accessible linear progress bar. */ export const Progress = forwardRef<\n ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(({ className, value = 0, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n value={value}\n className={cn(\"relative h-2 w-full overflow-hidden rounded-full bg-muted\", className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all motion-reduce:transition-none\"\n style={{ transform: `translateX(-${100 - value}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = \"Progress\";\n","import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nexport interface ScrollAreaProps\n extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {}\n/** Styled Radix scroll area with custom viewport and scrollbars. */ export const ScrollArea =\n forwardRef<ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps>(\n ({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollAreaPrimitive.Scrollbar\n orientation=\"vertical\"\n className=\"flex touch-none select-none p-0.5\"\n >\n <ScrollAreaPrimitive.Thumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.Scrollbar>\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n );\nScrollArea.displayName = \"ScrollArea\";\n","import { type HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n/** Public props for {@link Skeleton}. */ export interface SkeletonProps\n extends HTMLAttributes<HTMLDivElement> {\n /** Disable pulse animation. */ animated?: boolean;\n}\n/** Loading placeholder block with reduced-motion support. */ export const Skeleton = forwardRef<\n HTMLDivElement,\n SkeletonProps\n>(({ className, animated = true, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n \"rounded-md bg-muted\",\n animated && \"animate-pulse motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n));\nSkeleton.displayName = \"Skeleton\";\n","import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Accordion}. */\nexport type AccordionProps = ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\n/** Public props for {@link AccordionItem}. */\nexport interface AccordionItemProps\n extends ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> {}\n/** Public props for {@link AccordionTrigger}. */\nexport interface AccordionTriggerProps\n extends ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {}\n/** Public props for {@link AccordionContent}. */\nexport interface AccordionContentProps\n extends ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {}\n\n/** Accessible accordion root powered by Radix Accordion. */\nexport const Accordion = AccordionPrimitive.Root;\n\n/** Accordion item wrapper. */\nexport const AccordionItem = forwardRef<\n ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemProps\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-border\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\n/** Button that expands or collapses an accordion item. */\nexport const AccordionTrigger = forwardRef<\n ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerProps\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium text-sm transition-all motion-reduce:transition-none hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:[&>span]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <span aria-hidden=\"true\" className=\"transition-transform motion-reduce:transition-none\">\n ⌄\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\n/** Collapsible accordion panel content. */\nexport const AccordionContent = forwardRef<\n ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentProps\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link AlertDialog}. */\nexport interface AlertDialogProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root> {\n /** Controlled open state for the alert dialog. */\n open?: boolean;\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean;\n}\n\n/** Public props for {@link AlertDialogTrigger}. */\nexport interface AlertDialogTriggerProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Trigger> {}\n\n/** Public props for {@link AlertDialogContent}. */\nexport interface AlertDialogContentProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {}\n\n/** Public props for {@link AlertDialogHeader}. */\nexport interface AlertDialogHeaderProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link AlertDialogFooter}. */\nexport interface AlertDialogFooterProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link AlertDialogTitle}. */\nexport interface AlertDialogTitleProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title> {}\n\n/** Public props for {@link AlertDialogDescription}. */\nexport interface AlertDialogDescriptionProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description> {}\n\n/** Public props for {@link AlertDialogCancel}. */\nexport interface AlertDialogCancelProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel> {}\n\n/** Public props for {@link AlertDialogAction}. */\nexport interface AlertDialogActionProps\n extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action> {\n /** Visual intent for the primary action. */\n intent?: \"default\" | \"destructive\";\n}\n\n/**\n * Accessible confirmation dialog for critical choices and destructive actions.\n */\nexport const AlertDialog = AlertDialogPrimitive.Root;\n\n/**\n * Button or custom element that opens the alert dialog.\n */\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n));\n\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\n/**\n * Portal-rendered alert dialog content with modal overlay.\n */\nexport const AlertDialogContent = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\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-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none sm:w-full\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\n\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\n/**\n * Header layout for alert dialog title and description.\n */\nexport function AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\n return (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Footer layout for alert dialog actions.\n */\nexport function AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\n return (\n <div\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Accessible alert dialog title.\n */\nexport const AlertDialogTitle = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Title>,\n AlertDialogTitleProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"font-semibold text-lg leading-none tracking-tight\", className)}\n {...props}\n />\n));\n\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\n/**\n * Accessible description for explaining the consequence of the action.\n */\nexport const AlertDialogDescription = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Description>,\n AlertDialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n));\n\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\n/**\n * Cancel action that closes the alert dialog without confirming.\n */\nexport const AlertDialogCancel = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Cancel>,\n AlertDialogCancelProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md border border-input bg-background px-4 py-2 font-medium text-sm shadow-sm transition-colors motion-reduce:transition-none hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n));\n\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\n/**\n * Confirm action for alert dialogs, with optional destructive intent styling.\n */\nexport const AlertDialogAction = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Action>,\n AlertDialogActionProps\n>(({ className, intent = \"default\", ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md px-4 py-2 font-medium text-sm shadow-sm transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n intent === \"destructive\"\n ? \"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n : \"bg-primary text-primary-foreground hover:bg-primary/90\",\n className\n )}\n {...props}\n />\n));\n\nAlertDialogAction.displayName = \"AlertDialogAction\";\n","import { type HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Card}. */\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional visual density for card spacing. */\n density?: \"default\" | \"compact\";\n}\n\n/** Public props for {@link CardHeader}. */\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional visual density for header spacing. */\n density?: \"default\" | \"compact\";\n}\n\n/** Public props for {@link CardTitle}. */\nexport interface CardTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Heading level used for semantic document structure. */\n as?: \"h2\" | \"h3\" | \"h4\";\n}\n\n/** Public props for {@link CardDescription}. */\nexport interface CardDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {}\n\n/** Public props for {@link CardContent}. */\nexport interface CardContentProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional visual density for content spacing. */\n density?: \"default\" | \"compact\";\n}\n\n/** Public props for {@link CardFooter}. */\nexport interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional visual density for footer spacing. */\n density?: \"default\" | \"compact\";\n}\n\n/**\n * Theme-aware content container with border, background, radius, and shadow tokens.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, density = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border border-border bg-card text-card-foreground shadow-sm transition-colors motion-reduce:transition-none\",\n density === \"compact\" && \"text-sm\",\n className\n )}\n {...props}\n />\n )\n);\n\nCard.displayName = \"Card\";\n\n/**\n * Header region for card titles, descriptions, and leading controls.\n */\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, density = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5\", density === \"compact\" ? \"p-4\" : \"p-6\", className)}\n {...props}\n />\n )\n);\n\nCardHeader.displayName = \"CardHeader\";\n\n/**\n * Semantic title for a card section.\n */\nexport const CardTitle = forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, as: Heading = \"h3\", ...props }, ref) => (\n <Heading\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight text-card-foreground\", className)}\n {...props}\n />\n )\n);\n\nCardTitle.displayName = \"CardTitle\";\n\n/**\n * Muted supporting text for a card title or card body.\n */\nexport const CardDescription = forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n);\n\nCardDescription.displayName = \"CardDescription\";\n\n/**\n * Main content region for a card.\n */\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, density = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(density === \"compact\" ? \"p-4 pt-0\" : \"p-6 pt-0\", className)}\n {...props}\n />\n )\n);\n\nCardContent.displayName = \"CardContent\";\n\n/**\n * Footer region for card actions, metadata, and secondary controls.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, density = \"default\", ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-2\",\n density === \"compact\" ? \"p-4 pt-0\" : \"p-6 pt-0\",\n className\n )}\n {...props}\n />\n )\n);\n\nCardFooter.displayName = \"CardFooter\";\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Dialog}. */\nexport interface DialogProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {\n /** Controlled open state for the dialog. */\n open?: boolean;\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean;\n}\n\n/** Public props for {@link DialogTrigger}. */\nexport interface DialogTriggerProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {}\n\n/** Public props for {@link DialogContent}. */\nexport interface DialogContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Accessible label when no visible title is rendered. Prefer `DialogTitle` when possible. */\n \"aria-label\"?: string;\n /** Whether to render the close button in the top-right corner. */\n showClose?: boolean;\n}\n\n/** Public props for {@link DialogHeader}. */\nexport interface DialogHeaderProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link DialogFooter}. */\nexport interface DialogFooterProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link DialogTitle}. */\nexport interface DialogTitleProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {}\n\n/** Public props for {@link DialogDescription}. */\nexport interface DialogDescriptionProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {}\n\n/** Public props for {@link DialogClose}. */\nexport interface DialogCloseProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Close> {}\n\n/**\n * Accessible modal dialog root powered by Radix Dialog.\n */\nexport const Dialog = DialogPrimitive.Root;\n\n/**\n * Button or custom element that opens the dialog.\n */\nexport const DialogTrigger = DialogPrimitive.Trigger;\n\n/**\n * Button or custom element that closes the dialog.\n */\nexport const DialogClose = DialogPrimitive.Close;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = forwardRef<\n ElementRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n));\n\nDialogOverlay.displayName = \"DialogOverlay\";\n\n/**\n * Portal-rendered modal content with overlay, close button, and responsive sizing.\n */\nexport const DialogContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, showClose = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none sm:w-full\",\n className\n )}\n {...props}\n >\n {children}\n {showClose ? (\n <DialogPrimitive.Close className=\"absolute top-4 right-4 rounded-sm opacity-70 transition-opacity motion-reduce:transition-none hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n <span aria-hidden=\"true\">×</span>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\n\nDialogContent.displayName = \"DialogContent\";\n\n/**\n * Header layout for dialog title and description.\n */\nexport function DialogHeader({ className, ...props }: DialogHeaderProps) {\n return (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Footer layout for dialog actions.\n */\nexport function DialogFooter({ className, ...props }: DialogFooterProps) {\n return (\n <div\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Accessible dialog title. Use one per dialog content.\n */\nexport const DialogTitle = forwardRef<ElementRef<typeof DialogPrimitive.Title>, DialogTitleProps>(\n ({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"font-semibold text-lg leading-none tracking-tight\", className)}\n {...props}\n />\n )\n);\n\nDialogTitle.displayName = \"DialogTitle\";\n\n/**\n * Accessible dialog description connected to dialog content.\n */\nexport const DialogDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n DialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n));\n\nDialogDescription.displayName = \"DialogDescription\";\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport { type ComponentPropsWithoutRef, type ReactNode, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\n/** Public props for {@link Command}. */\nexport interface CommandProps extends ComponentPropsWithoutRef<typeof CommandPrimitive> {}\n/** Public props for {@link CommandDialog}. */\nexport interface CommandDialogProps extends ComponentPropsWithoutRef<typeof Dialog> {\n /** Dialog children. */ children?: ReactNode;\n}\n/** Public props for {@link CommandInput}. */\nexport interface CommandInputProps\n extends ComponentPropsWithoutRef<typeof CommandPrimitive.Input> {}\n/** Public props for {@link CommandList}. */\nexport interface CommandListProps extends ComponentPropsWithoutRef<typeof CommandPrimitive.List> {}\n/** Public props for {@link CommandEmpty}. */\nexport interface CommandEmptyProps\n extends ComponentPropsWithoutRef<typeof CommandPrimitive.Empty> {}\n/** Public props for {@link CommandGroup}. */\nexport interface CommandGroupProps\n extends ComponentPropsWithoutRef<typeof CommandPrimitive.Group> {}\n/** Public props for {@link CommandItem}. */\nexport interface CommandItemProps extends ComponentPropsWithoutRef<typeof CommandPrimitive.Item> {}\n/** Public props for {@link CommandSeparator}. */\nexport interface CommandSeparatorProps\n extends ComponentPropsWithoutRef<typeof CommandPrimitive.Separator> {}\n/** Public props for {@link CommandShortcut}. */\nexport interface CommandShortcutProps extends ComponentPropsWithoutRef<\"span\"> {}\n\n/** Command palette container powered by cmdk. */\nexport const Command = forwardRef<HTMLDivElement, CommandProps>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\n/** Dialog composition for command palettes. */\nexport function CommandDialog({ children, ...props }: CommandDialogProps) {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command>{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input for command palettes. */\nexport const CommandInput = forwardRef<HTMLInputElement, CommandInputProps>(\n ({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\">\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n);\nCommandInput.displayName = \"CommandInput\";\n\n/** Scrollable command result list. */\nexport const CommandList = forwardRef<HTMLDivElement, CommandListProps>(\n ({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-72 overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n )\n);\nCommandList.displayName = \"CommandList\";\n\n/** Empty result message. */\nexport const CommandEmpty = forwardRef<HTMLDivElement, CommandEmptyProps>(\n ({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"py-6 text-center text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n);\nCommandEmpty.displayName = \"CommandEmpty\";\n\n/** Command item group. */\nexport const CommandGroup = forwardRef<HTMLDivElement, CommandGroupProps>(\n ({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\"overflow-hidden p-1 text-foreground\", className)}\n {...props}\n />\n )\n);\nCommandGroup.displayName = \"CommandGroup\";\n\n/** Selectable command result item. */\nexport const CommandItem = forwardRef<HTMLDivElement, CommandItemProps>(\n ({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n )\n);\nCommandItem.displayName = \"CommandItem\";\n\n/** Visual separator for command groups. */\nexport const CommandSeparator = forwardRef<HTMLDivElement, CommandSeparatorProps>(\n ({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n);\nCommandSeparator.displayName = \"CommandSeparator\";\n\n/** Keyboard shortcut hint for command items. */\nexport function CommandShortcut({ className, ...props }: CommandShortcutProps) {\n return (\n <span\n className={cn(\"ml-auto text-muted-foreground text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link DropdownMenu}. */\nexport interface DropdownMenuProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}\n/** Public props for {@link DropdownMenuTrigger}. */\nexport interface DropdownMenuTriggerProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger> {}\n/** Public props for {@link DropdownMenuContent}. */\nexport interface DropdownMenuContentProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> {\n /** Side offset from the trigger in pixels. */\n sideOffset?: number;\n}\n/** Public props for {@link DropdownMenuItem}. */\nexport interface DropdownMenuItemProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n /** Adds inset spacing for nested or icon-aligned menu items. */\n inset?: boolean;\n}\n/** Public props for {@link DropdownMenuCheckboxItem}. */\nexport interface DropdownMenuCheckboxItemProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> {}\n/** Public props for {@link DropdownMenuRadioGroup}. */\nexport interface DropdownMenuRadioGroupProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioGroup> {}\n/** Public props for {@link DropdownMenuRadioItem}. */\nexport interface DropdownMenuRadioItemProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> {}\n/** Public props for {@link DropdownMenuLabel}. */\nexport interface DropdownMenuLabelProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> {\n /** Adds inset spacing to align with item text. */\n inset?: boolean;\n}\n/** Public props for {@link DropdownMenuSeparator}. */\nexport interface DropdownMenuSeparatorProps\n extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator> {}\n/** Public props for {@link DropdownMenuShortcut}. */\nexport interface DropdownMenuShortcutProps extends ComponentPropsWithoutRef<\"span\"> {}\n\n/** Accessible contextual menu root powered by Radix Dropdown Menu. */\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n/** Button or custom element that opens the dropdown menu. */\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n/** Radio group container for mutually exclusive menu items. */\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\n/** Portal-rendered dropdown menu content. */\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Content>,\n DropdownMenuContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-40 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\n/** Selectable dropdown menu row. */\nexport const DropdownMenuItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, inset = false, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors motion-reduce:transition-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\n/** Checkbox menu item with checked indicator. */\nexport const DropdownMenuCheckboxItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n DropdownMenuCheckboxItemProps\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none transition-colors motion-reduce:transition-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>✓</DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\n\n/** Radio menu item with selected indicator. */\nexport const DropdownMenuRadioItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none transition-colors motion-reduce:transition-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>●</DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\n/** Non-interactive menu label. */\nexport function DropdownMenuLabel({ className, inset = false, ...props }: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(\"px-2 py-1.5 font-semibold text-sm\", inset && \"pl-8\", className)}\n {...props}\n />\n );\n}\n\n/** Visual separator between menu groups. */\nexport const DropdownMenuSeparator = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Separator>,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\n/** Right-aligned keyboard shortcut hint. */\nexport function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) {\n return (\n <span\n className={cn(\"ml-auto text-muted-foreground text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n","import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link NavigationMenu}. */\nexport interface NavigationMenuProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> {}\n/** Public props for {@link NavigationMenuList}. */\nexport interface NavigationMenuListProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List> {}\n/** Public props for {@link NavigationMenuItem}. */\nexport interface NavigationMenuItemProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Item> {}\n/** Public props for {@link NavigationMenuTrigger}. */\nexport interface NavigationMenuTriggerProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger> {}\n/** Public props for {@link NavigationMenuContent}. */\nexport interface NavigationMenuContentProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content> {}\n/** Public props for {@link NavigationMenuLink}. */\nexport interface NavigationMenuLinkProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link> {}\n/** Public props for {@link NavigationMenuViewport}. */\nexport interface NavigationMenuViewportProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport> {}\n/** Public props for {@link NavigationMenuIndicator}. */\nexport interface NavigationMenuIndicatorProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator> {}\n\n/** Top-level accessible navigation menu root. */\nexport const NavigationMenu = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Root>,\n NavigationMenuProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...props}\n />\n));\nNavigationMenu.displayName = \"NavigationMenu\";\n\n/** Navigation menu list. */\nexport const NavigationMenuList = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.List>,\n NavigationMenuListProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n {...props}\n />\n));\nNavigationMenuList.displayName = \"NavigationMenuList\";\n\n/** Navigation menu item. */\nexport const NavigationMenuItem = NavigationMenuPrimitive.Item;\n\n/** Trigger for navigation flyout content. */\nexport const NavigationMenuTrigger = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n NavigationMenuTriggerProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-background px-4 py-2 font-medium text-sm transition-colors motion-reduce:transition-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuTrigger.displayName = \"NavigationMenuTrigger\";\n\n/** Flyout content for a navigation item. */\nexport const NavigationMenuContent = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Content>,\n NavigationMenuContentProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md md:absolute md:w-auto\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\n\n/** Link inside the navigation menu. */\nexport const NavigationMenuLink = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Link>,\n NavigationMenuLinkProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Link\n ref={ref}\n className={cn(\n \"block rounded-md p-2 text-sm transition-colors motion-reduce:transition-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuLink.displayName = \"NavigationMenuLink\";\n\n/** Viewport for animated navigation flyouts. */\nexport const NavigationMenuViewport = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n NavigationMenuViewportProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Viewport\n ref={ref}\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-border bg-popover shadow-lg motion-reduce:transition-none md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuViewport.displayName = \"NavigationMenuViewport\";\n\n/** Indicator displayed below active navigation triggers. */\nexport const NavigationMenuIndicator = forwardRef<\n ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n NavigationMenuIndicatorProps\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\"top-full z-10 flex h-1.5 items-end justify-center overflow-hidden\", className)}\n {...props}\n />\n));\nNavigationMenuIndicator.displayName = \"NavigationMenuIndicator\";\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Slide-in side supported by {@link SheetContent}. */\nexport type SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\n/** Public props for {@link Sheet}. */\nexport interface SheetProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {\n /** Controlled open state for the sheet. */\n open?: boolean;\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean;\n}\n\n/** Public props for {@link SheetTrigger}. */\nexport interface SheetTriggerProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {}\n\n/** Public props for {@link SheetClose}. */\nexport interface SheetCloseProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Close> {}\n\n/** Public props for {@link SheetContent}. */\nexport interface SheetContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Edge of the viewport the sheet slides from. */\n side?: SheetSide;\n /** Whether to render the close button in the top-right corner. */\n showClose?: boolean;\n}\n\n/** Public props for {@link SheetHeader}. */\nexport interface SheetHeaderProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link SheetFooter}. */\nexport interface SheetFooterProps extends ComponentPropsWithoutRef<\"div\"> {}\n\n/** Public props for {@link SheetTitle}. */\nexport interface SheetTitleProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {}\n\n/** Public props for {@link SheetDescription}. */\nexport interface SheetDescriptionProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {}\n\nconst sideClasses: Record<SheetSide, string> = {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\"\n};\n\n/**\n * Accessible slide-out panel root powered by Radix Dialog.\n */\nexport const Sheet = DialogPrimitive.Root;\n\n/**\n * Button or custom element that opens the sheet.\n */\nexport const SheetTrigger = DialogPrimitive.Trigger;\n\n/**\n * Button or custom element that closes the sheet.\n */\nexport const SheetClose = DialogPrimitive.Close;\n\nconst SheetPortal = DialogPrimitive.Portal;\n\nconst SheetOverlay = forwardRef<\n ElementRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n));\n\nSheetOverlay.displayName = \"SheetOverlay\";\n\n/**\n * Portal-rendered sheet panel that slides from the selected viewport side.\n */\nexport const SheetContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n SheetContentProps\n>(({ className, children, side = \"right\", showClose = true, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed z-50 gap-4 bg-popover p-6 text-popover-foreground shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:animate-none motion-reduce:transition-none\",\n sideClasses[side],\n className\n )}\n {...props}\n >\n {children}\n {showClose ? (\n <DialogPrimitive.Close className=\"absolute top-4 right-4 rounded-sm opacity-70 transition-opacity motion-reduce:transition-none hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n <span aria-hidden=\"true\">×</span>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </SheetPortal>\n));\n\nSheetContent.displayName = \"SheetContent\";\n\n/**\n * Header layout for sheet title and description.\n */\nexport function SheetHeader({ className, ...props }: SheetHeaderProps) {\n return <div className={cn(\"flex flex-col space-y-2 text-left\", className)} {...props} />;\n}\n\n/**\n * Footer layout for sheet actions.\n */\nexport function SheetFooter({ className, ...props }: SheetFooterProps) {\n return (\n <div\n className={cn(\"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Accessible sheet title. Use one per sheet content.\n */\nexport const SheetTitle = forwardRef<ElementRef<typeof DialogPrimitive.Title>, SheetTitleProps>(\n ({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"font-semibold text-lg text-popover-foreground\", className)}\n {...props}\n />\n )\n);\n\nSheetTitle.displayName = \"SheetTitle\";\n\n/**\n * Accessible sheet description connected to the sheet content.\n */\nexport const SheetDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n SheetDescriptionProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n));\n\nSheetDescription.displayName = \"SheetDescription\";\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link Tabs}. */\nexport interface TabsProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {}\n/** Public props for {@link TabsList}. */\nexport interface TabsListProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.List> {}\n/** Public props for {@link TabsTrigger}. */\nexport interface TabsTriggerProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {}\n/** Public props for {@link TabsContent}. */\nexport interface TabsContentProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.Content> {}\n\n/** Accessible tab set root powered by Radix Tabs. */\nexport const Tabs = TabsPrimitive.Root;\n\n/** Container for tab triggers. */\nexport const TabsList = forwardRef<ElementRef<typeof TabsPrimitive.List>, TabsListProps>(\n ({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n);\nTabsList.displayName = \"TabsList\";\n\n/** A selectable tab trigger. */\nexport const TabsTrigger = forwardRef<ElementRef<typeof TabsPrimitive.Trigger>, TabsTriggerProps>(\n ({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm transition-all motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n )\n);\nTabsTrigger.displayName = \"TabsTrigger\";\n\n/** Content panel associated with a tab trigger. */\nexport const TabsContent = forwardRef<ElementRef<typeof TabsPrimitive.Content>, TabsContentProps>(\n ({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n {...props}\n />\n )\n);\nTabsContent.displayName = \"TabsContent\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/** Public props for {@link TooltipProvider}. */\nexport interface TooltipProviderProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider> {}\n/** Public props for {@link Tooltip}. */\nexport interface TooltipProps extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {}\n/** Public props for {@link TooltipTrigger}. */\nexport interface TooltipTriggerProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger> {}\n/** Public props for {@link TooltipContent}. */\nexport interface TooltipContentProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Side offset from trigger. */ sideOffset?: number;\n}\n\n/** Provider for tooltip timing and shared behavior. */\nexport const TooltipProvider = TooltipPrimitive.Provider;\n/** Accessible tooltip root powered by Radix Tooltip. */\nexport const Tooltip = TooltipPrimitive.Root;\n/** Element that reveals tooltip content. */\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n/** Portal-rendered tooltip content. */\nexport const TooltipContent = forwardRef<\n ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-primary-foreground text-xs shadow-md data-[state=closed]:animate-out data-[state=delayed-open]:animate-in motion-reduce:animate-none\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = \"TooltipContent\";\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Toaster as SonnerToaster, toast } from \"sonner\";\n\n/** Public props for {@link Toaster}. */\nexport interface ToasterProps extends ComponentPropsWithoutRef<typeof SonnerToaster> {\n /** Screen position for toast notifications. */\n position?: ComponentPropsWithoutRef<typeof SonnerToaster>[\"position\"];\n}\n\n/** Theme-aware Sonner toaster host. */\nexport function Toaster({\n richColors = true,\n closeButton = true,\n position = \"bottom-right\",\n ...props\n}: ToasterProps) {\n return (\n <SonnerToaster\n richColors={richColors}\n closeButton={closeButton}\n position={position}\n {...props}\n />\n );\n}\n\nexport { toast };\n","import { useMemo, useState } from \"react\";\nimport { Button } from \"../../atoms/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList\n} from \"../../molecules/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../../molecules/popover\";\n\n/** Option accepted by {@link Combobox}. */ export interface ComboboxOption {\n /** Option value. */ value: string /** Display label. */;\n label: string;\n}\n/** Public props for {@link Combobox}. */ export interface ComboboxProps {\n /** Available options. */ options: ComboboxOption[] /** Selected value. */;\n value?: string /** Called when selected value changes. */;\n onValueChange?: (value: string) => void /** Placeholder text. */;\n placeholder?: string /** Empty result text. */;\n emptyText?: string /** Disabled state. */;\n disabled?: boolean;\n}\n/** Searchable select built from Popover and Command. */ export function Combobox({\n options,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n emptyText = \"No option found.\",\n disabled = false\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const selected = useMemo(() => options.find((o) => o.value === value), [options, value]);\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" disabled={disabled} aria-expanded={open}>\n {selected?.label ?? placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => {\n onValueChange?.(option.value);\n setOpen(false);\n }}\n >\n {option.label}\n {option.value === value ? <span className=\"ml-auto\">✓</span> : null}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","import { createContext, type HTMLAttributes, type ReactNode, useContext } from \"react\";\nimport {\n Controller,\n FormProvider,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n useFormContext\n} from \"react-hook-form\";\nimport { Label } from \"../../atoms/label\";\nimport { cn } from \"../../../utils/cn\";\n\n/** React Hook Form provider component. */\nexport const Form = FormProvider;\nconst FormFieldContext = createContext<{ name: string } | null>(null);\n/** Public props for {@link FormField}. */ export type FormFieldProps<\n TFieldValues extends FieldValues,\n TName extends FieldPath<TFieldValues>\n> = ControllerProps<TFieldValues, TName>;\n/** Controlled field wrapper powered by React Hook Form Controller. */ export function FormField<\n TFieldValues extends FieldValues,\n TName extends FieldPath<TFieldValues>\n>(props: FormFieldProps<TFieldValues, TName>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n}\n/** Public props for form layout items. */ export interface FormItemProps\n extends HTMLAttributes<HTMLDivElement> {}\n/** Public props for form labels. */ export interface FormLabelProps\n extends React.ComponentPropsWithoutRef<typeof Label> {}\n/** Public props for form controls. */ export interface FormControlProps {\n /** Form control element. */ children: ReactNode;\n}\n/** Public props for descriptions. */ export interface FormDescriptionProps\n extends HTMLAttributes<HTMLParagraphElement> {}\n/** Public props for messages. */ export interface FormMessageProps\n extends HTMLAttributes<HTMLParagraphElement> {\n /** Explicit message. */ children?: ReactNode;\n}\nfunction useFormField() {\n const ctx = useContext(FormFieldContext);\n const form = useFormContext();\n const state = ctx ? form.getFieldState(ctx.name, form.formState) : undefined;\n return { name: ctx?.name, error: state?.error };\n}\n/** Layout wrapper for a form field. */ export function FormItem({\n className,\n ...props\n}: FormItemProps) {\n return <div className={cn(\"space-y-2\", className)} {...props} />;\n}\n/** Label connected to the current form field. */ export function FormLabel(props: FormLabelProps) {\n const { error } = useFormField();\n return <Label error={!!error} {...props} />;\n}\n/** Slot-like form control wrapper. */ export function FormControl({ children }: FormControlProps) {\n return <>{children}</>;\n}\n/** Supporting text for a field. */ export function FormDescription({\n className,\n ...props\n}: FormDescriptionProps) {\n return <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />;\n}\n/** Validation message for a field. */ export function FormMessage({\n className,\n children,\n ...props\n}: FormMessageProps) {\n const { error } = useFormField();\n const body = children ?? error?.message;\n if (!body) return null;\n return (\n <p className={cn(\"text-destructive text-sm\", className)} {...props}>\n {body as ReactNode}\n </p>\n );\n}\n","import { type HTMLAttributes, useState } from \"react\";\nimport { Button } from \"../../atoms/button\";\nimport { cn } from \"../../../utils/cn\";\nexport interface SidebarItem {\n /** Item label. */ label: string /** Item href. */;\n href?: string /** Active state. */;\n active?: boolean;\n}\nexport interface SidebarSection {\n /** Section label. */ label?: string /** Navigation items. */;\n items: SidebarItem[];\n}\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n /** Sidebar sections. */ sections: SidebarSection[] /** Initial collapsed state. */;\n defaultCollapsed?: boolean;\n}\n/** Collapsible app navigation sidebar. */ export function Sidebar({\n sections,\n defaultCollapsed = false,\n className,\n ...props\n}: SidebarProps) {\n const [collapsed, setCollapsed] = useState(defaultCollapsed);\n return (\n <aside\n className={cn(\n \"flex h-full flex-col border-r border-border bg-background\",\n collapsed ? \"w-16\" : \"w-64\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between p-2\">\n <span className={cn(\"font-semibold\", collapsed && \"sr-only\")}>Navigation</span>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n aria-label=\"Toggle sidebar\"\n onClick={() => setCollapsed((v) => !v)}\n >\n ☰\n </Button>\n </div>\n <nav className=\"space-y-4 p-2\">\n {sections.map((section, i) => (\n <div key={section.label ?? i}>\n {section.label && !collapsed ? (\n <p className=\"px-2 py-1 text-muted-foreground text-xs\">{section.label}</p>\n ) : null}\n <ul className=\"space-y-1\">\n {section.items.map((item) => (\n <li key={item.label}>\n <a\n href={item.href}\n aria-current={item.active ? \"page\" : undefined}\n className={cn(\n \"flex rounded-md px-2 py-2 text-sm transition-colors motion-reduce:transition-none hover:bg-accent hover:text-accent-foreground\",\n item.active && \"bg-accent text-accent-foreground\"\n )}\n >\n {collapsed ? item.label.slice(0, 1) : item.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </nav>\n </aside>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport {\n type Appearance,\n applyAppearance,\n applyPalette,\n getStoredAppearance,\n getStoredPalette,\n type UiPalette,\n uiPalettes\n} from \"../lib/palettes\";\n\n/**\n * Minimal palette + appearance switcher.\n * - SSR-safe: reads storage only after mount, so server and first client\n * render agree (avoids hydration mismatch).\n * - Persists to localStorage via the appliers in palettes.ts.\n * - No `any`.\n *\n * For zero-flash theming, also run a tiny inline script in <head> that sets\n * document.documentElement.dataset.palette + the `dark` class from storage\n * before React hydrates. This component then syncs with it.\n */\nexport function ThemeSwitcher() {\n const [mounted, setMounted] = useState(false);\n const [palette, setPalette] = useState<UiPalette>(\"neutral-slate\");\n const [appearance, setAppearance] = useState<Appearance>(\"system\");\n\n useEffect(() => {\n setPalette(getStoredPalette());\n setAppearance(getStoredAppearance());\n setMounted(true);\n }, []);\n\n useEffect(() => {\n if (mounted) applyPalette(palette);\n }, [mounted, palette]);\n\n useEffect(() => {\n if (!mounted) return;\n applyAppearance(appearance);\n if (appearance !== \"system\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => applyAppearance(\"system\");\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [mounted, appearance]);\n\n // Render a stable shell until mounted to keep SSR/CSR output identical.\n if (!mounted) {\n return <div aria-hidden className=\"h-9\" />;\n }\n\n const appearances: Appearance[] = [\"light\", \"dark\", \"system\"];\n\n return (\n <div className=\"flex flex-wrap items-center gap-3\">\n <label className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n Palette\n <select\n value={palette}\n onChange={(e) => setPalette(e.target.value as UiPalette)}\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {uiPalettes.map((p) => (\n <option key={p.value} value={p.value}>\n {p.name} ({p.category})\n </option>\n ))}\n </select>\n </label>\n\n <fieldset className=\"inline-flex rounded-md border border-input p-0.5\">\n <legend className=\"sr-only\">Appearance</legend>\n {appearances.map((a) => (\n <button\n key={a}\n type=\"button\"\n aria-pressed={appearance === a}\n onClick={() => setAppearance(a)}\n className={\n \"rounded px-2.5 py-1 text-sm capitalize transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring \" +\n (appearance === a\n ? \"bg-primary text-primary-foreground\"\n : \"text-muted-foreground hover:text-foreground\")\n }\n >\n {a}\n </button>\n ))}\n </fieldset>\n </div>\n );\n}\n","export interface FormatCurrencyOptions {\n currency?: string;\n locale?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n}\n\nexport interface FormatDateOptions extends Intl.DateTimeFormatOptions {\n locale?: string;\n}\n\nexport interface FormatNumberOptions extends Intl.NumberFormatOptions {\n locale?: string;\n}\n\nexport function formatCurrency(value: number, options: FormatCurrencyOptions = {}): string {\n const {\n currency = \"USD\",\n locale = \"en-US\",\n minimumFractionDigits,\n maximumFractionDigits\n } = options;\n\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits,\n maximumFractionDigits\n }).format(value);\n}\n\nexport function formatDate(value: Date | number | string, options: FormatDateOptions = {}): string {\n const { locale = \"en-US\", ...dateOptions } = options;\n const date = value instanceof Date ? value : new Date(value);\n\n return new Intl.DateTimeFormat(locale, {\n dateStyle: \"medium\",\n ...dateOptions\n }).format(date);\n}\n\nexport function formatNumber(value: number, options: FormatNumberOptions = {}): string {\n const { locale = \"en-US\", ...numberOptions } = options;\n\n return new Intl.NumberFormat(locale, numberOptions).format(value);\n}\n"]}
|