@akira-io/ui 1.3.1 → 2.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/README.md +2 -2
- package/dist/blocks.d.ts +100 -10
- package/dist/blocks.js +547 -270
- package/dist/blocks.js.map +1 -1
- package/dist/{chunk-3Z2VGVPI.js → chunk-53V4J7MC.js} +17 -7
- package/dist/chunk-53V4J7MC.js.map +1 -0
- package/dist/chunk-BH3B26DK.js +394 -0
- package/dist/chunk-BH3B26DK.js.map +1 -0
- package/dist/chunk-BP2YDMMI.js +29 -0
- package/dist/chunk-BP2YDMMI.js.map +1 -0
- package/dist/chunk-BR3JI3KN.js +458 -0
- package/dist/chunk-BR3JI3KN.js.map +1 -0
- package/dist/{chunk-YBXRJSR3.js → chunk-CAUTXZ4U.js} +15 -7
- package/dist/chunk-CAUTXZ4U.js.map +1 -0
- package/dist/{chunk-I6VVCFZ2.js → chunk-DPLCEU34.js} +342 -238
- package/dist/chunk-DPLCEU34.js.map +1 -0
- package/dist/chunk-IQMRJXEO.js +5 -4
- package/dist/chunk-IQMRJXEO.js.map +1 -1
- package/dist/chunk-L2H5GIF7.js +5 -4
- package/dist/chunk-L2H5GIF7.js.map +1 -1
- package/dist/{chunk-2V6HUWST.js → chunk-NKPFIA32.js} +19 -6
- package/dist/chunk-NKPFIA32.js.map +1 -0
- package/dist/{chunk-QNF4LJVT.js → chunk-OS7YY5R4.js} +8 -6
- package/dist/chunk-OS7YY5R4.js.map +1 -0
- package/dist/{chunk-IDNOI4OK.js → chunk-PCYYU332.js} +15 -8
- package/dist/chunk-PCYYU332.js.map +1 -0
- package/dist/{chunk-KHOA4TEI.js → chunk-PPWJK5T3.js} +60 -25
- package/dist/chunk-PPWJK5T3.js.map +1 -0
- package/dist/{chunk-N2KIFFI7.js → chunk-QZRSQVCN.js} +30 -34
- package/dist/chunk-QZRSQVCN.js.map +1 -0
- package/dist/{chunk-SZUXATOF.js → chunk-XLAOE5MV.js} +170 -76
- package/dist/chunk-XLAOE5MV.js.map +1 -0
- package/dist/{chunk-B3L6PRLX.js → chunk-ZQXZ4UGE.js} +208 -100
- package/dist/chunk-ZQXZ4UGE.js.map +1 -0
- package/dist/code.d.ts +2 -2
- package/dist/code.js +96 -52
- package/dist/code.js.map +1 -1
- package/dist/{context-OwSoVEri.d.ts → context-2wTOwxCk.d.ts} +13 -5
- package/dist/editor.d.ts +1 -1
- package/dist/editor.js +135 -52
- package/dist/editor.js.map +1 -1
- package/dist/{field-DWm5NXeV.d.ts → field-C1TdmC2t.d.ts} +1 -1
- package/dist/index.d.ts +15 -12
- package/dist/index.js +1105 -633
- package/dist/index.js.map +1 -1
- package/dist/inertia.d.ts +11 -3
- package/dist/inertia.js +66 -12
- package/dist/inertia.js.map +1 -1
- package/dist/{input-Dxnsxi-f.d.ts → input-B4uEClxB.d.ts} +1 -1
- package/dist/{json-viewer-BARA2RCW.d.ts → json-viewer-Bssv9mTD.d.ts} +1 -1
- package/dist/locales/fr.d.ts +44 -0
- package/dist/locales/fr.js +248 -0
- package/dist/locales/fr.js.map +1 -0
- package/dist/locales/pt.d.ts +10 -9
- package/dist/locales/pt.js +40 -3
- package/dist/locales/pt.js.map +1 -1
- package/dist/shells.d.ts +46 -5
- package/dist/shells.js +211 -71
- package/dist/shells.js.map +1 -1
- package/dist/{sidebar-Bp6Q46j-.d.ts → sidebar-BLL2tgTt.d.ts} +2 -2
- package/dist/types-1LUmNJf_.d.ts +41 -0
- package/dist/{types-cmBL8zOc.d.ts → types-CMZRvMV5.d.ts} +1 -1
- package/dist/{types-B-eGPoFD.d.ts → types-CfAUvz--.d.ts} +1 -1
- package/package.json +8 -2
- package/theme.css +11 -0
- package/dist/chunk-2V6HUWST.js.map +0 -1
- package/dist/chunk-3Z2VGVPI.js.map +0 -1
- package/dist/chunk-B3L6PRLX.js.map +0 -1
- package/dist/chunk-I6VVCFZ2.js.map +0 -1
- package/dist/chunk-IDNOI4OK.js.map +0 -1
- package/dist/chunk-KHOA4TEI.js.map +0 -1
- package/dist/chunk-N2KIFFI7.js.map +0 -1
- package/dist/chunk-NGMG2UWX.js +0 -172
- package/dist/chunk-NGMG2UWX.js.map +0 -1
- package/dist/chunk-QNF4LJVT.js.map +0 -1
- package/dist/chunk-SZUXATOF.js.map +0 -1
- package/dist/chunk-YBXRJSR3.js.map +0 -1
- package/dist/types-u1qfmJQi.d.ts +0 -28
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-autosave.ts","../src/hooks/use-confirm-dialog.tsx","../src/components/ui/accordion.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/appearance-toggle.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/badge.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/combobox.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/data-table-faceted-filter.tsx","../src/components/ui/data-table-row-actions.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table.tsx","../src/components/ui/calendar-popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/date-range-filter.tsx","../src/components/ui/drawer.tsx","../src/components/ui/field.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/password-input.tsx","../src/components/ui/placeholder-pattern.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/save-status.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/slider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/text-link.tsx"],"names":["useState","jsx","React","AlertDialogPrimitive","jsxs","React2","AspectRatioPrimitive","api","React4","config","ContextMenuPrimitive","CheckIcon","Check","Icon","React5","useMemo","X","format","DrawerPrimitive","React6","Fragment","Slot","React7","HoverCardPrimitive","MenubarPrimitive","CircleIcon","ChevronRightIcon","cva","React8","useId","ProgressPrimitive","RadioGroupPrimitive","React9","React10","React11","SliderPrimitive","useEffect","Sonner"],"mappings":"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","file":"index.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport const AUTOSAVE_DELAY = 700;\n\nexport interface UseAutosaveOptions<T> {\n delay?: number;\n enabled?: boolean;\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseAutosaveResult {\n status: AutosaveStatus;\n error?: string;\n flush: () => void;\n reset: () => void;\n}\n\nfunction shallowEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) {\n return true;\n }\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n const keys = Object.keys(a as object);\n\n if (keys.length !== Object.keys(b as object).length) {\n return false;\n }\n\n return keys.every((key) =>\n Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n );\n}\n\nfunction messageOf(reason: unknown): string | undefined {\n if (reason instanceof Error) {\n return reason.message;\n }\n\n return typeof reason === 'string' ? reason : undefined;\n}\n\nexport function useAutosave<T>(\n values: T,\n onSave: (values: T) => void | Promise<void>,\n options: UseAutosaveOptions<T> = {},\n): UseAutosaveResult {\n const { delay = AUTOSAVE_DELAY, enabled = true, isEqual } = options;\n\n const [status, setStatus] = useState<AutosaveStatus>('idle');\n const [error, setError] = useState<string | undefined>(undefined);\n\n const latest = useRef(values);\n const dispatched = useRef(values);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const issued = useRef(0);\n const settled = useRef(0);\n const mounted = useRef(true);\n const save = useRef(onSave);\n const equal = useRef(isEqual ?? shallowEqual);\n\n latest.current = values;\n save.current = onSave;\n equal.current = isEqual ?? shallowEqual;\n\n const run = useCallback(async () => {\n const payload = latest.current;\n const ticket = (issued.current += 1);\n\n setStatus('saving');\n setError(undefined);\n\n try {\n await save.current(payload);\n\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setStatus('saved');\n } catch (reason) {\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setError(messageOf(reason));\n setStatus('error');\n }\n }, []);\n\n const flush = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n void run();\n }, [run]);\n\n const reset = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n setError(undefined);\n setStatus('idle');\n }, []);\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n clearTimeout(timer.current);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || equal.current(values, dispatched.current)) {\n return;\n }\n\n dispatched.current = values;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => void run(), delay);\n }, [values, delay, enabled, run]);\n\n return { status, error, flush, reset };\n}\n","import { ConfirmDialog } from '@/components/ui/confirm-dialog';\nimport { useState, type ReactNode } from 'react';\n\nexport interface UseConfirmDialogOptions {\n title?: string;\n description?: string | ReactNode;\n confirmText?: string;\n cancelText?: string;\n variant?: 'destructive' | 'default';\n}\n\nexport function useConfirmDialog() {\n const [isOpen, setIsOpen] = useState(false);\n const [options, setOptions] = useState<UseConfirmDialogOptions>({});\n const [onConfirmCallback, setOnConfirmCallback] = useState<\n (() => void) | null\n >(null);\n const [onCancelCallback, setOnCancelCallback] = useState<\n (() => void) | null\n >(null);\n\n const confirm = (\n onConfirm: () => void,\n confirmOptions?: UseConfirmDialogOptions,\n onCancel?: () => void,\n ) => {\n setOptions(confirmOptions || {});\n setOnConfirmCallback(() => onConfirm);\n setOnCancelCallback(() => onCancel ?? null);\n setIsOpen(true);\n };\n\n const handleConfirm = () => {\n onConfirmCallback?.();\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n onCancelCallback?.();\n setIsOpen(false);\n };\n\n const ConfirmDialogComponent = () => (\n <ConfirmDialog\n open={isOpen}\n onOpenChange={setIsOpen}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n {...options}\n />\n );\n\n return { confirm, ConfirmDialog: ConfirmDialogComponent };\n}\n","import * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { elevatedSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Accordion({\n className,\n slotName = 'accordion',\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & SlotNameProps) {\n return (\n <AccordionPrimitive.Root\n className={cn(elevatedSurface, 'px-5 bg-card', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> &\n SlotNameProps\n>(({ className, slotName = 'accordion-item', ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-border last:border-b-0', className)}\n {...props}\n data-slot={slotName}\n />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-trigger', ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n `text-base py-4 font-medium rounded-xl data-[state=open]:font-semibold flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg]:rotate-180 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-content', ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"text-md data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all\"\n {...props}\n data-slot={slotName}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { modalSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction AlertDialog({\n slotName = 'alert-dialog',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root> & SlotNameProps) {\n return <AlertDialogPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogTrigger({\n slotName = 'alert-dialog-trigger',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger> & SlotNameProps) {\n return <AlertDialogPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogPortal({\n slotName = 'alert-dialog-portal',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal> & SlotNameProps) {\n return <AlertDialogPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogOverlay({\n className,\n slotName = 'alert-dialog-overlay',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n slotName = 'alert-dialog-content',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n} & SlotNameProps) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-size={size}\n className={cn(\n `${modalSurface} group/alert-dialog-content gap-4 p-6 md:p-8 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-200`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n slotName = 'alert-dialog-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-1.5 has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr] grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr]',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n slotName = 'alert-dialog-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-2 sm:flex-row sm:justify-end flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n slotName = 'alert-dialog-title',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n 'text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n slotName = 'alert-dialog-description',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description> &\n SlotNameProps) {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n slotName = 'alert-dialog-media',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n \"mb-2 size-16 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8 rounded-2xl inline-flex items-center justify-center bg-muted\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n slotName = 'alert-dialog-action',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n slotName = 'alert-dialog-cancel',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { toggleVariants } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: 'default',\n variant: 'default',\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n slotName = 'toggle-group',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-variant={variant}\n data-size={size}\n className={cn(\n 'group/toggle-group data-[variant=outline]:shadow-xs rounded-2xl flex items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n slotName = 'toggle-group-item',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'min-w-0 first:rounded-l-2xl last:rounded-r-2xl shrink-0 rounded-none shadow-none focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';\nimport { useAppearance, type Appearance } from '@/hooks/use-appearance';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { LucideIcon, SlotNameProps } from '@/types';\n\nexport interface AppearanceToggleLabels {\n groupLabel: string;\n lightLabel: string;\n darkLabel: string;\n systemLabel: string;\n}\n\nexport const appearanceToggleDefaultLabels: AppearanceToggleLabels = {\n groupLabel: 'Appearance',\n lightLabel: 'Light',\n darkLabel: 'Dark',\n systemLabel: 'System',\n};\n\ninterface AppearanceOption {\n value: Appearance;\n icon: LucideIcon;\n label: (labels: AppearanceToggleLabels) => string;\n}\n\nconst OPTIONS: AppearanceOption[] = [\n { value: 'light', icon: SunIcon, label: (labels) => labels.lightLabel },\n { value: 'dark', icon: MoonIcon, label: (labels) => labels.darkLabel },\n {\n value: 'system',\n icon: MonitorIcon,\n label: (labels) => labels.systemLabel,\n },\n];\n\ninterface AppearanceToggleProps extends React.ComponentProps<'div'> {\n variant?: 'segmented' | 'menu';\n labels?: Partial<AppearanceToggleLabels>;\n}\n\nfunction AppearanceToggle({\n className,\n variant = 'segmented',\n labels: labelOverrides,\n slotName = 'appearance-toggle',\n ...props\n}: AppearanceToggleProps & SlotNameProps) {\n const labels = useUiLabels(\n 'appearanceToggle',\n appearanceToggleDefaultLabels,\n labelOverrides,\n );\n const { appearance, updateAppearance } = useAppearance();\n const current = OPTIONS.find((option) => option.value === appearance);\n const CurrentIcon = current?.icon ?? MonitorIcon;\n\n if (variant === 'menu') {\n return (\n <div\n data-variant=\"menu\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n slotName=\"appearance-toggle-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={labels.groupLabel}\n >\n <CurrentIcon aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuRadioGroup\n value={appearance}\n onValueChange={(value) =>\n updateAppearance(value as Appearance)\n }\n >\n {OPTIONS.map((option) => (\n <DropdownMenuRadioItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n >\n <option.icon aria-hidden=\"true\" />\n {option.label(labels)}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n }\n\n return (\n <div\n data-variant=\"segmented\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroup\n type=\"single\"\n size=\"sm\"\n value={appearance}\n aria-label={labels.groupLabel}\n onValueChange={(value) => {\n if (value) {\n updateAppearance(value as Appearance);\n }\n }}\n >\n {OPTIONS.map((option) => (\n <ToggleGroupItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n aria-label={option.label(labels)}\n >\n <option.icon aria-hidden=\"true\" />\n <span>{option.label(labels)}</span>\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </div>\n );\n}\n\nexport { AppearanceToggle, type AppearanceToggleProps };\n","import type { SlotNameProps } from '@/types';\nimport { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\n\nfunction AspectRatio({\n slotName = 'aspect-ratio',\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root> & SlotNameProps) {\n return <AspectRatioPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nexport { AspectRatio };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-semibold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:outline-destructive',\n outline:\n 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n slotName = 'badge',\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean;\n } & SlotNameProps) {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n elevatedSurface,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n slotName = 'carousel',\n ...props\n}: React.ComponentProps<'div'> & CarouselProps & SlotNameProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n scrollPrev();\n return;\n }\n\n scrollNext();\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation ||\n (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 relative bg-card',\n className,\n )}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n slotName = 'carousel-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className={cn(nestedRadius, 'overflow-hidden')}\n data-slot={slotName}\n >\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({\n className,\n slotName = 'carousel-item',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-previous',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n slotName={slotName}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-next',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n slotName={slotName}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","'use client';\n\nimport * as React from 'react';\nimport type { TooltipValueType } from 'recharts';\nimport * as RechartsPrimitive from 'recharts';\n\nimport {\n elevatedSurface,\n menuSurface,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n slotName = 'chart',\n ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n initialDimension?: {\n width: number;\n height: number;\n };\n} & SlotNameProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 bg-card',\n \"aspect-video text-xs flex justify-center [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n 'accessibilityLayer'\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? (config[label]?.label ?? label)\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n `${menuSurface} gap-1.5 px-3 py-2 text-xs grid min-w-[8rem] items-start`,\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"gap-1.5 grid\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n const indicatorColor =\n color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 flex w-full flex-wrap items-stretch [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter &&\n item?.value !== undefined &&\n item.name ? (\n formatter(\n item.value,\n item.name,\n item,\n index,\n item.payload,\n )\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)',\n {\n 'h-2.5 w-2.5':\n indicator ===\n 'dot',\n 'w-1':\n indicator ===\n 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator ===\n 'dashed',\n 'my-0.5':\n nestLabel &&\n indicator ===\n 'dashed',\n },\n )}\n style={\n {\n '--color-bg':\n indicatorColor,\n '--color-border':\n indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel\n ? 'items-end'\n : 'items-center',\n )}\n >\n <div className=\"gap-1.5 grid\">\n {nestLabel\n ? tooltipLabel\n : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ??\n item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value ===\n 'number'\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n}: React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'gap-4 flex items-center justify-center',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-1.5 [&>svg]:h-3 [&>svg]:w-3 flex items-center [&>svg]:text-muted-foreground',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n const configLabelKey = payload[key as keyof typeof payload] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n const configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n return config[key];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Checkbox({\n className,\n slotName = 'checkbox',\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root> & SlotNameProps) {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n `peer size-5 shadow-xs shrink-0 rounded-md border border-border transition-all disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { fieldFocus } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { useState } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxLabels {\n placeholder: string;\n searchPlaceholder: string;\n emptyText: string;\n}\n\nexport const comboboxDefaultLabels: ComboboxLabels = {\n placeholder: 'Select an option',\n searchPlaceholder: 'Search...',\n emptyText: 'No results.',\n};\n\nexport interface ComboboxProps extends Omit<\n ButtonProps,\n 'value' | 'onChange' | 'children' | 'slotName'\n> {\n value: string;\n options: ComboboxOption[];\n onChange: (value: string) => void;\n placeholder?: ComboboxLabels['placeholder'];\n searchPlaceholder?: ComboboxLabels['searchPlaceholder'];\n emptyText?: ComboboxLabels['emptyText'];\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Combobox({\n value,\n options,\n onChange,\n placeholder,\n searchPlaceholder,\n emptyText,\n disabled = false,\n invalid = false,\n required,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'combobox',\n ...trigger\n}: ComboboxProps & SlotNameProps) {\n const labels = useUiLabels('combobox', comboboxDefaultLabels, {\n placeholder,\n searchPlaceholder,\n emptyText,\n });\n const [open, setOpen] = useState(false);\n const selected = options.find((option) => option.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n {...trigger}\n role=\"combobox\"\n aria-expanded={open}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n disabled={disabled}\n className={cn(\n 'h-11 rounded-2xl w-full justify-between border-border bg-muted/40 hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n fieldFocus,\n !selected && 'text-muted-foreground',\n invalid && 'border-destructive ring-destructive',\n className,\n )}\n slotName={slotName}\n >\n {selected ? selected.label : labels.placeholder}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[var(--radix-popover-trigger-width)]\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n placeholder={labels.searchPlaceholder}\n className=\"h-11\"\n />\n <CommandList>\n <CommandEmpty>{labels.emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => {\n onChange(option.value);\n setOpen(false);\n }}\n className=\"h-11 rounded-xl\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected?.value === option.value\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ContextMenu({\n slotName = 'context-menu',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root> & SlotNameProps) {\n return <ContextMenuPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuTrigger({\n slotName = 'context-menu-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger> & SlotNameProps) {\n return <ContextMenuPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuGroup({\n slotName = 'context-menu-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group> & SlotNameProps) {\n return <ContextMenuPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuPortal({\n slotName = 'context-menu-portal',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal> & SlotNameProps) {\n return <ContextMenuPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSub({\n slotName = 'context-menu-sub',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub> & SlotNameProps) {\n return <ContextMenuPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuRadioGroup({\n slotName = 'context-menu-radio-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup> &\n SlotNameProps) {\n return <ContextMenuPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n slotName = 'context-menu-sub-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n slotName = 'context-menu-sub-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n slotName = 'context-menu-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n slotName = 'context-menu-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n slotName = 'context-menu-checkbox-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n slotName = 'context-menu-radio-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n slotName = 'context-menu-label',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8 text-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n slotName = 'context-menu-separator',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n slotName = 'context-menu-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Column } from '@tanstack/react-table';\nimport { Check, PlusCircle } from 'lucide-react';\n\nexport interface DataTableFilter {\n columnId: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableServerFilter {\n paramKey: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableFacetedFilterLabels {\n noOptionsLabel: string;\n}\n\nexport const dataTableFacetedFilterDefaultLabels: DataTableFacetedFilterLabels =\n {\n noOptionsLabel: 'No options.',\n };\n\nfunction FilterPopover({\n label,\n options,\n selected,\n onToggle,\n width,\n noOptionsLabel,\n slotName = 'data-table-faceted-filter',\n}: {\n label: string;\n options: { label: string; value: string }[];\n selected: Set<string>;\n onToggle: (value: string) => void;\n width: string;\n noOptionsLabel: DataTableFacetedFilterLabels['noOptionsLabel'];\n} & SlotNameProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"h-11 gap-3 has-[>svg]:px-3 rounded-2xl border-dashed border-border\"\n slotName={slotName}\n >\n <PlusCircle className=\"size-4\" />\n {label}\n {selected.size > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 px-2 rounded-full tabular-nums\"\n >\n {selected.size}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn('p-0', width)} align=\"start\">\n <Command>\n <CommandList>\n <CommandEmpty>{noOptionsLabel}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => onToggle(option.value)}\n className=\"h-10 rounded-xl\"\n >\n <div\n className={cn(\n 'mr-2 size-4 flex items-center justify-center rounded-md border border-border',\n selected.has(option.value)\n ? 'bg-primary text-primary-foreground'\n : 'opacity-50',\n )}\n >\n {selected.has(option.value) && (\n <Check className=\"size-3\" />\n )}\n </div>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function FacetedFilter<TData>({\n column,\n filter,\n noOptionsLabel,\n}: {\n column?: Column<TData, unknown>;\n filter: DataTableFilter;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selected = new Set((column?.getFilterValue() as string[]) ?? []);\n\n const toggle = (value: string) => {\n const next = new Set(selected);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n const arr = Array.from(next);\n column?.setFilterValue(arr.length ? arr : undefined);\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selected}\n onToggle={toggle}\n width=\"w-[220px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n\nexport function ServerFacetedFilter({\n filter,\n selected,\n onChange,\n noOptionsLabel,\n}: {\n filter: DataTableServerFilter;\n selected: string[];\n onChange: (values: string[]) => void;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selectedSet = new Set(selected);\n\n const toggle = (value: string) => {\n const next = new Set(selectedSet);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n onChange(Array.from(next));\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selectedSet}\n onToggle={toggle}\n width=\"w-[240px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport type { IconComponent, SlotNameProps } from '@/types';\nimport { MoreVertical } from 'lucide-react';\n\nexport interface DataTableRowAction<TData> {\n label: string;\n icon?: IconComponent;\n variant?: 'default' | 'destructive';\n onClick: (row: TData) => void;\n}\n\nexport function RowActionsMenu<TData>({\n row,\n actions,\n slotName = 'data-table-row-actions',\n}: {\n row: TData;\n actions: DataTableRowAction<TData>[];\n} & SlotNameProps) {\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-xl text-muted-foreground hover:text-foreground\"\n >\n <MoreVertical className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"rounded-2xl\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={() => action.onClick(row)}\n className={\n action.variant === 'destructive'\n ? 'rounded-xl text-destructive focus:text-destructive'\n : 'rounded-xl'\n }\n >\n {action.icon && <action.icon className=\"size-4\" />}\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type LucideIcon, SearchX } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\nexport interface EmptyStateLabels {\n title: string;\n}\n\nexport const emptyStateLabels: EmptyStateLabels = {\n title: 'Nothing to show',\n};\n\nexport interface EmptyStateProps {\n icon?: LucideIcon;\n title?: string;\n description?: string;\n actions?: ReactNode;\n compact?: boolean;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon = SearchX,\n title = emptyStateLabels.title,\n description,\n actions,\n compact = false,\n className,\n slotName = 'empty-state',\n}: EmptyStateProps & SlotNameProps) {\n return (\n <div\n data-compact={compact || undefined}\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center text-center',\n compact ? 'gap-2 px-4 py-6' : 'gap-3 px-6 py-12',\n className,\n )}\n data-slot={slotName}\n >\n <span\n data-slot=\"empty-state-icon\"\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-surface-recessed text-muted-foreground',\n compact ? 'size-8' : 'size-10',\n )}\n >\n <Icon className={compact ? 'size-4' : 'size-5'} />\n </span>\n <div\n className={cn(\n 'max-w-md flex flex-col',\n compact ? 'gap-0.5' : 'gap-1',\n )}\n >\n <p\n data-slot=\"empty-state-title\"\n className={cn(\n 'font-semibold text-foreground',\n compact ? 'text-sm' : 'text-base',\n )}\n >\n {title}\n </p>\n {description && (\n <p\n data-slot=\"empty-state-description\"\n className=\"text-sm font-medium text-muted-foreground\"\n >\n {description}\n </p>\n )}\n </div>\n {actions && (\n <div\n data-slot=\"empty-state-actions\"\n className={cn(\n 'gap-2 flex flex-wrap items-center justify-center',\n compact ? 'mt-1' : 'mt-2',\n )}\n >\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & SlotNameProps\n>(({ className, slotName = 'table-container', ...props }, ref) => (\n <div\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative w-full overflow-hidden bg-card',\n )}\n data-slot={slotName}\n >\n <div\n className={cn(\n nestedRadius,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'w-full overflow-x-auto',\n )}\n >\n <table\n ref={ref}\n className={cn('text-sm w-full caption-bottom', className)}\n {...props}\n />\n </div>\n </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'font-medium border-t bg-muted/50 [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-11 px-4 text-xs font-medium tracking-wider [&:has([role=checkbox])]:pr-0 text-left align-middle text-muted-foreground uppercase',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-4 [&:has([role=checkbox])]:pr-0 align-middle',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\n 'mt-4 px-4 pb-4 text-sm text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n","import { Button } from '@/components/ui/button';\nimport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n FacetedFilter,\n ServerFacetedFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n type DataTableRowAction,\n RowActionsMenu,\n} from '@/components/ui/data-table-row-actions';\nimport { EmptyState } from '@/components/ui/empty-state';\nimport { Input } from '@/components/ui/input';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from '@/components/ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { elevatedSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type Row,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n ArrowUpDown,\n ChevronLeft,\n ChevronRight,\n Plus,\n Search,\n X,\n} from 'lucide-react';\nimport { type ReactNode, useMemo, useState } from 'react';\n\nexport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nexport type { DataTableRowAction } from '@/components/ui/data-table-row-actions';\n\nfunction pageRange(current: number, last: number): (number | 'ellipsis')[] {\n if (last <= 7) {\n return Array.from({ length: last }, (_, i) => i + 1);\n }\n const pages: (number | 'ellipsis')[] = [1];\n const left = Math.max(2, current - 1);\n const right = Math.min(last - 1, current + 1);\n if (left > 2) pages.push('ellipsis');\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < last - 1) pages.push('ellipsis');\n pages.push(last);\n return pages;\n}\n\nexport interface DataTableLabels {\n searchPlaceholder: string;\n emptyLabel: string;\n createLabel: string;\n clearFiltersLabel: string;\n paginationLabel: (page: number, pages: number) => string;\n noOptionsLabel: string;\n totalLabel: (total: number) => string;\n}\n\nexport const dataTableDefaultLabels: DataTableLabels = {\n searchPlaceholder: 'Search...',\n emptyLabel: 'No results.',\n createLabel: 'New',\n clearFiltersLabel: 'Clear filters',\n paginationLabel: (page, pages) => `Page ${page} of ${pages}`,\n noOptionsLabel: 'No options.',\n totalLabel: (total) => `${total.toLocaleString('en-US')} records`,\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n searchPlaceholder?: DataTableLabels['searchPlaceholder'];\n emptyLabel?: DataTableLabels['emptyLabel'];\n createLabel?: DataTableLabels['createLabel'];\n clearFiltersLabel?: DataTableLabels['clearFiltersLabel'];\n paginationLabel?: DataTableLabels['paginationLabel'];\n noOptionsLabel?: DataTableLabels['noOptionsLabel'];\n totalLabel?: DataTableLabels['totalLabel'];\n searchKey?: string;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n filters?: DataTableFilter[];\n serverFilters?: DataTableServerFilter[];\n filterValues?: Record<string, string[]>;\n onFilterChange?: (paramKey: string, values: string[]) => void;\n canClearFilters?: boolean;\n onClearFilters?: () => void;\n toolbarExtra?: ReactNode;\n toolbarAction?: ReactNode;\n renderRow?: (row: Row<TData>) => ReactNode;\n onRowClick?: (row: TData) => void;\n isRowActive?: (row: TData) => boolean;\n rowActions?: DataTableRowAction<TData>[];\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n manualPagination?: boolean;\n pageCount?: number;\n pageIndex?: number;\n total?: number;\n onPageChange?: (pageIndex: number) => void;\n onCreate?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder,\n pageSize = 10,\n pageSizeOptions = [10, 25, 50, 100],\n onPageSizeChange,\n filters,\n serverFilters,\n filterValues,\n onFilterChange,\n canClearFilters,\n onClearFilters,\n toolbarExtra,\n toolbarAction,\n emptyLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n renderRow,\n onRowClick,\n isRowActive,\n rowActions,\n searchValue,\n onSearchChange,\n manualPagination = false,\n pageCount,\n pageIndex = 0,\n total,\n onPageChange,\n onCreate,\n createLabel,\n slotName = 'data-table',\n}: DataTableProps<TData, TValue> & SlotNameProps) {\n const labels = useUiLabels('dataTable', dataTableDefaultLabels, {\n searchPlaceholder,\n emptyLabel,\n createLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n });\n const [sorting, setSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const serverSearch = onSearchChange !== undefined;\n\n const tableColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n if (!rowActions || rowActions.length === 0) {\n return columns;\n }\n\n return [\n ...columns,\n {\n id: '__actions',\n header: '',\n enableSorting: false,\n cell: ({ row }) => (\n <RowActionsMenu row={row.original} actions={rowActions} />\n ),\n },\n ];\n }, [columns, rowActions]);\n\n const table = useReactTable({\n data,\n columns: tableColumns,\n state: {\n sorting,\n columnFilters,\n ...(serverSearch ? {} : { globalFilter }),\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: serverSearch ? undefined : setGlobalFilter,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n ...(manualPagination\n ? { manualPagination: true, pageCount: pageCount ?? -1 }\n : { getPaginationRowModel: getPaginationRowModel() }),\n initialState: { pagination: { pageSize } },\n });\n\n const hasServerSelection =\n serverFilters?.some(\n (filter) => (filterValues?.[filter.paramKey]?.length ?? 0) > 0,\n ) ?? false;\n const hasToolbar =\n searchKey !== undefined ||\n (filters && filters.length > 0) ||\n (serverFilters && serverFilters.length > 0) ||\n onCreate !== undefined ||\n toolbarExtra !== undefined ||\n toolbarAction !== undefined;\n const showFooter = manualPagination || table.getPageCount() > 1;\n const currentPage = manualPagination\n ? pageIndex + 1\n : table.getState().pagination.pageIndex + 1;\n const lastPage = manualPagination\n ? Math.max(1, pageCount ?? 1)\n : table.getPageCount();\n const canPrev = manualPagination\n ? pageIndex > 0\n : table.getCanPreviousPage();\n const canNext = manualPagination\n ? pageIndex + 1 < (pageCount ?? 1)\n : table.getCanNextPage();\n const prev = () =>\n manualPagination ? onPageChange?.(pageIndex - 1) : table.previousPage();\n const next = () =>\n manualPagination ? onPageChange?.(pageIndex + 1) : table.nextPage();\n const goTo = (page: number) =>\n manualPagination\n ? onPageChange?.(page - 1)\n : table.setPageIndex(page - 1);\n\n const activePageSize = manualPagination\n ? pageSize\n : table.getState().pagination.pageSize;\n const changePageSize = (size: number) =>\n onPageSizeChange ? onPageSizeChange(size) : table.setPageSize(size);\n const sizeChoices = [...new Set([...pageSizeOptions, activePageSize])].sort(\n (a, b) => a - b,\n );\n\n return (\n <div\n className={cn(elevatedSurface, 'space-y-4 p-5 bg-card')}\n data-slot={slotName}\n >\n {hasToolbar && (\n <div className=\"gap-2 flex flex-wrap items-center\">\n {searchKey !== undefined && (\n <div className=\"relative min-w-[200px] flex-1\">\n <Search className=\"left-4 size-4 pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={\n serverSearch\n ? (searchValue ?? '')\n : globalFilter\n }\n onChange={(e) =>\n serverSearch\n ? onSearchChange?.(e.target.value)\n : setGlobalFilter(e.target.value)\n }\n placeholder={labels.searchPlaceholder}\n className={`h-11 rounded-2xl pl-11 font-medium border-none bg-muted/50 focus:bg-muted`}\n />\n </div>\n )}\n {filters?.map((filter) => (\n <FacetedFilter\n key={filter.columnId}\n column={table.getColumn(filter.columnId)}\n filter={filter}\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {serverFilters?.map((filter) => (\n <ServerFacetedFilter\n key={filter.paramKey}\n filter={filter}\n selected={filterValues?.[filter.paramKey] ?? []}\n onChange={(values) =>\n onFilterChange?.(filter.paramKey, values)\n }\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {toolbarExtra}\n {(columnFilters.length > 0 ||\n hasServerSelection ||\n (canClearFilters && onClearFilters)) && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n if (columnFilters.length > 0) {\n table.resetColumnFilters();\n }\n if (hasServerSelection || canClearFilters) {\n onClearFilters?.();\n }\n }}\n className=\"h-11 rounded-2xl\"\n >\n {labels.clearFiltersLabel}\n <X className=\"ml-1 size-4\" />\n </Button>\n )}\n {onCreate && (\n <Button\n onClick={onCreate}\n aria-label={labels.createLabel}\n size=\"icon\"\n className=\"size-11 rounded-2xl shrink-0 cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n <Plus className=\"size-5\" />\n </Button>\n )}\n {toolbarAction && (\n <div className=\"ml-auto\">{toolbarAction}</div>\n )}\n </div>\n )}\n\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className=\"h-11 px-4 font-medium tracking-wider text-[11px] text-muted-foreground uppercase\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n onClick={header.column.getToggleSortingHandler()}\n className=\"gap-1 inline-flex items-center transition-colors hover:text-foreground\"\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ArrowUpDown className=\"size-3 opacity-50\" />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) =>\n renderRow ? (\n renderRow(row)\n ) : (\n <TableRow\n key={row.id}\n onClick={\n onRowClick\n ? () => onRowClick(row.original)\n : undefined\n }\n data-active={\n isRowActive?.(row.original) || undefined\n }\n className={cn(\n 'border-border transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n 'data-[active=true]:bg-primary/5',\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className=\"px-4 py-3\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ),\n )\n ) : (\n <TableRow>\n <TableCell\n colSpan={tableColumns.length}\n className=\"h-24 p-0\"\n >\n <EmptyState compact title={labels.emptyLabel} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {showFooter && (\n <div className=\"gap-3 pt-4 flex flex-wrap items-center justify-between border-t border-border\">\n <div className=\"gap-3 flex items-center\">\n <Select\n value={String(activePageSize)}\n onValueChange={(value) =>\n changePageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-9 rounded-xl w-[74px]\">\n <span>{activePageSize}</span>\n </SelectTrigger>\n <SelectContent className=\"rounded-xl\">\n {sizeChoices.map((size) => (\n <SelectItem\n key={size}\n value={String(size)}\n className=\"font-medium\"\n >\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {labels.paginationLabel(currentPage, lastPage)}\n {total !== undefined &&\n ` · ${labels.totalLabel(total)}`}\n </span>\n </div>\n <div className=\"gap-1.5 flex items-center\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={prev}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n {pageRange(currentPage, lastPage).map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"px-1 text-sm font-medium text-muted-foreground\"\n >\n …\n </span>\n ) : (\n <Button\n key={page}\n variant=\"outline\"\n onClick={() => goTo(page)}\n className={cn(\n 'h-9 min-w-9 rounded-xl px-2.5 tabular-nums',\n page === currentPage &&\n 'border-primary bg-primary text-primary-foreground hover:bg-primary/90',\n )}\n >\n {page}\n </Button>\n ),\n )}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={next}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nexport interface CalendarPopoverProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n trigger: React.ReactNode;\n align?: React.ComponentProps<typeof PopoverContent>['align'];\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CalendarPopover({\n open,\n onOpenChange,\n trigger,\n align = 'start',\n className,\n children,\n slotName = 'calendar-popover',\n}: CalendarPopoverProps & SlotNameProps) {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn('p-2 w-auto', className)}\n align={align}\n sideOffset={4}\n collisionPadding={16}\n slotName={slotName}\n >\n {children}\n </PopoverContent>\n </Popover>\n );\n}\n","import { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { fieldFocus, fieldSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarIcon, X } from 'lucide-react';\nimport { useState, type ComponentProps } from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nexport interface DatePickerLabels {\n placeholder: string;\n dateFormat: string;\n clearLabel: string;\n}\n\nexport const datePickerDefaultLabels: DatePickerLabels = {\n placeholder: 'Pick a date',\n dateFormat: 'dd MMM yy',\n clearLabel: 'Clear date',\n};\n\ntype DatePickerTriggerProps = Omit<\n ComponentProps<'button'>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'children'\n>;\n\nexport interface DatePickerProps\n extends Partial<DatePickerLabels>, DatePickerTriggerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (value: Date | undefined) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDays?: (date: Date) => boolean;\n clearable?: boolean;\n invalid?: boolean;\n required?: boolean;\n formatDate?: (value: Date) => string;\n}\n\nconst triggerClasses = `h-11 px-4 font-medium flex w-full cursor-pointer items-center gap-2 text-left transition-all disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${fieldSurface} ${fieldFocus}`;\n\nfunction boundaries(\n minDate?: Date,\n maxDate?: Date,\n disabledDays?: (date: Date) => boolean,\n): Matcher[] {\n const matchers: Matcher[] = [];\n\n if (minDate) {\n matchers.push({ before: minDate });\n }\n\n if (maxDate) {\n matchers.push({ after: maxDate });\n }\n\n if (disabledDays) {\n matchers.push(disabledDays);\n }\n\n return matchers;\n}\n\nexport function DatePicker(props: DatePickerProps & SlotNameProps) {\n const {\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDays,\n disabled = false,\n clearable = true,\n invalid = false,\n required,\n formatDate,\n placeholder,\n dateFormat,\n clearLabel,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'date-picker',\n ...trigger\n } = props;\n\n const labels = useUiLabels('datePicker', datePickerDefaultLabels, {\n placeholder,\n dateFormat,\n clearLabel,\n });\n const [open, setOpen] = useState(false);\n const [ownValue, setOwnValue] = useState<Date | undefined>(defaultValue);\n\n const isControlled = 'value' in props;\n const selected = isControlled ? value : ownValue;\n const showClear = clearable && !disabled && selected !== undefined;\n const label = selected\n ? (formatDate?.(selected) ?? format(selected, labels.dateFormat))\n : labels.placeholder;\n\n function commit(next: Date | undefined): void {\n if (!isControlled) {\n setOwnValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <div className={cn('relative w-full', className)} data-slot={slotName}>\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n trigger={\n <button\n {...trigger}\n type=\"button\"\n data-slot=\"date-picker-trigger\"\n disabled={disabled}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n className={cn(triggerClasses, showClear && 'pr-11')}\n >\n <CalendarIcon className=\"size-4 shrink-0 opacity-60\" />\n <span\n className={cn(\n 'truncate',\n !selected && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </button>\n }\n >\n <Calendar\n mode=\"single\"\n autoFocus\n selected={selected}\n defaultMonth={selected ?? minDate}\n startMonth={minDate}\n endMonth={maxDate}\n disabled={boundaries(minDate, maxDate, disabledDays)}\n onSelect={(date) => {\n if (!date) {\n return;\n }\n\n commit(date);\n setOpen(false);\n }}\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n {showClear && (\n <button\n type=\"button\"\n data-slot=\"date-picker-clear\"\n aria-label={labels.clearLabel}\n onClick={() => commit(undefined)}\n className={`size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`}\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n}\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarRange, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\n\nfunction parse(value?: string): Date | undefined {\n return value ? new Date(`${value}T00:00:00`) : undefined;\n}\n\nexport interface DateRangeFilterLabels {\n emptyLabel: string;\n dateFormat: string;\n}\n\nexport const dateRangeFilterDefaultLabels: DateRangeFilterLabels = {\n emptyLabel: 'Date range',\n dateFormat: 'dd MMM yy',\n};\n\nexport interface DateRangeFilterProps\n extends\n Partial<DateRangeFilterLabels>,\n Omit<ButtonProps, 'onChange' | 'children' | 'value' | 'slotName'> {\n from?: string;\n to?: string;\n onChange: (range: { from?: string; to?: string }) => void;\n}\n\nexport function DateRangeFilter({\n from,\n to,\n onChange,\n emptyLabel,\n dateFormat,\n className,\n slotName = 'date-range-filter',\n ...trigger\n}: DateRangeFilterProps & SlotNameProps) {\n const labels = useUiLabels(\n 'dateRangeFilter',\n dateRangeFilterDefaultLabels,\n { emptyLabel, dateFormat },\n );\n const [open, setOpen] = useState(false);\n const selected: DateRange | undefined =\n from || to ? { from: parse(from), to: parse(to) } : undefined;\n const label = from\n ? to && to !== from\n ? `${format(parse(from)!, labels.dateFormat)} - ${format(parse(to)!, labels.dateFormat)}`\n : format(parse(from)!, labels.dateFormat)\n : labels.emptyLabel;\n\n return (\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n align=\"end\"\n trigger={\n <Button\n variant=\"outline\"\n {...trigger}\n className={cn(\n 'h-11 rounded-2xl cursor-pointer border-dashed border-border',\n className,\n )}\n slotName={slotName}\n >\n <CalendarRange className=\"mr-2 size-4\" />\n {label}\n {(from || to) && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(event) => {\n event.stopPropagation();\n onChange({ from: undefined, to: undefined });\n }}\n className=\"ml-2 inline-flex\"\n >\n <X className=\"size-3.5 opacity-60 hover:opacity-100\" />\n </span>\n )}\n </Button>\n }\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n defaultMonth={parse(from)}\n selected={selected}\n onSelect={(range) =>\n onChange({\n from: range?.from\n ? format(range.from, 'yyyy-MM-dd')\n : undefined,\n to: range?.to\n ? format(range.to, 'yyyy-MM-dd')\n : undefined,\n })\n }\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n );\n}\n","import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { floatingSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Drawer({\n slotName = 'drawer',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root> & SlotNameProps) {\n return <DrawerPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction DrawerTrigger({\n slotName = 'drawer-trigger',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger> & SlotNameProps) {\n return <DrawerPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DrawerPortal({\n slotName = 'drawer-portal',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal> & SlotNameProps) {\n return <DrawerPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DrawerClose({\n slotName = 'drawer-close',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close> & SlotNameProps) {\n return <DrawerPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction DrawerOverlay({\n className,\n slotName = 'drawer-overlay',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay> & SlotNameProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n slotName = 'drawer-content',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & SlotNameProps) {\n return (\n <DrawerPortal slotName=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n `${floatingSurface} group/drawer-content fixed z-50 flex h-auto flex-col border-border`,\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:rounded-b-3xl data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:rounded-t-3xl data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:sm:max-w-sm data-[vaul-drawer-direction=right]:rounded-l-3xl data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=left]:rounded-r-3xl data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"mt-4 h-2 mx-auto hidden w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n slotName = 'drawer-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-0.5 p-4 md:gap-1.5 md:text-left flex flex-col group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerFooter({\n className,\n slotName = 'drawer-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n slotName = 'drawer-title',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title> & SlotNameProps) {\n return (\n <DrawerPrimitive.Title\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n slotName = 'drawer-description',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description> & SlotNameProps) {\n return (\n <DrawerPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport {\n FieldContext,\n useField,\n type FieldContextValue,\n type FieldOrientation,\n} from '@/components/ui/field-context';\nimport { FieldError } from '@/components/ui/field-error';\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nexport interface FieldLabels {\n requiredLabel: string;\n}\n\ninterface FieldProps extends React.ComponentProps<'div'> {\n orientation?: FieldOrientation;\n error?: string;\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Field({\n className,\n children,\n id,\n orientation = 'vertical',\n error,\n invalid,\n required = false,\n slotName = 'field',\n ...props\n}: FieldProps & SlotNameProps) {\n const generatedId = React.useId();\n const fieldId = id ?? generatedId;\n const [hasDescription, setHasDescription] = React.useState(false);\n const isInvalid = invalid ?? Boolean(error);\n\n const field = React.useMemo<FieldContextValue>(\n () => ({\n controlId: fieldId,\n descriptionId: `${fieldId}-description`,\n errorId: `${fieldId}-error`,\n orientation,\n invalid: isInvalid,\n required,\n hasDescription,\n setHasDescription,\n }),\n [fieldId, orientation, isInvalid, required, hasDescription],\n );\n\n return (\n <FieldContext.Provider value={field}>\n <div\n data-orientation={orientation}\n data-invalid={isInvalid ? 'true' : undefined}\n className={cn(\n 'group/field',\n orientation === 'horizontal'\n ? 'gap-x-4 gap-y-1 grid grid-cols-[1fr_auto] items-center'\n : 'gap-2 flex flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <FieldError message={error} />\n </div>\n </FieldContext.Provider>\n );\n}\n\nexport function FieldGroup({\n className,\n slotName = 'field-group',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-6 flex w-full flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\ninterface FieldLabelProps extends React.ComponentProps<typeof Label> {\n requiredLabel?: FieldLabels['requiredLabel'];\n}\n\nexport function FieldLabel({\n className,\n children,\n requiredLabel = 'Required',\n slotName = 'field-label',\n ...props\n}: FieldLabelProps & SlotNameProps) {\n const { controlId, invalid, required } = useField();\n\n return (\n <Label\n htmlFor={controlId}\n className={cn(\n 'gap-1 flex items-center group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-1',\n invalid && 'text-destructive',\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {children}\n {required ? (\n <>\n <span\n data-slot=\"field-required\"\n aria-hidden=\"true\"\n className=\"text-destructive\"\n >\n *\n </span>\n <span className=\"sr-only\">{requiredLabel}</span>\n </>\n ) : null}\n </Label>\n );\n}\n\nexport function FieldDescription({\n className,\n slotName = 'field-description',\n ...props\n}: React.ComponentProps<'p'> & SlotNameProps) {\n const { descriptionId, setHasDescription } = useField();\n\n React.useEffect(() => {\n setHasDescription(true);\n\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <p\n id={descriptionId}\n className={cn(\n 'ml-1 text-xs font-medium text-muted-foreground group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport function FieldControl({\n className,\n ...props\n}: React.ComponentProps<typeof Slot>) {\n const {\n controlId,\n descriptionId,\n errorId,\n invalid,\n required,\n hasDescription,\n } = useField();\n\n const requiredProps: React.InputHTMLAttributes<HTMLElement> = required\n ? { required: true }\n : {};\n\n const describedBy = [\n hasDescription ? descriptionId : null,\n invalid ? errorId : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Slot\n data-field-control=\"true\"\n id={controlId}\n aria-describedby={describedBy || undefined}\n aria-invalid={invalid ? true : undefined}\n {...requiredProps}\n className={cn(\n 'group-data-[orientation=horizontal]/field:col-start-2 group-data-[orientation=horizontal]/field:row-span-2 group-data-[orientation=horizontal]/field:row-start-1 group-data-[orientation=horizontal]/field:justify-self-end',\n className,\n )}\n {...props}\n />\n );\n}\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from 'react-hook-form';\n\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & SlotNameProps\n>(({ className, slotName = 'form-item', ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn('space-y-2', className)}\n {...props}\n data-slot={slotName}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\n 'font-medium text-[0.8rem] text-destructive',\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","'use client';\n\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction HoverCard({\n slotName = 'hover-card',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root> & SlotNameProps) {\n return <HoverCardPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardTrigger({\n slotName = 'hover-card-trigger',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger> & SlotNameProps) {\n return <HoverCardPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n slotName = 'hover-card-content',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> & SlotNameProps) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `${panelSurface} w-64 p-4 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 origin-(--radix-hover-card-content-transform-origin) bg-popover/90 outline-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n","import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Menubar({\n className,\n slotName = 'menubar',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root> & SlotNameProps) {\n return (\n <MenubarPrimitive.Root\n className={cn(\n 'h-9 gap-1 p-1 shadow-sm backdrop-blur-xl rounded-2xl flex items-center border border-border bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarMenu({\n slotName = 'menubar-menu',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu> & SlotNameProps) {\n return <MenubarPrimitive.Menu {...props} data-slot={slotName} />;\n}\n\nfunction MenubarGroup({\n slotName = 'menubar-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group> & SlotNameProps) {\n return <MenubarPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction MenubarPortal({\n slotName = 'menubar-portal',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal> & SlotNameProps) {\n return <MenubarPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction MenubarRadioGroup({\n slotName = 'menubar-radio-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup> & SlotNameProps) {\n return <MenubarPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction MenubarTrigger({\n className,\n slotName = 'menubar-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger> & SlotNameProps) {\n return (\n <MenubarPrimitive.Trigger\n className={cn(\n 'px-2 py-1 text-sm font-medium rounded-xl flex items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = 'start',\n alignOffset = -4,\n sideOffset = 8,\n slotName = 'menubar-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content> & SlotNameProps) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n slotName = 'menubar-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n slotName = 'menubar-checkbox-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.CheckboxItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n slotName = 'menubar-radio-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.RadioItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n slotName = 'menubar-label',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n slotName = 'menubar-separator',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator> & SlotNameProps) {\n return (\n <MenubarPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n slotName = 'menubar-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSub({\n slotName = 'menubar-sub',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub> & SlotNameProps) {\n return <MenubarPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n slotName = 'menubar-sub-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm data-[inset]:pl-8 rounded-xl flex cursor-default items-center outline-none select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"h-4 w-4 ml-auto\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n slotName = 'menubar-sub-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent> & SlotNameProps) {\n return (\n <MenubarPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n MenubarGroup,\n MenubarItem,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n};\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n slotName = 'navigation-menu',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n} & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n slotName = 'navigation-menu-list',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n 'group gap-1 flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n slotName = 'navigation-menu-item',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn('relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-11 w-max items-center justify-center rounded-xl bg-background px-4 text-sm font-medium data-[state=open]:font-semibold hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-accent/50 data-[state=open]:bg-accent/50 data-[active=true]:text-accent-foreground transition-[color,box-shadow] outline-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring',\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n slotName = 'navigation-menu-trigger',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n data-slot={slotName}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"ml-1 size-3 relative top-[1px] transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n slotName = 'navigation-menu-content',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 p-2 pr-2.5 md:absolute md:w-auto w-full',\n 'group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:backdrop-blur-xl group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover/90 group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n slotName = 'navigation-menu-viewport',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport> &\n SlotNameProps) {\n return (\n <div\n className={cn(\n 'left-0 absolute top-full isolate z-50 flex justify-center',\n )}\n >\n <NavigationMenuPrimitive.Viewport\n className={cn(\n `${panelSurface} origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 mt-1.5 md:w-[var(--radix-navigation-menu-viewport-width)] relative h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden bg-popover/90`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n slotName = 'navigation-menu-link',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"gap-1 p-2 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl data-[active=true]:font-semibold flex flex-col transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n slotName = 'navigation-menu-indicator',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Indicator\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in h-1.5 top-full z-[1] flex items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"h-2 w-2 shadow-md rounded-tl-xs relative top-[60%] rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n NavigationMenuViewport,\n};\n","import {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants, type Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Pagination({\n className,\n slotName = 'pagination',\n ...props\n}: React.ComponentProps<'nav'> & SlotNameProps) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n slotName = 'pagination-content',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n className={cn('gap-1 flex flex-row items-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationItem({\n slotName = 'pagination-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return <li {...props} data-slot={slotName} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>;\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n slotName = 'pagination-link',\n ...props\n}: PaginationLinkProps & SlotNameProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"sm:block hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"sm:block hidden\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n slotName = 'pagination-ellipsis',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n aria-hidden\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import { Eye, EyeOff } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\n\nexport interface PasswordInputLabels {\n showLabel: string;\n hideLabel: string;\n}\n\nexport const passwordInputDefaultLabels: PasswordInputLabels = {\n showLabel: 'Show password',\n hideLabel: 'Hide password',\n};\n\ninterface PasswordInputProps extends Omit<\n React.ComponentProps<typeof Input>,\n 'type'\n> {\n revealable?: boolean;\n showLabel?: PasswordInputLabels['showLabel'];\n hideLabel?: PasswordInputLabels['hideLabel'];\n}\n\nexport function PasswordInput({\n className,\n revealable = true,\n showLabel,\n hideLabel,\n slotName = 'password-input',\n ...props\n}: PasswordInputProps & SlotNameProps) {\n const labels = useUiLabels('passwordInput', passwordInputDefaultLabels, {\n showLabel,\n hideLabel,\n });\n const [visible, setVisible] = React.useState(false);\n\n return (\n <div className=\"relative w-full\" data-slot={slotName}>\n <Input\n type={visible ? 'text' : 'password'}\n className={cn(revealable && 'pr-12', className)}\n {...props}\n />\n {revealable ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n slotName=\"password-input-toggle\"\n aria-label={visible ? labels.hideLabel : labels.showLabel}\n aria-pressed={visible}\n disabled={props.disabled}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setVisible((current) => !current)}\n className=\"right-1 absolute top-1/2 -translate-y-1/2\"\n >\n {visible ? (\n <EyeOff aria-hidden=\"true\" />\n ) : (\n <Eye aria-hidden=\"true\" />\n )}\n </Button>\n ) : null}\n </div>\n );\n}\n","import type { SlotNameProps } from '@/types';\nimport { useId } from 'react';\n\ninterface PlaceholderPatternProps {\n className?: string;\n}\n\nexport function PlaceholderPattern({\n className,\n slotName = 'placeholder-pattern',\n}: PlaceholderPatternProps & SlotNameProps) {\n const patternId = useId();\n\n return (\n <svg className={className} fill=\"none\" data-slot={slotName}>\n <defs>\n <pattern\n id={patternId}\n x=\"0\"\n y=\"0\"\n width=\"10\"\n height=\"10\"\n patternUnits=\"userSpaceOnUse\"\n >\n <path\n d=\"M-3 13 15-5M-5 5l18-18M-1 21 17 3\"\n stroke=\"currentColor\"\n ></path>\n </pattern>\n </defs>\n <rect\n stroke=\"none\"\n fill={`url(#${patternId})`}\n width=\"100%\"\n height=\"100%\"\n ></rect>\n </svg>\n );\n}\n","'use client';\n\nimport { Progress as ProgressPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Progress({\n className,\n value,\n slotName = 'progress',\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & SlotNameProps) {\n return (\n <ProgressPrimitive.Root\n className={cn(\n 'h-2 relative w-full overflow-hidden rounded-full bg-primary/20',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","import { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction RadioGroup({\n className,\n slotName = 'radio-group',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Root\n className={cn('gap-3 grid', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n slotName = 'radio-group-item',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n `size-5 shadow-xs aspect-square shrink-0 rounded-full border border-border text-primary transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"size-2.5 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","'use client';\n\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { elevatedSurface, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ResizablePanelGroup({\n className,\n slotName = 'resizable-panel-group',\n ...props\n}: ResizablePrimitive.GroupProps & SlotNameProps) {\n return (\n <ResizablePrimitive.Group\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'flex h-full w-full overflow-hidden bg-card aria-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ResizablePanel({\n slotName = 'resizable-panel',\n ...props\n}: ResizablePrimitive.PanelProps & SlotNameProps) {\n return <ResizablePrimitive.Panel {...props} data-slot={slotName} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n slotName = 'resizable-handle',\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean;\n} & SlotNameProps) {\n return (\n <ResizablePrimitive.Separator\n className={cn(\n 'after:inset-y-0 after:w-1 aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:translate-x-0 relative flex w-px items-center justify-center bg-border after:absolute after:left-1/2 after:-translate-x-1/2 focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {withHandle && (\n <div className=\"h-8 w-1.5 z-10 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-muted-foreground/60\" />\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","import { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, TriangleAlert } from 'lucide-react';\nimport * as React from 'react';\n\nexport type SaveStatusState = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusLabels {\n error: string;\n idle: string;\n saved: string;\n saving: string;\n}\n\nexport const saveStatusLabels: SaveStatusLabels = {\n error: 'Your changes could not be saved',\n idle: 'Changes are saved automatically',\n saved: 'Saved',\n saving: 'Saving',\n};\n\nexport const SAVED_DURATION = 2000;\n\nexport interface SaveStatusProps extends React.ComponentProps<'div'> {\n status: SaveStatusState;\n message?: string;\n showIdle?: boolean;\n savedDuration?: number;\n labels?: Partial<SaveStatusLabels>;\n}\n\nfunction SaveStatus({\n status,\n message,\n showIdle = false,\n savedDuration = SAVED_DURATION,\n labels,\n className,\n slotName = 'save-status',\n ...props\n}: SaveStatusProps & SlotNameProps) {\n const text = useUiLabels('saveStatus', saveStatusLabels, labels);\n const [faded, setFaded] = React.useState(false);\n\n React.useEffect(() => {\n if (status !== 'saved' || savedDuration <= 0) {\n setFaded(false);\n\n return;\n }\n\n setFaded(false);\n const timer = setTimeout(() => setFaded(true), savedDuration);\n\n return () => clearTimeout(timer);\n }, [status, savedDuration, message]);\n\n const hidden = status === 'saved' && faded;\n\n return (\n <div\n {...props}\n data-state={status}\n data-faded={hidden || undefined}\n role=\"status\"\n aria-live=\"polite\"\n aria-hidden={hidden || undefined}\n className={cn(\n 'gap-2 text-xs font-medium min-h-5 flex items-center transition-opacity duration-300',\n hidden ? 'opacity-0' : 'opacity-100',\n className,\n )}\n data-slot={slotName}\n >\n {status === 'idle' && showIdle && (\n <span\n data-slot=\"save-status-idle\"\n className=\"text-muted-foreground\"\n >\n {text.idle}\n </span>\n )}\n\n {status === 'saving' && (\n <span\n data-slot=\"save-status-saving\"\n className=\"gap-2 flex items-center text-muted-foreground\"\n >\n <Spinner size=\"sm\" label=\"\" aria-hidden=\"true\" />\n {text.saving}\n </span>\n )}\n\n {status === 'saved' && (\n <span\n data-slot=\"save-status-saved\"\n className=\"gap-2 flex items-center text-success\"\n >\n <Check aria-hidden=\"true\" className=\"size-3.5\" />\n {text.saved}\n </span>\n )}\n\n {status === 'error' && (\n <span\n data-slot=\"save-status-error\"\n className=\"gap-2 flex items-center text-destructive\"\n >\n <TriangleAlert aria-hidden=\"true\" className=\"size-3.5\" />\n {message ?? text.error}\n </span>\n )}\n </div>\n );\n}\n\nexport { SaveStatus };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> &\n SlotNameProps\n>(({ className, children, slotName = 'scroll-area', ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative overflow-hidden bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n > &\n SlotNameProps\n>(\n (\n {\n className,\n orientation = 'vertical',\n slotName = 'scroll-area-scrollbar',\n ...props\n },\n ref,\n ) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' &&\n 'w-2.5 h-full border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n ),\n);\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { Slider as SliderPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n slotName = 'slider',\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & SlotNameProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n 'data-[orientation=vertical]:min-h-44 relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n 'data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n 'size-5 shadow-sm block shrink-0 rounded-full border border-primary bg-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50',\n focusRing,\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nfunction useDocumentScheme(): 'light' | 'dark' {\n const [scheme, setScheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n const read = () =>\n setScheme(root.classList.contains('dark') ? 'dark' : 'light');\n\n read();\n\n const observer = new MutationObserver(read);\n observer.observe(root, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return scheme;\n}\n\nconst Toaster = ({ theme, ...props }: ToasterProps) => {\n const scheme = useDocumentScheme();\n\n return (\n <Sonner\n theme={theme ?? scheme}\n className=\"toaster group [&_[data-sonner-toast]]:shadow-2xl [&_[data-sonner-toast]]:backdrop-blur-xl\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg':\n 'color-mix(in oklab, var(--popover) 90%, transparent)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': '1rem',\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst statusBadgeVariants = cva('', {\n variants: {\n status: {\n neutral: 'border-border bg-muted text-muted-foreground',\n info: 'border-info/20 bg-info/10 text-info',\n success: 'border-success/20 bg-success/10 text-success',\n warning: 'border-warning/20 bg-warning/10 text-warning',\n danger: 'border-destructive/20 bg-destructive/10 text-destructive',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n});\n\ntype StatusBadgeStatus = NonNullable<\n VariantProps<typeof statusBadgeVariants>['status']\n>;\n\ninterface StatusBadgeProps\n extends\n Omit<React.ComponentProps<typeof Badge>, 'variant'>,\n VariantProps<typeof statusBadgeVariants> {\n dot?: boolean;\n}\n\nfunction StatusBadge({\n className,\n status = 'neutral',\n dot = false,\n children,\n slotName = 'status-badge',\n ...props\n}: StatusBadgeProps & SlotNameProps) {\n const resolvedStatus: StatusBadgeStatus = status ?? 'neutral';\n\n return (\n <Badge\n variant=\"outline\"\n data-status={resolvedStatus}\n className={cn(\n statusBadgeVariants({ status: resolvedStatus }),\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {dot && (\n <span\n aria-hidden=\"true\"\n data-slot=\"status-badge-dot\"\n className=\"size-1.5 shrink-0 rounded-full bg-current\"\n />\n )}\n {children}\n </Badge>\n );\n}\n\nexport {\n StatusBadge,\n statusBadgeVariants,\n type StatusBadgeProps,\n type StatusBadgeStatus,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst textLinkVariants = cva(\n `cursor-pointer rounded-xl underline decoration-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current ${focusRing}`,\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground hover:text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ninterface TextLinkProps\n extends React.ComponentProps<'a'>, VariantProps<typeof textLinkVariants> {\n asChild?: boolean;\n}\n\nfunction TextLink({\n className,\n variant = 'default',\n asChild = false,\n slotName = 'text-link',\n ...props\n}: TextLinkProps & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-variant={variant}\n className={cn(textLinkVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { TextLink, textLinkVariants, type TextLinkProps };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-autosave.ts","../src/hooks/use-confirm-dialog.tsx","../src/components/ui/accordion.tsx","../src/components/ui/akira-mark.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/appearance-toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/badge.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/combobox.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/data-table-faceted-filter.tsx","../src/components/ui/data-table-row-actions.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table.tsx","../src/components/ui/calendar-popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/date-range-filter.tsx","../src/components/ui/drawer.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/placeholder-pattern.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/save-status.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/slider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/text-link.tsx","../src/index.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport const AUTOSAVE_DELAY = 700;\n\nexport interface UseAutosaveOptions<T> {\n delay?: number;\n enabled?: boolean;\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseAutosaveResult {\n status: AutosaveStatus;\n error?: string;\n flush: () => void;\n reset: () => void;\n}\n\nfunction shallowEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) {\n return true;\n }\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n const keys = Object.keys(a as object);\n\n if (keys.length !== Object.keys(b as object).length) {\n return false;\n }\n\n return keys.every((key) =>\n Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n );\n}\n\nfunction messageOf(reason: unknown): string | undefined {\n if (reason instanceof Error) {\n return reason.message;\n }\n\n return typeof reason === 'string' ? reason : undefined;\n}\n\nexport function useAutosave<T>(\n values: T,\n onSave: (values: T) => void | Promise<void>,\n options: UseAutosaveOptions<T> = {},\n): UseAutosaveResult {\n const { delay = AUTOSAVE_DELAY, enabled = true, isEqual } = options;\n\n const [status, setStatus] = useState<AutosaveStatus>('idle');\n const [error, setError] = useState<string | undefined>(undefined);\n\n const latest = useRef(values);\n const dispatched = useRef(values);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const issued = useRef(0);\n const settled = useRef(0);\n const mounted = useRef(true);\n const save = useRef(onSave);\n const equal = useRef(isEqual ?? shallowEqual);\n\n latest.current = values;\n save.current = onSave;\n equal.current = isEqual ?? shallowEqual;\n\n const run = useCallback(async () => {\n const payload = latest.current;\n const ticket = (issued.current += 1);\n\n setStatus('saving');\n setError(undefined);\n\n try {\n await save.current(payload);\n\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setStatus('saved');\n } catch (reason) {\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setError(messageOf(reason));\n setStatus('error');\n }\n }, []);\n\n const flush = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n void run();\n }, [run]);\n\n const reset = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n setError(undefined);\n setStatus('idle');\n }, []);\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n clearTimeout(timer.current);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || equal.current(values, dispatched.current)) {\n return;\n }\n\n dispatched.current = values;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => void run(), delay);\n }, [values, delay, enabled, run]);\n\n return { status, error, flush, reset };\n}\n","import { ConfirmDialog } from '@/components/ui/confirm-dialog';\nimport { useState, type ReactNode } from 'react';\n\nexport interface UseConfirmDialogOptions {\n title?: string;\n description?: string | ReactNode;\n confirmText?: string;\n cancelText?: string;\n variant?: 'destructive' | 'default';\n}\n\nexport function useConfirmDialog() {\n const [isOpen, setIsOpen] = useState(false);\n const [options, setOptions] = useState<UseConfirmDialogOptions>({});\n const [onConfirmCallback, setOnConfirmCallback] = useState<\n (() => void) | null\n >(null);\n const [onCancelCallback, setOnCancelCallback] = useState<\n (() => void) | null\n >(null);\n\n const confirm = (\n onConfirm: () => void,\n confirmOptions?: UseConfirmDialogOptions,\n onCancel?: () => void,\n ) => {\n setOptions(confirmOptions || {});\n setOnConfirmCallback(() => onConfirm);\n setOnCancelCallback(() => onCancel ?? null);\n setIsOpen(true);\n };\n\n const handleConfirm = () => {\n onConfirmCallback?.();\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n onCancelCallback?.();\n setIsOpen(false);\n };\n\n const ConfirmDialogComponent = () => (\n <ConfirmDialog\n open={isOpen}\n onOpenChange={setIsOpen}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n {...options}\n />\n );\n\n return { confirm, ConfirmDialog: ConfirmDialogComponent };\n}\n","import * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { elevatedSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Accordion({\n className,\n slotName = 'accordion',\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & SlotNameProps) {\n return (\n <AccordionPrimitive.Root\n className={cn(elevatedSurface, 'px-5 bg-card', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> &\n SlotNameProps\n>(({ className, slotName = 'accordion-item', ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-border last:border-b-0', className)}\n {...props}\n data-slot={slotName}\n />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-trigger', ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n `text-base py-4 font-medium rounded-xl data-[state=open]:font-semibold flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg]:rotate-180 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-content', ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"text-md data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all\"\n {...props}\n data-slot={slotName}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n","import * as React from 'react';\n\nimport type { SlotNameProps } from '@/types';\n\nexport type AkiraMarkProps = React.SVGProps<SVGSVGElement>;\n\nfunction AkiraMark({\n slotName = 'akira-mark',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: AkiraMarkProps & SlotNameProps) {\n const isLabelled = ariaLabel !== undefined || ariaLabelledBy !== undefined;\n\n return (\n <svg\n viewBox=\"0 0 32.06 30.95\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-hidden={isLabelled ? undefined : true}\n role={isLabelled ? 'img' : undefined}\n data-slot={slotName}\n >\n <path d=\"M30.5,17.75,21.6,2.25h0a4.42,4.42,0,0,0-7.7,0L.4,25.85a3.29,3.29,0,0,0-.4,1.7A3.35,3.35,0,0,0,3.3,31a3.24,3.24,0,0,0,2.9-1.7l10.7-18.7a1,1,0,0,1,1.8,0l3.4,5.9a.88.88,0,0,1-.8,1.3H17.5a3.35,3.35,0,0,0-3.3,3.4h0a3.35,3.35,0,0,0,3.3,3.4H28.8a3.24,3.24,0,0,0,2.8-4.9Z\" />\n </svg>\n );\n}\n\nexport { AkiraMark };\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { modalSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction AlertDialog({\n slotName = 'alert-dialog',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root> & SlotNameProps) {\n return <AlertDialogPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogTrigger({\n slotName = 'alert-dialog-trigger',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger> & SlotNameProps) {\n return <AlertDialogPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogPortal({\n slotName = 'alert-dialog-portal',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal> & SlotNameProps) {\n return <AlertDialogPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogOverlay({\n className,\n slotName = 'alert-dialog-overlay',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n slotName = 'alert-dialog-content',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n} & SlotNameProps) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-size={size}\n className={cn(\n `${modalSurface} group/alert-dialog-content gap-4 p-6 md:p-8 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-200`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n slotName = 'alert-dialog-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-1.5 has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr] grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr]',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n slotName = 'alert-dialog-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-2 sm:flex-row sm:justify-end flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n slotName = 'alert-dialog-title',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n 'text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n slotName = 'alert-dialog-description',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description> &\n SlotNameProps) {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n slotName = 'alert-dialog-media',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n \"mb-2 size-16 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8 rounded-2xl inline-flex items-center justify-center bg-muted\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n slotName = 'alert-dialog-action',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n slotName = 'alert-dialog-cancel',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import { MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';\nimport { useAppearance, type Appearance } from '@/hooks/use-appearance';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { LucideIcon, SlotNameProps } from '@/types';\n\nexport interface AppearanceToggleLabels {\n groupLabel: string;\n lightLabel: string;\n darkLabel: string;\n systemLabel: string;\n}\n\nexport const appearanceToggleDefaultLabels: AppearanceToggleLabels = {\n groupLabel: 'Appearance',\n lightLabel: 'Light',\n darkLabel: 'Dark',\n systemLabel: 'System',\n};\n\ninterface AppearanceOption {\n value: Appearance;\n icon: LucideIcon;\n label: (labels: AppearanceToggleLabels) => string;\n}\n\nconst OPTIONS: AppearanceOption[] = [\n { value: 'light', icon: SunIcon, label: (labels) => labels.lightLabel },\n { value: 'dark', icon: MoonIcon, label: (labels) => labels.darkLabel },\n {\n value: 'system',\n icon: MonitorIcon,\n label: (labels) => labels.systemLabel,\n },\n];\n\ninterface AppearanceToggleProps extends React.ComponentProps<'div'> {\n variant?: 'segmented' | 'menu';\n labels?: Partial<AppearanceToggleLabels>;\n}\n\nfunction AppearanceToggle({\n className,\n variant = 'segmented',\n labels: labelOverrides,\n slotName = 'appearance-toggle',\n ...props\n}: AppearanceToggleProps & SlotNameProps) {\n const labels = useUiLabels(\n 'appearanceToggle',\n appearanceToggleDefaultLabels,\n labelOverrides,\n );\n const { appearance, updateAppearance } = useAppearance();\n const current = OPTIONS.find((option) => option.value === appearance);\n const CurrentIcon = current?.icon ?? MonitorIcon;\n\n if (variant === 'menu') {\n return (\n <div\n data-variant=\"menu\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n slotName=\"appearance-toggle-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={labels.groupLabel}\n >\n <CurrentIcon aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuRadioGroup\n value={appearance}\n onValueChange={(value) =>\n updateAppearance(value as Appearance)\n }\n >\n {OPTIONS.map((option) => (\n <DropdownMenuRadioItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n >\n <option.icon aria-hidden=\"true\" />\n {option.label(labels)}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n }\n\n return (\n <div\n data-variant=\"segmented\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroup\n type=\"single\"\n size=\"sm\"\n value={appearance}\n aria-label={labels.groupLabel}\n onValueChange={(value) => {\n if (value) {\n updateAppearance(value as Appearance);\n }\n }}\n >\n {OPTIONS.map((option) => (\n <ToggleGroupItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n aria-label={option.label(labels)}\n >\n <option.icon aria-hidden=\"true\" />\n <span>{option.label(labels)}</span>\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </div>\n );\n}\n\nexport { AppearanceToggle, type AppearanceToggleProps };\n","import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { toggleVariants } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: 'default',\n variant: 'default',\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n slotName = 'toggle-group',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-variant={variant}\n data-size={size}\n className={cn(\n 'group/toggle-group data-[variant=outline]:shadow-xs rounded-2xl flex items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n slotName = 'toggle-group-item',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'min-w-0 first:rounded-l-2xl last:rounded-r-2xl shrink-0 rounded-none shadow-none focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","import type { SlotNameProps } from '@/types';\nimport { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\n\nfunction AspectRatio({\n slotName = 'aspect-ratio',\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root> & SlotNameProps) {\n return <AspectRatioPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nexport { AspectRatio };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-semibold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:outline-destructive',\n outline:\n 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n slotName = 'badge',\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean;\n } & SlotNameProps) {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n elevatedSurface,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n slotName = 'carousel',\n ...props\n}: React.ComponentProps<'div'> & CarouselProps & SlotNameProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n scrollPrev();\n return;\n }\n\n scrollNext();\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation ||\n (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 relative bg-card',\n className,\n )}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n slotName = 'carousel-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className={cn(nestedRadius, 'overflow-hidden')}\n data-slot={slotName}\n >\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({\n className,\n slotName = 'carousel-item',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-previous',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n slotName={slotName}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-next',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n slotName={slotName}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","'use client';\n\nimport * as React from 'react';\nimport type { TooltipValueType } from 'recharts';\nimport * as RechartsPrimitive from 'recharts';\n\nimport {\n elevatedSurface,\n menuSurface,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n slotName = 'chart',\n ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n initialDimension?: {\n width: number;\n height: number;\n };\n} & SlotNameProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 bg-card',\n \"aspect-video text-xs flex justify-center [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n 'accessibilityLayer'\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? (config[label]?.label ?? label)\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n `${menuSurface} gap-1.5 px-3 py-2 text-xs grid min-w-[8rem] items-start`,\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"gap-1.5 grid\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n const indicatorColor =\n color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 flex w-full flex-wrap items-stretch [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter &&\n item?.value !== undefined &&\n item.name ? (\n formatter(\n item.value,\n item.name,\n item,\n index,\n item.payload,\n )\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)',\n {\n 'h-2.5 w-2.5':\n indicator ===\n 'dot',\n 'w-1':\n indicator ===\n 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator ===\n 'dashed',\n 'my-0.5':\n nestLabel &&\n indicator ===\n 'dashed',\n },\n )}\n style={\n {\n '--color-bg':\n indicatorColor,\n '--color-border':\n indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel\n ? 'items-end'\n : 'items-center',\n )}\n >\n <div className=\"gap-1.5 grid\">\n {nestLabel\n ? tooltipLabel\n : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ??\n item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value ===\n 'number'\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n}: React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'gap-4 flex items-center justify-center',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-1.5 [&>svg]:h-3 [&>svg]:w-3 flex items-center [&>svg]:text-muted-foreground',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n const configLabelKey = payload[key as keyof typeof payload] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n const configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n return config[key];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { fieldFocus } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { useState } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxLabels {\n placeholder: string;\n searchPlaceholder: string;\n emptyText: string;\n}\n\nexport const comboboxDefaultLabels: ComboboxLabels = {\n placeholder: 'Select an option',\n searchPlaceholder: 'Search...',\n emptyText: 'No results.',\n};\n\nexport interface ComboboxProps extends Omit<\n ButtonProps,\n 'value' | 'onChange' | 'children' | 'slotName'\n> {\n value: string;\n options: ComboboxOption[];\n onChange: (value: string) => void;\n placeholder?: ComboboxLabels['placeholder'];\n searchPlaceholder?: ComboboxLabels['searchPlaceholder'];\n emptyText?: ComboboxLabels['emptyText'];\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Combobox({\n value,\n options,\n onChange,\n placeholder,\n searchPlaceholder,\n emptyText,\n disabled = false,\n invalid = false,\n required,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'combobox',\n ...trigger\n}: ComboboxProps & SlotNameProps) {\n const labels = useUiLabels('combobox', comboboxDefaultLabels, {\n placeholder,\n searchPlaceholder,\n emptyText,\n });\n const [open, setOpen] = useState(false);\n const selected = options.find((option) => option.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n {...trigger}\n role=\"combobox\"\n aria-expanded={open}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n disabled={disabled}\n className={cn(\n 'h-11 rounded-2xl w-full justify-between border-border bg-muted/40 hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n fieldFocus,\n !selected && 'text-muted-foreground',\n invalid && 'border-destructive ring-destructive',\n className,\n )}\n slotName={slotName}\n >\n {selected ? selected.label : labels.placeholder}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[var(--radix-popover-trigger-width)]\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n placeholder={labels.searchPlaceholder}\n className=\"h-11\"\n />\n <CommandList>\n <CommandEmpty>{labels.emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => {\n onChange(option.value);\n setOpen(false);\n }}\n className=\"h-11 rounded-xl\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected?.value === option.value\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ContextMenu({\n slotName = 'context-menu',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root> & SlotNameProps) {\n return <ContextMenuPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuTrigger({\n slotName = 'context-menu-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger> & SlotNameProps) {\n return <ContextMenuPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuGroup({\n slotName = 'context-menu-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group> & SlotNameProps) {\n return <ContextMenuPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuPortal({\n slotName = 'context-menu-portal',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal> & SlotNameProps) {\n return <ContextMenuPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSub({\n slotName = 'context-menu-sub',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub> & SlotNameProps) {\n return <ContextMenuPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuRadioGroup({\n slotName = 'context-menu-radio-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup> &\n SlotNameProps) {\n return <ContextMenuPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n slotName = 'context-menu-sub-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n slotName = 'context-menu-sub-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n slotName = 'context-menu-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n slotName = 'context-menu-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n slotName = 'context-menu-checkbox-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n slotName = 'context-menu-radio-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n slotName = 'context-menu-label',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8 text-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n slotName = 'context-menu-separator',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n slotName = 'context-menu-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Column } from '@tanstack/react-table';\nimport { Check, PlusCircle } from 'lucide-react';\n\nexport interface DataTableFilter {\n columnId: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableServerFilter {\n paramKey: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableFacetedFilterLabels {\n noOptionsLabel: string;\n}\n\nexport const dataTableFacetedFilterDefaultLabels: DataTableFacetedFilterLabels =\n {\n noOptionsLabel: 'No options.',\n };\n\nfunction FilterPopover({\n label,\n options,\n selected,\n onToggle,\n width,\n noOptionsLabel,\n slotName = 'data-table-faceted-filter',\n}: {\n label: string;\n options: { label: string; value: string }[];\n selected: Set<string>;\n onToggle: (value: string) => void;\n width: string;\n noOptionsLabel: DataTableFacetedFilterLabels['noOptionsLabel'];\n} & SlotNameProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"h-11 gap-3 has-[>svg]:px-3 rounded-2xl border-dashed border-border\"\n slotName={slotName}\n >\n <PlusCircle className=\"size-4\" />\n {label}\n {selected.size > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 px-2 rounded-full tabular-nums\"\n >\n {selected.size}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn('p-0', width)} align=\"start\">\n <Command>\n <CommandList>\n <CommandEmpty>{noOptionsLabel}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => onToggle(option.value)}\n className=\"h-10 rounded-xl\"\n >\n <div\n className={cn(\n 'mr-2 size-4 flex items-center justify-center rounded-md border border-border',\n selected.has(option.value)\n ? 'bg-primary text-primary-foreground'\n : 'opacity-50',\n )}\n >\n {selected.has(option.value) && (\n <Check className=\"size-3\" />\n )}\n </div>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function FacetedFilter<TData>({\n column,\n filter,\n noOptionsLabel,\n}: {\n column?: Column<TData, unknown>;\n filter: DataTableFilter;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selected = new Set((column?.getFilterValue() as string[]) ?? []);\n\n const toggle = (value: string) => {\n const next = new Set(selected);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n const arr = Array.from(next);\n column?.setFilterValue(arr.length ? arr : undefined);\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selected}\n onToggle={toggle}\n width=\"w-[220px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n\nexport function ServerFacetedFilter({\n filter,\n selected,\n onChange,\n noOptionsLabel,\n}: {\n filter: DataTableServerFilter;\n selected: string[];\n onChange: (values: string[]) => void;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selectedSet = new Set(selected);\n\n const toggle = (value: string) => {\n const next = new Set(selectedSet);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n onChange(Array.from(next));\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selectedSet}\n onToggle={toggle}\n width=\"w-[240px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport type { IconComponent, SlotNameProps } from '@/types';\nimport { MoreVertical } from 'lucide-react';\n\nexport interface DataTableRowAction<TData> {\n label: string;\n icon?: IconComponent;\n variant?: 'default' | 'destructive';\n onClick: (row: TData) => void;\n}\n\nexport function RowActionsMenu<TData>({\n row,\n actions,\n slotName = 'data-table-row-actions',\n}: {\n row: TData;\n actions: DataTableRowAction<TData>[];\n} & SlotNameProps) {\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-xl text-muted-foreground hover:text-foreground\"\n >\n <MoreVertical className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"rounded-2xl\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={() => action.onClick(row)}\n className={\n action.variant === 'destructive'\n ? 'rounded-xl text-destructive focus:text-destructive'\n : 'rounded-xl'\n }\n >\n {action.icon && <action.icon className=\"size-4\" />}\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type LucideIcon, SearchX } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\nexport interface EmptyStateLabels {\n title: string;\n}\n\nexport const emptyStateLabels: EmptyStateLabels = {\n title: 'Nothing to show',\n};\n\nexport interface EmptyStateProps {\n icon?: LucideIcon;\n title?: string;\n description?: string;\n actions?: ReactNode;\n compact?: boolean;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon = SearchX,\n title = emptyStateLabels.title,\n description,\n actions,\n compact = false,\n className,\n slotName = 'empty-state',\n}: EmptyStateProps & SlotNameProps) {\n return (\n <div\n data-compact={compact || undefined}\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center text-center',\n compact ? 'gap-2 px-4 py-6' : 'gap-3 px-6 py-12',\n className,\n )}\n data-slot={slotName}\n >\n <span\n data-slot=\"empty-state-icon\"\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-surface-recessed text-muted-foreground',\n compact ? 'size-8' : 'size-10',\n )}\n >\n <Icon className={compact ? 'size-4' : 'size-5'} />\n </span>\n <div\n className={cn(\n 'max-w-md flex flex-col',\n compact ? 'gap-0.5' : 'gap-1',\n )}\n >\n <p\n data-slot=\"empty-state-title\"\n className={cn(\n 'font-semibold text-foreground',\n compact ? 'text-sm' : 'text-base',\n )}\n >\n {title}\n </p>\n {description && (\n <p\n data-slot=\"empty-state-description\"\n className=\"text-sm font-medium text-muted-foreground\"\n >\n {description}\n </p>\n )}\n </div>\n {actions && (\n <div\n data-slot=\"empty-state-actions\"\n className={cn(\n 'gap-2 flex flex-wrap items-center justify-center',\n compact ? 'mt-1' : 'mt-2',\n )}\n >\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & SlotNameProps\n>(({ className, slotName = 'table-container', ...props }, ref) => (\n <div\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative w-full overflow-hidden bg-card',\n )}\n data-slot={slotName}\n >\n <div\n className={cn(\n nestedRadius,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'w-full overflow-x-auto',\n )}\n >\n <table\n ref={ref}\n className={cn('text-sm w-full caption-bottom', className)}\n {...props}\n />\n </div>\n </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'font-medium border-t bg-muted/50 [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-11 px-4 text-xs font-medium tracking-wider [&:has([role=checkbox])]:pr-0 text-left align-middle text-muted-foreground uppercase',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-4 [&:has([role=checkbox])]:pr-0 align-middle',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\n 'mt-4 px-4 pb-4 text-sm text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n","import { Button } from '@/components/ui/button';\nimport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n FacetedFilter,\n ServerFacetedFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n type DataTableRowAction,\n RowActionsMenu,\n} from '@/components/ui/data-table-row-actions';\nimport { EmptyState } from '@/components/ui/empty-state';\nimport { Input } from '@/components/ui/input';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from '@/components/ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { elevatedSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type Row,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n ArrowUpDown,\n ChevronLeft,\n ChevronRight,\n Plus,\n Search,\n X,\n} from 'lucide-react';\nimport { type ReactNode, useMemo, useState } from 'react';\n\nexport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nexport type { DataTableRowAction } from '@/components/ui/data-table-row-actions';\n\nfunction pageRange(current: number, last: number): (number | 'ellipsis')[] {\n if (last <= 7) {\n return Array.from({ length: last }, (_, i) => i + 1);\n }\n const pages: (number | 'ellipsis')[] = [1];\n const left = Math.max(2, current - 1);\n const right = Math.min(last - 1, current + 1);\n if (left > 2) pages.push('ellipsis');\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < last - 1) pages.push('ellipsis');\n pages.push(last);\n return pages;\n}\n\nexport interface DataTableLabels {\n searchPlaceholder: string;\n emptyLabel: string;\n createLabel: string;\n clearFiltersLabel: string;\n paginationLabel: (page: number, pages: number) => string;\n noOptionsLabel: string;\n totalLabel: (total: number) => string;\n}\n\nexport const dataTableDefaultLabels: DataTableLabels = {\n searchPlaceholder: 'Search...',\n emptyLabel: 'No results.',\n createLabel: 'New',\n clearFiltersLabel: 'Clear filters',\n paginationLabel: (page, pages) => `Page ${page} of ${pages}`,\n noOptionsLabel: 'No options.',\n totalLabel: (total) => `${total.toLocaleString('en-US')} records`,\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n searchPlaceholder?: DataTableLabels['searchPlaceholder'];\n emptyLabel?: DataTableLabels['emptyLabel'];\n createLabel?: DataTableLabels['createLabel'];\n clearFiltersLabel?: DataTableLabels['clearFiltersLabel'];\n paginationLabel?: DataTableLabels['paginationLabel'];\n noOptionsLabel?: DataTableLabels['noOptionsLabel'];\n totalLabel?: DataTableLabels['totalLabel'];\n searchKey?: string;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n filters?: DataTableFilter[];\n serverFilters?: DataTableServerFilter[];\n filterValues?: Record<string, string[]>;\n onFilterChange?: (paramKey: string, values: string[]) => void;\n canClearFilters?: boolean;\n onClearFilters?: () => void;\n toolbarExtra?: ReactNode;\n toolbarAction?: ReactNode;\n renderRow?: (row: Row<TData>) => ReactNode;\n onRowClick?: (row: TData) => void;\n isRowActive?: (row: TData) => boolean;\n rowActions?: DataTableRowAction<TData>[];\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n manualPagination?: boolean;\n pageCount?: number;\n pageIndex?: number;\n total?: number;\n onPageChange?: (pageIndex: number) => void;\n onCreate?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder,\n pageSize = 10,\n pageSizeOptions = [10, 25, 50, 100],\n onPageSizeChange,\n filters,\n serverFilters,\n filterValues,\n onFilterChange,\n canClearFilters,\n onClearFilters,\n toolbarExtra,\n toolbarAction,\n emptyLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n renderRow,\n onRowClick,\n isRowActive,\n rowActions,\n searchValue,\n onSearchChange,\n manualPagination = false,\n pageCount,\n pageIndex = 0,\n total,\n onPageChange,\n onCreate,\n createLabel,\n slotName = 'data-table',\n}: DataTableProps<TData, TValue> & SlotNameProps) {\n const labels = useUiLabels('dataTable', dataTableDefaultLabels, {\n searchPlaceholder,\n emptyLabel,\n createLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n });\n const [sorting, setSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const serverSearch = onSearchChange !== undefined;\n\n const tableColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n if (!rowActions || rowActions.length === 0) {\n return columns;\n }\n\n return [\n ...columns,\n {\n id: '__actions',\n header: '',\n enableSorting: false,\n cell: ({ row }) => (\n <RowActionsMenu row={row.original} actions={rowActions} />\n ),\n },\n ];\n }, [columns, rowActions]);\n\n const table = useReactTable({\n data,\n columns: tableColumns,\n state: {\n sorting,\n columnFilters,\n ...(serverSearch ? {} : { globalFilter }),\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: serverSearch ? undefined : setGlobalFilter,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n ...(manualPagination\n ? { manualPagination: true, pageCount: pageCount ?? -1 }\n : { getPaginationRowModel: getPaginationRowModel() }),\n initialState: { pagination: { pageSize } },\n });\n\n const hasServerSelection =\n serverFilters?.some(\n (filter) => (filterValues?.[filter.paramKey]?.length ?? 0) > 0,\n ) ?? false;\n const hasToolbar =\n searchKey !== undefined ||\n (filters && filters.length > 0) ||\n (serverFilters && serverFilters.length > 0) ||\n onCreate !== undefined ||\n toolbarExtra !== undefined ||\n toolbarAction !== undefined;\n const showFooter = manualPagination || table.getPageCount() > 1;\n const currentPage = manualPagination\n ? pageIndex + 1\n : table.getState().pagination.pageIndex + 1;\n const lastPage = manualPagination\n ? Math.max(1, pageCount ?? 1)\n : table.getPageCount();\n const canPrev = manualPagination\n ? pageIndex > 0\n : table.getCanPreviousPage();\n const canNext = manualPagination\n ? pageIndex + 1 < (pageCount ?? 1)\n : table.getCanNextPage();\n const prev = () =>\n manualPagination ? onPageChange?.(pageIndex - 1) : table.previousPage();\n const next = () =>\n manualPagination ? onPageChange?.(pageIndex + 1) : table.nextPage();\n const goTo = (page: number) =>\n manualPagination\n ? onPageChange?.(page - 1)\n : table.setPageIndex(page - 1);\n\n const activePageSize = manualPagination\n ? pageSize\n : table.getState().pagination.pageSize;\n const changePageSize = (size: number) =>\n onPageSizeChange ? onPageSizeChange(size) : table.setPageSize(size);\n const sizeChoices = [...new Set([...pageSizeOptions, activePageSize])].sort(\n (a, b) => a - b,\n );\n\n return (\n <div\n className={cn(elevatedSurface, 'space-y-4 p-5 bg-card')}\n data-slot={slotName}\n >\n {hasToolbar && (\n <div className=\"gap-2 flex flex-wrap items-center\">\n {searchKey !== undefined && (\n <div className=\"relative min-w-[200px] flex-1\">\n <Search className=\"left-4 size-4 pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={\n serverSearch\n ? (searchValue ?? '')\n : globalFilter\n }\n onChange={(e) =>\n serverSearch\n ? onSearchChange?.(e.target.value)\n : setGlobalFilter(e.target.value)\n }\n placeholder={labels.searchPlaceholder}\n className={`h-11 rounded-2xl pl-11 font-medium border-none bg-muted/50 focus:bg-muted`}\n />\n </div>\n )}\n {filters?.map((filter) => (\n <FacetedFilter\n key={filter.columnId}\n column={table.getColumn(filter.columnId)}\n filter={filter}\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {serverFilters?.map((filter) => (\n <ServerFacetedFilter\n key={filter.paramKey}\n filter={filter}\n selected={filterValues?.[filter.paramKey] ?? []}\n onChange={(values) =>\n onFilterChange?.(filter.paramKey, values)\n }\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {toolbarExtra}\n {(columnFilters.length > 0 ||\n hasServerSelection ||\n (canClearFilters && onClearFilters)) && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n if (columnFilters.length > 0) {\n table.resetColumnFilters();\n }\n if (hasServerSelection || canClearFilters) {\n onClearFilters?.();\n }\n }}\n className=\"h-11 rounded-2xl\"\n >\n {labels.clearFiltersLabel}\n <X className=\"ml-1 size-4\" />\n </Button>\n )}\n {onCreate && (\n <Button\n onClick={onCreate}\n aria-label={labels.createLabel}\n size=\"icon\"\n className=\"size-11 rounded-2xl shrink-0 cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n <Plus className=\"size-5\" />\n </Button>\n )}\n {toolbarAction && (\n <div className=\"ml-auto\">{toolbarAction}</div>\n )}\n </div>\n )}\n\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className=\"h-11 px-4 font-medium tracking-wider text-[11px] text-muted-foreground uppercase\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n onClick={header.column.getToggleSortingHandler()}\n className=\"gap-1 inline-flex items-center transition-colors hover:text-foreground\"\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ArrowUpDown className=\"size-3 opacity-50\" />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) =>\n renderRow ? (\n renderRow(row)\n ) : (\n <TableRow\n key={row.id}\n onClick={\n onRowClick\n ? () => onRowClick(row.original)\n : undefined\n }\n data-active={\n isRowActive?.(row.original) || undefined\n }\n className={cn(\n 'border-border transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n 'data-[active=true]:bg-primary/5',\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className=\"px-4 py-3\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ),\n )\n ) : (\n <TableRow>\n <TableCell\n colSpan={tableColumns.length}\n className=\"h-24 p-0\"\n >\n <EmptyState compact title={labels.emptyLabel} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {showFooter && (\n <div className=\"gap-3 pt-4 flex flex-wrap items-center justify-between border-t border-border\">\n <div className=\"gap-3 flex items-center\">\n <Select\n value={String(activePageSize)}\n onValueChange={(value) =>\n changePageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-9 rounded-xl w-[74px]\">\n <span>{activePageSize}</span>\n </SelectTrigger>\n <SelectContent className=\"rounded-xl\">\n {sizeChoices.map((size) => (\n <SelectItem\n key={size}\n value={String(size)}\n className=\"font-medium\"\n >\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {labels.paginationLabel(currentPage, lastPage)}\n {total !== undefined &&\n ` · ${labels.totalLabel(total)}`}\n </span>\n </div>\n <div className=\"gap-1.5 flex items-center\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={prev}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n {pageRange(currentPage, lastPage).map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"px-1 text-sm font-medium text-muted-foreground\"\n >\n …\n </span>\n ) : (\n <Button\n key={page}\n variant=\"outline\"\n onClick={() => goTo(page)}\n className={cn(\n 'h-9 min-w-9 rounded-xl px-2.5 tabular-nums',\n page === currentPage &&\n 'border-primary bg-primary text-primary-foreground hover:bg-primary/90',\n )}\n >\n {page}\n </Button>\n ),\n )}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={next}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nexport interface CalendarPopoverProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n trigger: React.ReactNode;\n align?: React.ComponentProps<typeof PopoverContent>['align'];\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CalendarPopover({\n open,\n onOpenChange,\n trigger,\n align = 'start',\n className,\n children,\n slotName = 'calendar-popover',\n}: CalendarPopoverProps & SlotNameProps) {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn('p-2 w-auto', className)}\n align={align}\n sideOffset={4}\n collisionPadding={16}\n slotName={slotName}\n >\n {children}\n </PopoverContent>\n </Popover>\n );\n}\n","import { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { fieldFocus, fieldSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarIcon, X } from 'lucide-react';\nimport { useState, type ComponentProps } from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nexport interface DatePickerLabels {\n placeholder: string;\n dateFormat: string;\n clearLabel: string;\n}\n\nexport const datePickerDefaultLabels: DatePickerLabels = {\n placeholder: 'Pick a date',\n dateFormat: 'dd MMM yy',\n clearLabel: 'Clear date',\n};\n\ntype DatePickerTriggerProps = Omit<\n ComponentProps<'button'>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'children'\n>;\n\nexport interface DatePickerProps\n extends Partial<DatePickerLabels>, DatePickerTriggerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (value: Date | undefined) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDays?: (date: Date) => boolean;\n clearable?: boolean;\n invalid?: boolean;\n required?: boolean;\n formatDate?: (value: Date) => string;\n}\n\nconst triggerClasses = `h-11 px-4 font-medium flex w-full cursor-pointer items-center gap-2 text-left transition-all disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${fieldSurface} ${fieldFocus}`;\n\nfunction boundaries(\n minDate?: Date,\n maxDate?: Date,\n disabledDays?: (date: Date) => boolean,\n): Matcher[] {\n const matchers: Matcher[] = [];\n\n if (minDate) {\n matchers.push({ before: minDate });\n }\n\n if (maxDate) {\n matchers.push({ after: maxDate });\n }\n\n if (disabledDays) {\n matchers.push(disabledDays);\n }\n\n return matchers;\n}\n\nexport function DatePicker(props: DatePickerProps & SlotNameProps) {\n const {\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDays,\n disabled = false,\n clearable = true,\n invalid = false,\n required,\n formatDate,\n placeholder,\n dateFormat,\n clearLabel,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'date-picker',\n ...trigger\n } = props;\n\n const labels = useUiLabels('datePicker', datePickerDefaultLabels, {\n placeholder,\n dateFormat,\n clearLabel,\n });\n const [open, setOpen] = useState(false);\n const [ownValue, setOwnValue] = useState<Date | undefined>(defaultValue);\n\n const isControlled = 'value' in props;\n const selected = isControlled ? value : ownValue;\n const showClear = clearable && !disabled && selected !== undefined;\n const label = selected\n ? (formatDate?.(selected) ?? format(selected, labels.dateFormat))\n : labels.placeholder;\n\n function commit(next: Date | undefined): void {\n if (!isControlled) {\n setOwnValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <div className={cn('relative w-full', className)} data-slot={slotName}>\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n trigger={\n <button\n {...trigger}\n type=\"button\"\n data-slot=\"date-picker-trigger\"\n disabled={disabled}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n className={cn(triggerClasses, showClear && 'pr-11')}\n >\n <CalendarIcon className=\"size-4 shrink-0 opacity-60\" />\n <span\n className={cn(\n 'truncate',\n !selected && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </button>\n }\n >\n <Calendar\n mode=\"single\"\n autoFocus\n selected={selected}\n defaultMonth={selected ?? minDate}\n startMonth={minDate}\n endMonth={maxDate}\n disabled={boundaries(minDate, maxDate, disabledDays)}\n onSelect={(date) => {\n if (!date) {\n return;\n }\n\n commit(date);\n setOpen(false);\n }}\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n {showClear && (\n <button\n type=\"button\"\n data-slot=\"date-picker-clear\"\n aria-label={labels.clearLabel}\n onClick={() => commit(undefined)}\n className={`size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`}\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n}\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarRange, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\n\nfunction parse(value?: string): Date | undefined {\n return value ? new Date(`${value}T00:00:00`) : undefined;\n}\n\nexport interface DateRangeFilterLabels {\n emptyLabel: string;\n dateFormat: string;\n}\n\nexport const dateRangeFilterDefaultLabels: DateRangeFilterLabels = {\n emptyLabel: 'Date range',\n dateFormat: 'dd MMM yy',\n};\n\nexport interface DateRangeFilterProps\n extends\n Partial<DateRangeFilterLabels>,\n Omit<ButtonProps, 'onChange' | 'children' | 'value' | 'slotName'> {\n from?: string;\n to?: string;\n onChange: (range: { from?: string; to?: string }) => void;\n}\n\nexport function DateRangeFilter({\n from,\n to,\n onChange,\n emptyLabel,\n dateFormat,\n className,\n slotName = 'date-range-filter',\n ...trigger\n}: DateRangeFilterProps & SlotNameProps) {\n const labels = useUiLabels(\n 'dateRangeFilter',\n dateRangeFilterDefaultLabels,\n { emptyLabel, dateFormat },\n );\n const [open, setOpen] = useState(false);\n const selected: DateRange | undefined =\n from || to ? { from: parse(from), to: parse(to) } : undefined;\n const label = from\n ? to && to !== from\n ? `${format(parse(from)!, labels.dateFormat)} - ${format(parse(to)!, labels.dateFormat)}`\n : format(parse(from)!, labels.dateFormat)\n : labels.emptyLabel;\n\n return (\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n align=\"end\"\n trigger={\n <Button\n variant=\"outline\"\n {...trigger}\n className={cn(\n 'h-11 rounded-2xl cursor-pointer border-dashed border-border',\n className,\n )}\n slotName={slotName}\n >\n <CalendarRange className=\"mr-2 size-4\" />\n {label}\n {(from || to) && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(event) => {\n event.stopPropagation();\n onChange({ from: undefined, to: undefined });\n }}\n className=\"ml-2 inline-flex\"\n >\n <X className=\"size-3.5 opacity-60 hover:opacity-100\" />\n </span>\n )}\n </Button>\n }\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n defaultMonth={parse(from)}\n selected={selected}\n onSelect={(range) =>\n onChange({\n from: range?.from\n ? format(range.from, 'yyyy-MM-dd')\n : undefined,\n to: range?.to\n ? format(range.to, 'yyyy-MM-dd')\n : undefined,\n })\n }\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n );\n}\n","import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { floatingSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Drawer({\n slotName = 'drawer',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root> & SlotNameProps) {\n return <DrawerPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction DrawerTrigger({\n slotName = 'drawer-trigger',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger> & SlotNameProps) {\n return <DrawerPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DrawerPortal({\n slotName = 'drawer-portal',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal> & SlotNameProps) {\n return <DrawerPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DrawerClose({\n slotName = 'drawer-close',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close> & SlotNameProps) {\n return <DrawerPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction DrawerOverlay({\n className,\n slotName = 'drawer-overlay',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay> & SlotNameProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n slotName = 'drawer-content',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & SlotNameProps) {\n return (\n <DrawerPortal slotName=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n `${floatingSurface} group/drawer-content fixed z-50 flex h-auto flex-col border-border`,\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:rounded-b-3xl data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:rounded-t-3xl data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:sm:max-w-sm data-[vaul-drawer-direction=right]:rounded-l-3xl data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=left]:rounded-r-3xl data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"mt-4 h-2 mx-auto hidden w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n slotName = 'drawer-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-0.5 p-4 md:gap-1.5 md:text-left flex flex-col group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerFooter({\n className,\n slotName = 'drawer-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n slotName = 'drawer-title',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title> & SlotNameProps) {\n return (\n <DrawerPrimitive.Title\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n slotName = 'drawer-description',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description> & SlotNameProps) {\n return (\n <DrawerPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from 'react-hook-form';\n\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & SlotNameProps\n>(({ className, slotName = 'form-item', ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn('space-y-2', className)}\n {...props}\n data-slot={slotName}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\n 'font-medium text-[0.8rem] text-destructive',\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","'use client';\n\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction HoverCard({\n slotName = 'hover-card',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root> & SlotNameProps) {\n return <HoverCardPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardTrigger({\n slotName = 'hover-card-trigger',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger> & SlotNameProps) {\n return <HoverCardPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n slotName = 'hover-card-content',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> & SlotNameProps) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `${panelSurface} w-64 p-4 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 origin-(--radix-hover-card-content-transform-origin) bg-popover/90 outline-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n","import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Menubar({\n className,\n slotName = 'menubar',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root> & SlotNameProps) {\n return (\n <MenubarPrimitive.Root\n className={cn(\n 'h-9 gap-1 p-1 shadow-sm backdrop-blur-xl rounded-2xl flex items-center border border-border bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarMenu({\n slotName = 'menubar-menu',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu> & SlotNameProps) {\n return <MenubarPrimitive.Menu {...props} data-slot={slotName} />;\n}\n\nfunction MenubarGroup({\n slotName = 'menubar-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group> & SlotNameProps) {\n return <MenubarPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction MenubarPortal({\n slotName = 'menubar-portal',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal> & SlotNameProps) {\n return <MenubarPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction MenubarRadioGroup({\n slotName = 'menubar-radio-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup> & SlotNameProps) {\n return <MenubarPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction MenubarTrigger({\n className,\n slotName = 'menubar-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger> & SlotNameProps) {\n return (\n <MenubarPrimitive.Trigger\n className={cn(\n 'px-2 py-1 text-sm font-medium rounded-xl flex items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = 'start',\n alignOffset = -4,\n sideOffset = 8,\n slotName = 'menubar-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content> & SlotNameProps) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n slotName = 'menubar-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n slotName = 'menubar-checkbox-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.CheckboxItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n slotName = 'menubar-radio-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.RadioItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n slotName = 'menubar-label',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n slotName = 'menubar-separator',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator> & SlotNameProps) {\n return (\n <MenubarPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n slotName = 'menubar-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSub({\n slotName = 'menubar-sub',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub> & SlotNameProps) {\n return <MenubarPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n slotName = 'menubar-sub-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm data-[inset]:pl-8 rounded-xl flex cursor-default items-center outline-none select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"h-4 w-4 ml-auto\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n slotName = 'menubar-sub-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent> & SlotNameProps) {\n return (\n <MenubarPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n MenubarGroup,\n MenubarItem,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n};\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n slotName = 'navigation-menu',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n} & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n slotName = 'navigation-menu-list',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n 'group gap-1 flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n slotName = 'navigation-menu-item',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn('relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-11 w-max items-center justify-center rounded-xl bg-background px-4 text-sm font-medium data-[state=open]:font-semibold hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-accent/50 data-[state=open]:bg-accent/50 data-[active=true]:text-accent-foreground transition-[color,box-shadow] outline-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring',\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n slotName = 'navigation-menu-trigger',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n data-slot={slotName}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"ml-1 size-3 relative top-[1px] transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n slotName = 'navigation-menu-content',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 p-2 pr-2.5 md:absolute md:w-auto w-full',\n 'group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:backdrop-blur-xl group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover/90 group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n slotName = 'navigation-menu-viewport',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport> &\n SlotNameProps) {\n return (\n <div\n className={cn(\n 'left-0 absolute top-full isolate z-50 flex justify-center',\n )}\n >\n <NavigationMenuPrimitive.Viewport\n className={cn(\n `${panelSurface} origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 mt-1.5 md:w-[var(--radix-navigation-menu-viewport-width)] relative h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden bg-popover/90`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n slotName = 'navigation-menu-link',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"gap-1 p-2 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl data-[active=true]:font-semibold flex flex-col transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n slotName = 'navigation-menu-indicator',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Indicator\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in h-1.5 top-full z-[1] flex items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"h-2 w-2 shadow-md rounded-tl-xs relative top-[60%] rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n NavigationMenuViewport,\n};\n","import {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants, type Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Pagination({\n className,\n slotName = 'pagination',\n ...props\n}: React.ComponentProps<'nav'> & SlotNameProps) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n slotName = 'pagination-content',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n className={cn('gap-1 flex flex-row items-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationItem({\n slotName = 'pagination-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return <li {...props} data-slot={slotName} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>;\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n slotName = 'pagination-link',\n ...props\n}: PaginationLinkProps & SlotNameProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"sm:block hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"sm:block hidden\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n slotName = 'pagination-ellipsis',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n aria-hidden\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import type { SlotNameProps } from '@/types';\nimport { useId } from 'react';\n\ninterface PlaceholderPatternProps {\n className?: string;\n}\n\nexport function PlaceholderPattern({\n className,\n slotName = 'placeholder-pattern',\n}: PlaceholderPatternProps & SlotNameProps) {\n const patternId = useId();\n\n return (\n <svg className={className} fill=\"none\" data-slot={slotName}>\n <defs>\n <pattern\n id={patternId}\n x=\"0\"\n y=\"0\"\n width=\"10\"\n height=\"10\"\n patternUnits=\"userSpaceOnUse\"\n >\n <path\n d=\"M-3 13 15-5M-5 5l18-18M-1 21 17 3\"\n stroke=\"currentColor\"\n ></path>\n </pattern>\n </defs>\n <rect\n stroke=\"none\"\n fill={`url(#${patternId})`}\n width=\"100%\"\n height=\"100%\"\n ></rect>\n </svg>\n );\n}\n","'use client';\n\nimport { Progress as ProgressPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Progress({\n className,\n value,\n slotName = 'progress',\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & SlotNameProps) {\n return (\n <ProgressPrimitive.Root\n className={cn(\n 'h-2 relative w-full overflow-hidden rounded-full bg-primary/20',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","import { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction RadioGroup({\n className,\n slotName = 'radio-group',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Root\n className={cn('gap-3 grid', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n slotName = 'radio-group-item',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n `size-5 shadow-xs aspect-square shrink-0 rounded-full border border-border text-primary transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"size-2.5 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","'use client';\n\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { elevatedSurface, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ResizablePanelGroup({\n className,\n slotName = 'resizable-panel-group',\n ...props\n}: ResizablePrimitive.GroupProps & SlotNameProps) {\n return (\n <ResizablePrimitive.Group\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'flex h-full w-full overflow-hidden bg-card aria-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ResizablePanel({\n slotName = 'resizable-panel',\n ...props\n}: ResizablePrimitive.PanelProps & SlotNameProps) {\n return <ResizablePrimitive.Panel {...props} data-slot={slotName} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n slotName = 'resizable-handle',\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean;\n} & SlotNameProps) {\n return (\n <ResizablePrimitive.Separator\n className={cn(\n 'after:inset-y-0 after:w-1 aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:translate-x-0 relative flex w-px items-center justify-center bg-border after:absolute after:left-1/2 after:-translate-x-1/2 focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {withHandle && (\n <div className=\"h-8 w-1.5 z-10 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-muted-foreground/60\" />\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","import { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, TriangleAlert } from 'lucide-react';\nimport * as React from 'react';\n\nexport type SaveStatusState = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusLabels {\n error: string;\n idle: string;\n saved: string;\n saving: string;\n}\n\nexport const saveStatusLabels: SaveStatusLabels = {\n error: 'Your changes could not be saved',\n idle: 'Changes are saved automatically',\n saved: 'Saved',\n saving: 'Saving',\n};\n\nexport const SAVED_DURATION = 2000;\n\nexport interface SaveStatusProps extends React.ComponentProps<'div'> {\n status: SaveStatusState;\n message?: string;\n showIdle?: boolean;\n savedDuration?: number;\n labels?: Partial<SaveStatusLabels>;\n}\n\nfunction SaveStatus({\n status,\n message,\n showIdle = false,\n savedDuration = SAVED_DURATION,\n labels,\n className,\n slotName = 'save-status',\n ...props\n}: SaveStatusProps & SlotNameProps) {\n const text = useUiLabels('saveStatus', saveStatusLabels, labels);\n const [faded, setFaded] = React.useState(false);\n\n React.useEffect(() => {\n if (status !== 'saved' || savedDuration <= 0) {\n setFaded(false);\n\n return;\n }\n\n setFaded(false);\n const timer = setTimeout(() => setFaded(true), savedDuration);\n\n return () => clearTimeout(timer);\n }, [status, savedDuration, message]);\n\n const hidden = status === 'saved' && faded;\n\n return (\n <div\n {...props}\n data-state={status}\n data-faded={hidden || undefined}\n role=\"status\"\n aria-live=\"polite\"\n aria-hidden={hidden || undefined}\n className={cn(\n 'gap-2 text-xs font-medium min-h-5 flex items-center transition-opacity duration-300',\n hidden ? 'opacity-0' : 'opacity-100',\n className,\n )}\n data-slot={slotName}\n >\n {status === 'idle' && showIdle && (\n <span\n data-slot=\"save-status-idle\"\n className=\"text-muted-foreground\"\n >\n {text.idle}\n </span>\n )}\n\n {status === 'saving' && (\n <span\n data-slot=\"save-status-saving\"\n className=\"gap-2 flex items-center text-muted-foreground\"\n >\n <Spinner size=\"sm\" label=\"\" aria-hidden=\"true\" />\n {text.saving}\n </span>\n )}\n\n {status === 'saved' && (\n <span\n data-slot=\"save-status-saved\"\n className=\"gap-2 flex items-center text-success\"\n >\n <Check aria-hidden=\"true\" className=\"size-3.5\" />\n {text.saved}\n </span>\n )}\n\n {status === 'error' && (\n <span\n data-slot=\"save-status-error\"\n className=\"gap-2 flex items-center text-destructive\"\n >\n <TriangleAlert aria-hidden=\"true\" className=\"size-3.5\" />\n {message ?? text.error}\n </span>\n )}\n </div>\n );\n}\n\nexport { SaveStatus };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> &\n SlotNameProps\n>(({ className, children, slotName = 'scroll-area', ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative overflow-hidden bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n > &\n SlotNameProps\n>(\n (\n {\n className,\n orientation = 'vertical',\n slotName = 'scroll-area-scrollbar',\n ...props\n },\n ref,\n ) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' &&\n 'w-2.5 h-full border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n ),\n);\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { Slider as SliderPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n slotName = 'slider',\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & SlotNameProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n 'data-[orientation=vertical]:min-h-44 relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n 'data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n 'size-5 shadow-sm block shrink-0 rounded-full border border-primary bg-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50',\n focusRing,\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nfunction useDocumentScheme(): 'light' | 'dark' {\n const [scheme, setScheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n const read = () =>\n setScheme(root.classList.contains('dark') ? 'dark' : 'light');\n\n read();\n\n const observer = new MutationObserver(read);\n observer.observe(root, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return scheme;\n}\n\nconst Toaster = ({ theme, ...props }: ToasterProps) => {\n const scheme = useDocumentScheme();\n\n return (\n <Sonner\n theme={theme ?? scheme}\n className=\"toaster group [&_[data-sonner-toast]]:shadow-2xl [&_[data-sonner-toast]]:backdrop-blur-xl\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg':\n 'color-mix(in oklab, var(--popover) 90%, transparent)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': '1rem',\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst statusBadgeVariants = cva('', {\n variants: {\n status: {\n neutral: 'border-border bg-muted text-muted-foreground',\n info: 'border-info/20 bg-info/10 text-info',\n success: 'border-success/20 bg-success/10 text-success',\n warning: 'border-warning/20 bg-warning/10 text-warning',\n danger: 'border-destructive/20 bg-destructive/10 text-destructive',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n});\n\ntype StatusBadgeStatus = NonNullable<\n VariantProps<typeof statusBadgeVariants>['status']\n>;\n\ninterface StatusBadgeProps\n extends\n Omit<React.ComponentProps<typeof Badge>, 'variant'>,\n VariantProps<typeof statusBadgeVariants> {\n dot?: boolean;\n}\n\nfunction StatusBadge({\n className,\n status = 'neutral',\n dot = false,\n children,\n slotName = 'status-badge',\n ...props\n}: StatusBadgeProps & SlotNameProps) {\n const resolvedStatus: StatusBadgeStatus = status ?? 'neutral';\n\n return (\n <Badge\n variant=\"outline\"\n data-status={resolvedStatus}\n className={cn(\n statusBadgeVariants({ status: resolvedStatus }),\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {dot && (\n <span\n aria-hidden=\"true\"\n data-slot=\"status-badge-dot\"\n className=\"size-1.5 shrink-0 rounded-full bg-current\"\n />\n )}\n {children}\n </Badge>\n );\n}\n\nexport {\n StatusBadge,\n statusBadgeVariants,\n type StatusBadgeProps,\n type StatusBadgeStatus,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst textLinkVariants = cva(\n `cursor-pointer rounded-xl underline decoration-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current ${focusRing}`,\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground hover:text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ninterface TextLinkProps\n extends React.ComponentProps<'a'>, VariantProps<typeof textLinkVariants> {\n asChild?: boolean;\n}\n\nfunction TextLink({\n className,\n variant = 'default',\n asChild = false,\n slotName = 'text-link',\n ...props\n}: TextLinkProps & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-variant={variant}\n className={cn(textLinkVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { TextLink, textLinkVariants, type TextLinkProps };\n","'use client';\n\nexport { cn } from '@/lib/utils';\n\nexport {\n controlFill,\n elevatedSurface,\n focusRing,\n menuHighlight,\n nestedEdgeToEdge,\n nestedRadius,\n nestedSurfaceReset,\n recessedSurface,\n surface,\n type SurfaceProps,\n} from '@/lib/language';\n\nexport {\n AUTOSAVE_DELAY,\n useAutosave,\n type AutosaveStatus,\n type UseAutosaveOptions,\n type UseAutosaveResult,\n} from '@/hooks/use-autosave';\n\nexport {\n useConfirmDialog,\n type UseConfirmDialogOptions,\n} from '@/hooks/use-confirm-dialog';\n\nexport * from '@/components/ui/accordion';\nexport * from '@/components/ui/akira-mark';\nexport * from '@/components/ui/alert';\nexport * from '@/components/ui/alert-dialog';\nexport * from '@/components/ui/appearance-toggle';\nexport * from '@/components/ui/aspect-ratio';\nexport * from '@/components/ui/avatar';\nexport * from '@/components/ui/badge';\nexport * from '@/components/ui/breadcrumb';\nexport * from '@/components/ui/button';\nexport * from '@/components/ui/calendar';\nexport * from '@/components/ui/card';\nexport * from '@/components/ui/carousel';\nexport * from '@/components/ui/chart';\nexport * from '@/components/ui/checkbox';\nexport * from '@/components/ui/collapsible';\nexport * from '@/components/ui/combobox';\nexport * from '@/components/ui/command';\nexport * from '@/components/ui/confirm-dialog';\nexport * from '@/components/ui/context-menu';\nexport * from '@/components/ui/copy-button';\nexport * from '@/components/ui/data-table';\nexport * from '@/components/ui/data-table-faceted-filter';\nexport * from '@/components/ui/data-table-row-actions';\nexport * from '@/components/ui/date-picker';\nexport * from '@/components/ui/date-range-filter';\nexport * from '@/components/ui/dialog';\nexport * from '@/components/ui/drawer';\nexport * from '@/components/ui/dropdown-menu';\nexport * from '@/components/ui/empty-state';\nexport * from '@/components/ui/field';\nexport {\n useField,\n type FieldContextValue,\n type FieldOrientation,\n} from '@/components/ui/field-context';\nexport * from '@/components/ui/field-error';\nexport * from '@/components/ui/floating-sheet';\nexport * from '@/components/ui/form';\nexport * from '@/components/ui/hover-card';\nexport * from '@/components/ui/icon';\nexport * from '@/components/ui/input';\nexport * from '@/components/ui/input-otp';\nexport * from '@/components/ui/label';\nexport * from '@/components/ui/menubar';\nexport * from '@/components/ui/navigation-menu';\nexport * from '@/components/ui/pagination';\nexport * from '@/components/ui/password-input';\nexport * from '@/components/ui/placeholder-pattern';\nexport * from '@/components/ui/popover';\nexport * from '@/components/ui/progress';\nexport * from '@/components/ui/radio-group';\nexport * from '@/components/ui/resizable';\nexport * from '@/components/ui/save-status';\nexport * from '@/components/ui/scroll-area';\nexport * from '@/components/ui/select';\nexport * from '@/components/ui/separator';\nexport * from '@/components/ui/sheet';\nexport * from '@/components/ui/sidebar';\nexport * from '@/components/ui/skeleton';\nexport * from '@/components/ui/slider';\nexport * from '@/components/ui/sonner';\nexport * from '@/components/ui/spinner';\nexport * from '@/components/ui/status-badge';\nexport * from '@/components/ui/switch';\nexport * from '@/components/ui/table';\nexport * from '@/components/ui/tabs';\nexport * from '@/components/ui/text-link';\nexport * from '@/components/ui/textarea';\nexport * from '@/components/ui/toggle';\nexport * from '@/components/ui/toggle-group';\nexport * from '@/components/ui/tooltip';\nexport {\n UiLocaleProvider,\n useUiLabels,\n useUiLocale,\n type UiLabelSections,\n type UiLabels,\n} from '@/locales/context';\nexport type {\n Column,\n ColumnDef,\n FilterFn,\n IconComponent,\n LucideIcon,\n Row,\n SlotNameProps,\n TableInstance,\n UrlLike,\n} from '@/types';\nexport { toast } from 'sonner';\n"],"mappings":"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","names":["useState","jsx","jsx","jsx","jsxs","React","jsx","jsx","jsxs","jsx","jsx","React","jsx","jsxs","api","React","jsx","jsxs","config","useState","jsx","jsxs","jsx","jsxs","Check","jsx","jsxs","jsx","jsxs","jsx","jsxs","Icon","React","jsx","useMemo","useState","jsx","jsxs","jsx","jsxs","X","useState","jsx","jsxs","format","X","useState","jsx","jsxs","jsx","jsxs","Slot","React","jsx","Slot","jsx","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","cva","jsx","jsxs","cva","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","useId","jsx","jsxs","jsx","CircleIcon","jsx","CircleIcon","jsx","Check","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","useEffect","useState","jsx","cva","jsx","jsxs","cva","Slot","cva","jsx","cva","Slot"]}
|