@akira-io/ui 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks.d.ts +4 -4
- package/dist/blocks.js +4 -2
- package/dist/blocks.js.map +1 -1
- package/dist/{chunk-MCHHCLV3.js → chunk-7DAA3DPJ.js} +10 -5
- package/dist/chunk-7DAA3DPJ.js.map +1 -0
- package/dist/{chunk-BR3JI3KN.js → chunk-L56VUE3E.js} +3 -2
- package/dist/chunk-L56VUE3E.js.map +1 -0
- package/dist/{chunk-L2H5GIF7.js → chunk-VVBBKTC5.js} +6 -1
- package/dist/chunk-VVBBKTC5.js.map +1 -0
- package/dist/{context-Dqf-5Qne.d.ts → context-CWkgje9v.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/inertia.d.ts +1 -1
- package/dist/inertia.js +3 -3
- package/dist/inertia.js.map +1 -1
- package/dist/locales/fr.d.ts +2 -2
- package/dist/locales/pt.d.ts +2 -2
- package/dist/shells.js +2 -2
- package/dist/{types-1LUmNJf_.d.ts → types-DEJsTx8E.d.ts} +2 -1
- package/package.json +2 -1
- package/dist/chunk-BR3JI3KN.js.map +0 -1
- package/dist/chunk-L2H5GIF7.js.map +0 -1
- package/dist/chunk-MCHHCLV3.js.map +0 -1
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/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/menubar-portal.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 { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\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 container,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <ContextMenuPrimitive.Portal container={portalContainer}>\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 hidden?: (row: TData) => boolean;\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 const visible = actions.filter((action) => !action.hidden?.(row));\n\n if (visible.length === 0) {\n return null;\n }\n\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 {visible.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 { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\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 container,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <HoverCardPrimitive.Portal\n container={portalContainer}\n data-slot=\"hover-card-portal\"\n >\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 { MenubarPortal } from '@/components/ui/menubar-portal';\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 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","'use client';\n\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport type { SlotNameProps } from '@/types';\n\nexport function MenubarPortal({\n slotName = 'menubar-portal',\n container,\n ...props\n}: Omit<React.ComponentProps<typeof MenubarPrimitive.Portal>, 'container'> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <MenubarPrimitive.Portal\n container={portalContainer}\n {...props}\n data-slot={slotName}\n />\n );\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","MenubarPrimitive","jsx","jsx","jsxs","MenubarPrimitive","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"]}
|
|
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/menubar-portal.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 modal 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 className=\"max-h-[min(300px,var(--radix-popover-content-available-height))]\">\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 { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\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 container,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <ContextMenuPrimitive.Portal container={portalContainer}>\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 hidden?: (row: TData) => boolean;\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 const visible = actions.filter((action) => !action.hidden?.(row));\n\n if (visible.length === 0) {\n return null;\n }\n\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 {visible.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 { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\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 container,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <HoverCardPrimitive.Portal\n container={portalContainer}\n data-slot=\"hover-card-portal\"\n >\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 { MenubarPortal } from '@/components/ui/menubar-portal';\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 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","'use client';\n\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport type { SlotNameProps } from '@/types';\n\nexport function MenubarPortal({\n slotName = 'menubar-portal',\n container,\n ...props\n}: Omit<React.ComponentProps<typeof MenubarPrimitive.Portal>, 'container'> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <MenubarPrimitive.Portal\n container={portalContainer}\n {...props}\n data-slot={slotName}\n />\n );\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","MenubarPrimitive","jsx","jsx","jsxs","MenubarPrimitive","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"]}
|