@nexa-ui-kit/core 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/accordion.tsx","../src/components/breadcrumb.tsx","../src/components/aspect-ratio.tsx","../src/components/avatar.tsx","../src/components/button.tsx","../src/components/input.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/collapsible.tsx","../src/components/skeleton.tsx","../src/components/spinner.tsx","../src/components/hover-card.tsx","../src/components/kbd.tsx","../src/components/label.tsx","../src/components/navigation-menu.tsx","../src/components/progress.tsx","../src/components/radio-group.tsx","../src/components/popover.tsx","../src/components/separator.tsx","../src/components/sidebar.tsx","../src/components/slider.tsx","../src/components/switch.tsx","../src/components/tabs.tsx","../src/components/toggle.tsx","../src/components/tooltip.tsx","../src/components/textarea.tsx","../src/components/checkbox.tsx","../src/components/dialog.tsx","../src/components/command.tsx","../src/components/context-menu.tsx","../src/components/dropdown-menu.tsx","../src/components/menubar.tsx","../src/components/input-group.tsx","../src/components/form.tsx","../src/components/item.tsx","../src/components/field.tsx","../src/components/calendar.tsx","../src/components/carousel.tsx","../src/components/chart.tsx","../src/components/scrollytelling/use-scrollytelling.ts","../src/components/scrollytelling/scrollytelling.tsx","../src/components/scrollytelling/scrollytelling-track.tsx","../src/components/scrollytelling/scrollytelling-section.tsx","../src/components/scrollytelling/scrollytelling-content.tsx","../src/components/scrollytelling/animations.ts","../src/components/scrollytelling/scrollytelling-reveal.tsx","../src/components/scrollytelling/use-scroll-progress.ts","../src/components/scrollytelling/scrollytelling-background.tsx","../src/components/scrollytelling/scrollytelling-counter.tsx","../src/components/scrollytelling/scrollytelling-highlight.tsx","../src/components/scrollytelling/scrollytelling-transition.tsx","../src/components/scrollytelling/scrollytelling-timeline.tsx","../src/components/scrollytelling/scrollytelling-nav.tsx","../src/components/scrollytelling/scrollytelling-debug.tsx","../src/components/scrollytelling/use-isomorphic-effect.ts","../src/components/scrollytelling/scrollytelling-media.tsx","../src/components/select.tsx","../src/components/sonner.tsx","../src/components/stepper.tsx","../src/components/table.tsx","../src/components/pagination.tsx","../src/components/alert-dialog.tsx","../src/components/scroll-area.tsx","../src/components/toggle-group.tsx","../src/components/toolbar.tsx","../src/components/toast.tsx","../src/components/alert.tsx","../src/components/sheet.tsx","../src/components/empty-state.tsx","../src/components/avatar-group.tsx","../src/components/stat-card.tsx","../src/components/number-input.tsx","../src/components/input-otp.tsx","../src/components/combobox.tsx","../src/components/date-picker.tsx","../src/components/multi-select.tsx"],"names":["twMerge","clsx","React","controlledValue","defaultValue","onValueChange","divProps","uncontrolledValue","setUncontrolledValue","isControlled","value","handleValueChange","jsx","jsxs","React2","Slot","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","LabelPrimitive","React15","React16","Fragment","React17","React18","ReactDOM","React19","SeparatorPrimitive","React20","ReactDOM2","React21","React22","React23","React24","TogglePrimitive","React25","ReactDOM3","React26","textarea","count","React27","CheckboxPrimitive","DialogPrimitive","React28","X","React29","CommandPrimitive","Search","ContextMenuPrimitive","React30","ChevronRight","Check","Circle","DropdownMenuPrimitive","React31","MenubarPrimitive","React32","cva","FormProvider","React33","Controller","useFormContext","Item","React34","DayPicker","className","props","Icon","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","React35","React36","useEmblaCarousel","api","ArrowLeft","ArrowRight","React37","RechartsPrimitive","config","React38","React39","useScroll","useMotionValueEvent","React40","React41","React42","React43","motion","React44","React45","React46","format","React47","React48","React49","React50","React51","useLayoutEffect","useEffect","React52","SelectPrimitive","React53","ChevronDown","ChevronUp","SonnerToaster","React54","React55","React56","ChevronLeft","MoreHorizontal","AlertDialogPrimitive","React57","React58","ScrollAreaPrimitive","React59","ToggleGroupPrimitive","React60","ToolbarPrimitive","ToastPrimitive","React61","toast","React62","DialogPrimitive2","React63","React64","React65","React66","React67","React68","OTPInput","OTPInputContext","React69","React70","CalendarIcon","React71"],"mappings":"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","file":"index.cjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/**\n * Merge Tailwind CSS classes with conflict resolution.\n * Combines clsx for conditional classes and tailwind-merge for deduplication.\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4'\n * cn('text-red-500', condition && 'text-blue-500')\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Accordion Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface AccordionContextValue {\r\n type: \"single\" | \"multiple\";\r\n value: string[];\r\n onValueChange: (value: string[]) => void;\r\n collapsible: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nconst AccordionContext = React.createContext<AccordionContextValue | null>(\r\n null,\r\n);\r\n\r\nfunction useAccordionContext() {\r\n const context = React.useContext(AccordionContext);\r\n if (!context) {\r\n throw new Error(\"Accordion components must be used within an Accordion\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AccordionItem Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface AccordionItemContextValue {\r\n value: string;\r\n disabled: boolean;\r\n isOpen: boolean;\r\n}\r\n\r\nconst AccordionItemContext =\r\n React.createContext<AccordionItemContextValue | null>(null);\r\n\r\nfunction useAccordionItemContext() {\r\n const context = React.useContext(AccordionItemContext);\r\n if (!context) {\r\n throw new Error(\r\n \"AccordionTrigger/Content must be used within an AccordionItem\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Accordion\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface AccordionSingleProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Single item can be expanded at a time */\r\n type: \"single\";\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value */\r\n defaultValue?: string;\r\n /** Callback when value changes */\r\n onValueChange?: (value: string) => void;\r\n /** Whether the expanded item can be collapsed */\r\n collapsible?: boolean;\r\n /** Whether the accordion is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface AccordionMultipleProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Multiple items can be expanded */\r\n type: \"multiple\";\r\n /** Controlled value */\r\n value?: string[];\r\n /** Default value */\r\n defaultValue?: string[];\r\n /** Callback when value changes */\r\n onValueChange?: (value: string[]) => void;\r\n /** Whether the accordion is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\nexport type AccordionProps = AccordionSingleProps | AccordionMultipleProps;\r\n\r\n/**\r\n * Accordion component for expandable content sections.\r\n * @example\r\n * <Accordion type=\"single\" collapsible>\r\n * <AccordionItem value=\"item-1\">\r\n * <AccordionTrigger>Section 1</AccordionTrigger>\r\n * <AccordionContent>Content 1</AccordionContent>\r\n * </AccordionItem>\r\n * </Accordion>\r\n */\r\nconst Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\r\n (props, ref) => {\r\n const { type, disabled = false, style, children, ...restProps } = props;\r\n\r\n // Handle single type\r\n if (type === \"single\") {\r\n const {\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n collapsible = false,\r\n ...divProps\r\n } = restProps as Omit<\r\n AccordionSingleProps,\r\n \"type\" | \"disabled\" | \"style\" | \"children\"\r\n >;\r\n\r\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\r\n string | undefined\r\n >(defaultValue);\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = (newValue: string[]) => {\r\n const singleValue = newValue[0] || \"\";\r\n if (!isControlled) {\r\n setUncontrolledValue(singleValue || undefined);\r\n }\r\n onValueChange?.(singleValue);\r\n };\r\n\r\n return (\r\n <AccordionContext.Provider\r\n value={{\r\n type: \"single\",\r\n value: value ? [value] : [],\r\n onValueChange: handleValueChange,\r\n collapsible,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"accordion\"\r\n data-type=\"single\"\r\n data-disabled={disabled || undefined}\r\n style={style}\r\n {...divProps}\r\n >\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n );\r\n }\r\n\r\n // Handle multiple type\r\n const {\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n ...divProps\r\n } = restProps as Omit<\r\n AccordionMultipleProps,\r\n \"type\" | \"disabled\" | \"style\" | \"children\"\r\n >;\r\n\r\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string[]>(\r\n defaultValue || [],\r\n );\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = (newValue: string[]) => {\r\n if (!isControlled) {\r\n setUncontrolledValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n };\r\n\r\n return (\r\n <AccordionContext.Provider\r\n value={{\r\n type: \"multiple\",\r\n value,\r\n onValueChange: handleValueChange,\r\n collapsible: true,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"accordion\"\r\n data-type=\"multiple\"\r\n data-disabled={disabled || undefined}\r\n style={style}\r\n {...divProps}\r\n >\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n );\r\n },\r\n);\r\nAccordion.displayName = \"Accordion\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AccordionItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface AccordionItemProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Unique value for this item */\r\n value: string;\r\n /** Whether this item is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Container for accordion trigger and content.\r\n */\r\nconst AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\r\n ({ value, disabled: itemDisabled, style, children, ...props }, ref) => {\r\n const accordion = useAccordionContext();\r\n const isOpen = accordion.value.includes(value);\r\n const disabled = accordion.disabled || itemDisabled;\r\n\r\n const itemStyle: React.CSSProperties = {\r\n borderBottom: \"1px solid #e5e7eb\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <AccordionItemContext.Provider\r\n value={{ value, disabled: !!disabled, isOpen }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"accordion-item\"\r\n data-state={isOpen ? \"open\" : \"closed\"}\r\n data-disabled={disabled || undefined}\r\n style={itemStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </AccordionItemContext.Provider>\r\n );\r\n },\r\n);\r\nAccordionItem.displayName = \"AccordionItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AccordionTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface AccordionTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\n/**\r\n * Button that toggles the accordion item.\r\n */\r\nconst AccordionTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n AccordionTriggerProps\r\n>(({ className, style, children, ...props }, ref) => {\r\n const accordion = useAccordionContext();\r\n const item = useAccordionItemContext();\r\n\r\n const handleClick = () => {\r\n if (item.disabled) return;\r\n\r\n if (item.isOpen) {\r\n if (accordion.type === \"multiple\" || accordion.collapsible) {\r\n accordion.onValueChange(\r\n accordion.value.filter((v) => v !== item.value),\r\n );\r\n }\r\n } else {\r\n if (accordion.type === \"single\") {\r\n accordion.onValueChange([item.value]);\r\n } else {\r\n accordion.onValueChange([...accordion.value, item.value]);\r\n }\r\n }\r\n };\r\n\r\n const triggerStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n flex: 1,\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n padding: \"16px 0\",\r\n fontSize: 14,\r\n fontWeight: 500,\r\n textAlign: \"left\",\r\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: item.disabled ? 0.5 : 1,\r\n backgroundColor: \"transparent\",\r\n border: \"none\",\r\n width: \"100%\",\r\n transition: \"all 0.2s ease\",\r\n ...style,\r\n };\r\n\r\n const iconStyle: React.CSSProperties = {\r\n width: 16,\r\n height: 16,\r\n flexShrink: 0,\r\n transition: \"transform 0.2s ease\",\r\n transform: item.isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"accordion-trigger\"\r\n aria-expanded={item.isOpen}\r\n data-state={item.isOpen ? \"open\" : \"closed\"}\r\n data-disabled={item.disabled || undefined}\r\n disabled={item.disabled}\r\n className={className}\r\n style={triggerStyle}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n {children}\r\n <svg\r\n data-slot=\"icon\"\r\n style={iconStyle}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={2}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </button>\r\n );\r\n});\r\nAccordionTrigger.displayName = \"AccordionTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * AccordionContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface AccordionContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Content panel that expands/collapses.\r\n */\r\nconst AccordionContent = React.forwardRef<\r\n HTMLDivElement,\r\n AccordionContentProps\r\n>(({ className, style, children, ...props }, ref) => {\r\n const { isOpen } = useAccordionItemContext();\r\n const contentRef = React.useRef<HTMLDivElement>(null);\r\n const [height, setHeight] = React.useState<number | \"auto\">(\r\n isOpen ? \"auto\" : 0,\r\n );\r\n\r\n React.useLayoutEffect(() => {\r\n if (contentRef.current) {\r\n if (isOpen) {\r\n const scrollHeight = contentRef.current.scrollHeight;\r\n setHeight(scrollHeight);\r\n // After animation, set to auto for dynamic content\r\n const timer = setTimeout(() => setHeight(\"auto\"), 200);\r\n return () => clearTimeout(timer);\r\n } else {\r\n // Get current height, then set to 0 for animation\r\n const scrollHeight = contentRef.current.scrollHeight;\r\n setHeight(scrollHeight);\r\n requestAnimationFrame(() => {\r\n setHeight(0);\r\n });\r\n }\r\n }\r\n }, [isOpen]);\r\n\r\n const contentStyle: React.CSSProperties = {\r\n height: height,\r\n overflow: \"hidden\",\r\n fontSize: 14,\r\n transition: height === \"auto\" ? \"none\" : \"height 200ms ease\",\r\n ...style,\r\n };\r\n\r\n const innerStyle: React.CSSProperties = {\r\n paddingBottom: 16,\r\n paddingTop: 0,\r\n };\r\n\r\n return (\r\n <div\r\n ref={contentRef}\r\n data-slot=\"accordion-content\"\r\n data-state={isOpen ? \"open\" : \"closed\"}\r\n className={className}\r\n style={contentStyle}\r\n {...props}\r\n >\r\n <div ref={ref} style={innerStyle}>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n});\r\nAccordionContent.displayName = \"AccordionContent\";\r\n\r\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Breadcrumb\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbProps extends React.ComponentPropsWithoutRef<\"nav\"> {}\r\n\r\n/**\r\n * Breadcrumb navigation component for showing hierarchical location.\r\n * @example\r\n * <Breadcrumb>\r\n * <BreadcrumbList>\r\n * <BreadcrumbItem>\r\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\r\n * </BreadcrumbItem>\r\n * <BreadcrumbSeparator />\r\n * <BreadcrumbItem>\r\n * <BreadcrumbLink href=\"/products\">Products</BreadcrumbLink>\r\n * </BreadcrumbItem>\r\n * <BreadcrumbSeparator />\r\n * <BreadcrumbItem>\r\n * <BreadcrumbPage>Current Page</BreadcrumbPage>\r\n * </BreadcrumbItem>\r\n * </BreadcrumbList>\r\n * </Breadcrumb>\r\n */\r\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\r\n ({ ...props }, ref) => (\r\n <nav ref={ref} aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\r\n ),\r\n);\r\nBreadcrumb.displayName = \"Breadcrumb\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbListProps\r\n extends React.ComponentPropsWithoutRef<\"ol\"> {}\r\n\r\n/**\r\n * Ordered list container for breadcrumb items.\r\n */\r\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\r\n ({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n data-slot=\"breadcrumb-list\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbList.displayName = \"BreadcrumbList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbItemProps\r\n extends React.ComponentPropsWithoutRef<\"li\"> {}\r\n\r\n/**\r\n * Individual breadcrumb item container.\r\n */\r\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\r\n ({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n data-slot=\"breadcrumb-item\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbLink\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbLinkProps\r\n extends React.ComponentPropsWithoutRef<\"a\"> {\r\n /** Render as child element (for composition with router Link) */\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Clickable breadcrumb link. Supports asChild for router integration.\r\n * @example\r\n * <BreadcrumbLink href=\"/home\">Home</BreadcrumbLink>\r\n * <BreadcrumbLink asChild><Link to=\"/home\">Home</Link></BreadcrumbLink>\r\n */\r\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\r\n ({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-slot=\"breadcrumb-link\"\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbPage\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbPageProps\r\n extends React.ComponentPropsWithoutRef<\"span\"> {}\r\n\r\n/**\r\n * Current page indicator (non-interactive).\r\n */\r\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\r\n ({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n data-slot=\"breadcrumb-page\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbSeparator\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbSeparatorProps\r\n extends React.ComponentPropsWithoutRef<\"li\"> {\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Visual separator between breadcrumb items. Defaults to chevron.\r\n */\r\nconst BreadcrumbSeparator = React.forwardRef<\r\n HTMLLIElement,\r\n BreadcrumbSeparatorProps\r\n>(({ children, className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n data-slot=\"breadcrumb-separator\"\r\n className={className}\r\n {...props}\r\n >\r\n {children ?? (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"m9 18 6-6-6-6\" />\r\n </svg>\r\n )}\r\n </li>\r\n));\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * BreadcrumbEllipsis\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface BreadcrumbEllipsisProps\r\n extends React.ComponentPropsWithoutRef<\"span\"> {}\r\n\r\n/**\r\n * Ellipsis indicator for collapsed breadcrumb items.\r\n */\r\nconst BreadcrumbEllipsis = React.forwardRef<\r\n HTMLSpanElement,\r\n BreadcrumbEllipsisProps\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n data-slot=\"breadcrumb-ellipsis\"\r\n className={className}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\r\n </svg>\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n));\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** The desired ratio (width / height), e.g. 16/9, 4/3, 1 */\r\n ratio?: number;\r\n}\r\n\r\n/**\r\n * AspectRatio component that maintains a consistent width/height ratio.\r\n * Children (especially img/video) will automatically fill the container.\r\n * @example\r\n * <AspectRatio ratio={16/9}>\r\n * <img src=\"...\" alt=\"...\" />\r\n * </AspectRatio>\r\n */\r\nconst AspectRatio = React.forwardRef<HTMLDivElement, AspectRatioProps>(\r\n ({ ratio = 1, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"aspect-ratio\" data-ratio={ratio} {...props}>\r\n {React.Children.map(children, (child) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(\r\n child as React.ReactElement<React.HTMLAttributes<HTMLElement>>,\r\n {\r\n \"data-slot\": \"aspect-ratio-content\",\r\n } as React.HTMLAttributes<HTMLElement>,\r\n );\r\n }\r\n return child;\r\n })}\r\n </div>\r\n );\r\n },\r\n);\r\nAspectRatio.displayName = \"AspectRatio\";\r\n\r\nexport { AspectRatio };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Avatar\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text for the image */\r\n alt?: string;\r\n /** Fallback text or element (e.g., initials) */\r\n fallback?: React.ReactNode;\r\n /** Size of the avatar */\r\n size?: AvatarSize;\r\n}\r\n\r\n/**\r\n * Avatar component for displaying user images with fallback.\r\n * @example\r\n * <Avatar src=\"...\" alt=\"User\" fallback=\"JD\" />\r\n * <Avatar fallback=\"AB\" size=\"lg\" />\r\n */\r\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\r\n ({ src, alt, fallback, size = \"md\", className, style, ...props }, ref) => {\r\n const [imageError, setImageError] = React.useState(false);\r\n\r\n const showImage = src && !imageError;\r\n\r\n // Size mappings\r\n const sizeStyles: Record<\r\n AvatarSize,\r\n { width: number; height: number; fontSize: number }\r\n > = {\r\n sm: { width: 32, height: 32, fontSize: 12 },\r\n md: { width: 40, height: 40, fontSize: 14 },\r\n lg: { width: 48, height: 48, fontSize: 16 },\r\n xl: { width: 64, height: 64, fontSize: 20 },\r\n };\r\n\r\n const sizeConfig = sizeStyles[size];\r\n\r\n const containerStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexShrink: 0,\r\n overflow: \"hidden\",\r\n borderRadius: 9999,\r\n backgroundColor: \"#e5e7eb\",\r\n color: \"#6b7280\",\r\n fontWeight: 500,\r\n textTransform: \"uppercase\",\r\n width: sizeConfig.width,\r\n height: sizeConfig.height,\r\n fontSize: sizeConfig.fontSize,\r\n ...style,\r\n };\r\n\r\n const imageStyle: React.CSSProperties = {\r\n aspectRatio: \"1 / 1\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n };\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n data-slot=\"avatar\"\r\n data-size={size}\r\n className={className}\r\n style={containerStyle}\r\n {...props}\r\n >\r\n {showImage ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n data-slot=\"avatar-image\"\r\n style={imageStyle}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n fallback\r\n )}\r\n </span>\r\n );\r\n },\r\n);\r\nAvatar.displayName = \"Avatar\";\r\n\r\nexport { Avatar };\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\n\r\nexport type ButtonVariant =\r\n | \"default\"\r\n | \"destructive\"\r\n | \"outline\"\r\n | \"secondary\"\r\n | \"ghost\"\r\n | \"link\";\r\nexport type ButtonSize = \"default\" | \"sm\" | \"lg\" | \"icon\";\r\n\r\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Size preset */\r\n size?: ButtonSize;\r\n /** Render as child element (for composition) */\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Unstyled Button component with variant/size data attributes.\r\n * Use data-variant and data-size for styling hooks.\r\n * @example\r\n * <Button variant=\"primary\">Click me</Button>\r\n * <Button variant=\"outline\" size=\"sm\">Small</Button>\r\n * <Button asChild><a href=\"/link\">Link Button</a></Button>\r\n */\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className,\r\n variant = \"default\",\r\n size = \"default\",\r\n asChild = false,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-slot=\"button\"\r\n data-variant={variant}\r\n data-size={size}\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nButton.displayName = \"Button\";\r\n\r\nexport { Button };\r\n","import * as React from \"react\";\r\nimport { cn } from \"../utils\";\r\n\r\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\r\n\r\n/**\r\n * Input component.\r\n * Allows entering text or other data.\r\n * @example\r\n * <Input type=\"email\" placeholder=\"Enter email\" />\r\n */\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type = \"text\", ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n data-type={type}\r\n data-slot=\"input\"\r\n className={className}\r\n ref={ref}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input };\r\n","import * as React from \"react\";\r\n\r\nexport type BadgeVariant = \"default\" | \"secondary\" | \"destructive\" | \"outline\";\r\n\r\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Visual style variant */\r\n variant?: BadgeVariant;\r\n}\r\n\r\n/**\r\n * Unstyled Badge component with variant data attribute.\r\n * Use data-variant for styling hooks.\r\n * @example\r\n * <Badge>Default</Badge>\r\n * <Badge variant=\"secondary\">Secondary</Badge>\r\n * <Badge variant=\"destructive\">Error</Badge>\r\n */\r\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\r\n ({ className, variant = \"default\", ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"badge\"\r\n data-variant={variant}\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nBadge.displayName = \"Badge\";\r\n\r\nexport { Badge };\r\n","import * as React from \"react\";\r\n\r\nexport interface CardProps extends React.HTMLAttributes<HTMLElement> {}\r\n\r\n/**\r\n * Unstyled Card container component.\r\n * @example\r\n * <Card>\r\n * <CardHeader>\r\n * <CardTitle>Title</CardTitle>\r\n * <CardDescription>Description</CardDescription>\r\n * </CardHeader>\r\n * <CardContent>Content</CardContent>\r\n * <CardFooter>Actions</CardFooter>\r\n * </Card>\r\n */\r\nconst Card = React.forwardRef<HTMLElement, CardProps>(\r\n ({ className, ...props }, ref) => (\r\n <article ref={ref} data-slot=\"card\" className={className} {...props} />\r\n ),\r\n);\r\nCard.displayName = \"Card\";\r\n\r\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLElement> {}\r\n\r\nconst CardHeader = React.forwardRef<HTMLElement, CardHeaderProps>(\r\n ({ className, ...props }, ref) => (\r\n <header\r\n ref={ref}\r\n data-slot=\"card-header\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nconst CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\r\n ({ className, ...props }, ref) => (\r\n <h3 ref={ref} data-slot=\"card-title\" className={className} {...props} />\r\n ),\r\n);\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n CardDescriptionProps\r\n>(({ className, ...props }, ref) => (\r\n <p ref={ref} data-slot=\"card-description\" className={className} {...props} />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} data-slot=\"card-content\" className={className} {...props} />\r\n ),\r\n);\r\nCardContent.displayName = \"CardContent\";\r\n\r\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLElement> {}\r\n\r\nconst CardFooter = React.forwardRef<HTMLElement, CardFooterProps>(\r\n ({ className, ...props }, ref) => (\r\n <footer\r\n ref={ref}\r\n data-slot=\"card-footer\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nexport {\r\n Card,\r\n CardHeader,\r\n CardTitle,\r\n CardDescription,\r\n CardContent,\r\n CardFooter,\r\n};\r\n","import { Slot } from \"@radix-ui/react-slot\";\r\nimport * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Collapsible Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface CollapsibleContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(\r\n null,\r\n);\r\n\r\nfunction useCollapsibleContext() {\r\n const context = React.useContext(CollapsibleContext);\r\n if (!context) {\r\n throw new Error(\"Collapsible components must be used within a Collapsible\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Collapsible (Root)\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface CollapsibleProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Controlled open state */\r\n open?: boolean;\r\n /** Default open state for uncontrolled usage */\r\n defaultOpen?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Whether the collapsible is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Collapsible component that can be expanded/collapsed.\r\n * @example\r\n * <Collapsible>\r\n * <CollapsibleTrigger>Toggle</CollapsibleTrigger>\r\n * <CollapsibleContent>Content here</CollapsibleContent>\r\n * </Collapsible>\r\n */\r\nconst Collapsible = React.forwardRef<HTMLDivElement, CollapsibleProps>(\r\n (\r\n {\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n disabled = false,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : uncontrolledOpen;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n },\r\n [isControlled, onOpenChange],\r\n );\r\n\r\n // Memoize context value to prevent unnecessary re-renders\r\n const contextValue = React.useMemo(\r\n () => ({ open, onOpenChange: handleOpenChange, disabled }),\r\n [open, handleOpenChange, disabled],\r\n );\r\n\r\n return (\r\n <CollapsibleContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n data-slot=\"collapsible\"\r\n data-state={open ? \"open\" : \"closed\"}\r\n data-disabled={disabled ? \"\" : undefined}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CollapsibleContext.Provider>\r\n );\r\n },\r\n);\r\nCollapsible.displayName = \"Collapsible\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * CollapsibleTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface CollapsibleTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Render as child element (for composition) */\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Button that toggles the Collapsible open/closed state.\r\n */\r\nconst CollapsibleTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n CollapsibleTriggerProps\r\n>(\r\n (\r\n { asChild = false, onClick, disabled: disabledProp, children, ...props },\r\n ref,\r\n ) => {\r\n const {\r\n open,\r\n onOpenChange,\r\n disabled: contextDisabled,\r\n } = useCollapsibleContext();\r\n const disabled = disabledProp ?? contextDisabled;\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!disabled) {\r\n onOpenChange(!open);\r\n }\r\n onClick?.(event);\r\n };\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"collapsible-trigger\"\r\n aria-expanded={open}\r\n aria-controls=\"collapsible-content\"\r\n data-state={open ? \"open\" : \"closed\"}\r\n data-disabled={disabled ? \"\" : undefined}\r\n disabled={disabled}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n {children}\r\n </Comp>\r\n );\r\n },\r\n);\r\nCollapsibleTrigger.displayName = \"CollapsibleTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * CollapsibleContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface CollapsibleContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Force mount the content (useful for SSR or custom animations) */\r\n forceMount?: boolean;\r\n /** Animation duration in ms (default: 200) */\r\n animationDuration?: number;\r\n}\r\n\r\n/**\r\n * Content that is shown/hidden based on the Collapsible state.\r\n * Includes smooth height animation.\r\n */\r\nconst CollapsibleContent = React.forwardRef<\r\n HTMLDivElement,\r\n CollapsibleContentProps\r\n>(\r\n (\r\n { forceMount = false, animationDuration = 200, children, ...props },\r\n ref,\r\n ) => {\r\n const { open, disabled } = useCollapsibleContext();\r\n const contentRef = React.useRef<HTMLDivElement>(null);\r\n const rafRef = React.useRef<number>(0);\r\n const timerRef = React.useRef<ReturnType<typeof window.setTimeout> | null>(\r\n null,\r\n );\r\n const isFirstRender = React.useRef(true);\r\n\r\n // Use a single state object to batch updates\r\n const [state, setState] = React.useState(() => ({\r\n height: open ? undefined : 0,\r\n isAnimating: false,\r\n shouldRender: open,\r\n }));\r\n\r\n // Merge refs\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n contentRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n // Use useLayoutEffect for synchronous DOM measurement\r\n React.useLayoutEffect(() => {\r\n // Skip animation on first render\r\n if (isFirstRender.current) {\r\n isFirstRender.current = false;\r\n return;\r\n }\r\n\r\n // Clean up previous animations\r\n if (rafRef.current) {\r\n cancelAnimationFrame(rafRef.current);\r\n }\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current);\r\n }\r\n\r\n if (open) {\r\n // Opening: render content first, then animate from 0 to full height\r\n setState((prev) => ({\r\n ...prev,\r\n shouldRender: true,\r\n height: 0,\r\n isAnimating: true,\r\n }));\r\n\r\n // Single RAF is enough with useLayoutEffect\r\n rafRef.current = requestAnimationFrame(() => {\r\n if (contentRef.current) {\r\n const scrollHeight = contentRef.current.scrollHeight;\r\n setState((prev) => ({ ...prev, height: scrollHeight }));\r\n }\r\n });\r\n\r\n timerRef.current = setTimeout(() => {\r\n setState((prev) => ({\r\n ...prev,\r\n height: undefined,\r\n isAnimating: false,\r\n }));\r\n }, animationDuration);\r\n } else {\r\n // Closing: set current height, then animate to 0\r\n const currentHeight = contentRef.current?.scrollHeight ?? 0;\r\n setState((prev) => ({\r\n ...prev,\r\n height: currentHeight,\r\n isAnimating: true,\r\n }));\r\n\r\n rafRef.current = requestAnimationFrame(() => {\r\n setState((prev) => ({ ...prev, height: 0 }));\r\n });\r\n\r\n timerRef.current = setTimeout(() => {\r\n setState((prev) => ({\r\n ...prev,\r\n shouldRender: false,\r\n isAnimating: false,\r\n }));\r\n }, animationDuration);\r\n }\r\n\r\n return () => {\r\n if (rafRef.current) {\r\n cancelAnimationFrame(rafRef.current);\r\n }\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current);\r\n }\r\n };\r\n }, [open, animationDuration]);\r\n\r\n if (!state.shouldRender && !forceMount) {\r\n return null;\r\n }\r\n\r\n const heightValue =\r\n state.height !== undefined ? `${state.height}px` : \"auto\";\r\n\r\n return (\r\n <div\r\n ref={mergedRef}\r\n id=\"collapsible-content\"\r\n data-slot=\"collapsible-content\"\r\n data-state={open ? \"open\" : \"closed\"}\r\n data-disabled={disabled ? \"\" : undefined}\r\n style={{\r\n overflow: \"hidden\",\r\n height: heightValue,\r\n transition: state.isAnimating\r\n ? `height ${animationDuration}ms ease-out`\r\n : undefined,\r\n willChange: state.isAnimating ? \"height\" : undefined,\r\n ...props.style,\r\n ...(forceMount && !open && !state.isAnimating\r\n ? { display: \"none\" }\r\n : {}),\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nCollapsibleContent.displayName = \"CollapsibleContent\";\r\n\r\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\r\n","import * as React from \"react\";\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Indicates loading state for accessibility */\r\n loading?: boolean;\r\n}\r\n\r\n/**\r\n * Unstyled Skeleton placeholder component.\r\n * Use data-loading attribute for animation styling.\r\n * @example\r\n * <Skeleton className=\"h-4 w-32\" />\r\n * <Skeleton className=\"h-10 w-full animate-pulse\" />\r\n */\r\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\r\n ({ className, loading = true, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"skeleton\"\r\n data-loading={loading}\r\n aria-busy={loading}\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSkeleton.displayName = \"Skeleton\";\r\n\r\nexport { Skeleton };\r\n","import * as React from \"react\";\r\n\r\nexport interface SpinnerProps extends React.SVGAttributes<SVGSVGElement> {\r\n /** Size of the spinner (width and height) */\r\n size?: number | string;\r\n /** Custom aria-label for accessibility */\r\n label?: string;\r\n}\r\n\r\n/**\r\n * Unstyled Spinner component using inline SVG.\r\n * No external icon library dependency.\r\n * Add CSS animation (e.g., spin) via className.\r\n * @example\r\n * <Spinner className=\"animate-spin\" />\r\n * <Spinner size={24} label=\"Loading data...\" />\r\n */\r\nconst Spinner = React.forwardRef<SVGSVGElement, SpinnerProps>(\r\n ({ className, size = 16, label = \"Loading\", ...props }, ref) => {\r\n return (\r\n <svg\r\n ref={ref}\r\n data-slot=\"spinner\"\r\n role=\"status\"\r\n aria-label={label}\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={className}\r\n {...props}\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n );\r\n },\r\n);\r\nSpinner.displayName = \"Spinner\";\r\n\r\nexport { Spinner };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * HoverCard Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface HoverCardContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n triggerRef: React.RefObject<HTMLElement | null>;\r\n}\r\n\r\nconst HoverCardContext = React.createContext<HoverCardContextValue | null>(\r\n null,\r\n);\r\n\r\nfunction useHoverCardContext() {\r\n const context = React.useContext(HoverCardContext);\r\n if (!context) {\r\n throw new Error(\"HoverCard components must be used within a HoverCard\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * HoverCard (Root)\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface HoverCardProps {\r\n /** Controlled open state */\r\n open?: boolean;\r\n /** Default open state for uncontrolled usage */\r\n defaultOpen?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Delay in ms before opening (default: 700) */\r\n openDelay?: number;\r\n /** Delay in ms before closing (default: 300) */\r\n closeDelay?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * HoverCard component that shows content on hover.\r\n * @example\r\n * <HoverCard>\r\n * <HoverCardTrigger>Hover me</HoverCardTrigger>\r\n * <HoverCardContent>Content here</HoverCardContent>\r\n * </HoverCard>\r\n */\r\nconst HoverCard: React.FC<HoverCardProps> = ({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n openDelay = 700,\r\n closeDelay = 300,\r\n children,\r\n}) => {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n const triggerRef = React.useRef<HTMLElement>(null);\r\n const openTimerRef = React.useRef<number | undefined>(undefined);\r\n const closeTimerRef = React.useRef<number | undefined>(undefined);\r\n\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : uncontrolledOpen;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n // Clear any pending timers\r\n if (openTimerRef.current) {\r\n clearTimeout(openTimerRef.current);\r\n openTimerRef.current = undefined;\r\n }\r\n if (closeTimerRef.current) {\r\n clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = undefined;\r\n }\r\n\r\n const delay = newOpen ? openDelay : closeDelay;\r\n\r\n const timerId = window.setTimeout(() => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n }, delay);\r\n\r\n if (newOpen) {\r\n openTimerRef.current = timerId;\r\n } else {\r\n closeTimerRef.current = timerId;\r\n }\r\n },\r\n [isControlled, onOpenChange, openDelay, closeDelay],\r\n );\r\n\r\n // Cleanup timers on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n if (openTimerRef.current) clearTimeout(openTimerRef.current);\r\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\r\n };\r\n }, []);\r\n\r\n return (\r\n <HoverCardContext.Provider\r\n value={{ open, onOpenChange: handleOpenChange, triggerRef }}\r\n >\r\n {children}\r\n </HoverCardContext.Provider>\r\n );\r\n};\r\nHoverCard.displayName = \"HoverCard\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * HoverCardTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface HoverCardTriggerProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Render as child element (for composition) */\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Element that triggers the hover card on mouse enter.\r\n */\r\nconst HoverCardTrigger = React.forwardRef<\r\n HTMLDivElement,\r\n HoverCardTriggerProps\r\n>(({ children, onMouseEnter, onMouseLeave, ...props }, ref) => {\r\n const { open, onOpenChange, triggerRef } = useHoverCardContext();\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, triggerRef],\r\n );\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\r\n onOpenChange(true);\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\r\n onOpenChange(false);\r\n onMouseLeave?.(e);\r\n };\r\n\r\n return (\r\n <div\r\n ref={mergedRef}\r\n data-state={open ? \"open\" : \"closed\"}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\nHoverCardTrigger.displayName = \"HoverCardTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * HoverCardContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type HoverCardSide = \"top\" | \"right\" | \"bottom\" | \"left\";\r\nexport type HoverCardAlign = \"start\" | \"center\" | \"end\";\r\n\r\nexport interface HoverCardContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Side to position the content */\r\n side?: HoverCardSide;\r\n /** Offset from the trigger (default: 4) */\r\n sideOffset?: number;\r\n /** Alignment relative to trigger */\r\n align?: HoverCardAlign;\r\n}\r\n\r\n/**\r\n * Content that appears on hover.\r\n */\r\nconst HoverCardContent = React.forwardRef<\r\n HTMLDivElement,\r\n HoverCardContentProps\r\n>(\r\n (\r\n {\r\n side = \"bottom\",\r\n sideOffset = 4,\r\n align = \"center\",\r\n style,\r\n onMouseEnter,\r\n onMouseLeave,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const { open, onOpenChange, triggerRef } = useHoverCardContext();\r\n const contentRef = React.useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = React.useState<{\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n const [mounted, setMounted] = React.useState(false);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n contentRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n // Mark as mounted after first render\r\n React.useLayoutEffect(() => {\r\n if (open) {\r\n setMounted(true);\r\n } else {\r\n setMounted(false);\r\n setPosition(null);\r\n }\r\n }, [open]);\r\n\r\n // Calculate position after content is mounted\r\n React.useLayoutEffect(() => {\r\n if (mounted && open && triggerRef.current && contentRef.current) {\r\n requestAnimationFrame(() => {\r\n if (!triggerRef.current || !contentRef.current) return;\r\n\r\n const triggerRect = triggerRef.current.getBoundingClientRect();\r\n const contentRect = contentRef.current.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n // Calculate position based on side\r\n switch (side) {\r\n case \"top\":\r\n top = triggerRect.top - contentRect.height - sideOffset;\r\n left = triggerRect.left;\r\n break;\r\n case \"bottom\":\r\n top = triggerRect.bottom + sideOffset;\r\n left = triggerRect.left;\r\n break;\r\n case \"left\":\r\n top = triggerRect.top;\r\n left = triggerRect.left - contentRect.width - sideOffset;\r\n break;\r\n case \"right\":\r\n top = triggerRect.top;\r\n left = triggerRect.right + sideOffset;\r\n break;\r\n }\r\n\r\n // Adjust for alignment\r\n if (side === \"top\" || side === \"bottom\") {\r\n switch (align) {\r\n case \"start\":\r\n // left stays as is\r\n break;\r\n case \"center\":\r\n left =\r\n triggerRect.left +\r\n (triggerRect.width - contentRect.width) / 2;\r\n break;\r\n case \"end\":\r\n left = triggerRect.right - contentRect.width;\r\n break;\r\n }\r\n } else {\r\n switch (align) {\r\n case \"start\":\r\n // top stays as is\r\n break;\r\n case \"center\":\r\n top =\r\n triggerRect.top +\r\n (triggerRect.height - contentRect.height) / 2;\r\n break;\r\n case \"end\":\r\n top = triggerRect.bottom - contentRect.height;\r\n break;\r\n }\r\n }\r\n\r\n setPosition({ top, left });\r\n });\r\n }\r\n }, [mounted, open, side, sideOffset, align, triggerRef]);\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\r\n // Cancel close timer when hovering content\r\n onOpenChange(true);\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\r\n onOpenChange(false);\r\n onMouseLeave?.(e);\r\n };\r\n\r\n if (!open) return null;\r\n\r\n const contentStyle: React.CSSProperties = {\r\n position: \"fixed\",\r\n top: position?.top ?? 0,\r\n left: position?.left ?? 0,\r\n zIndex: 50,\r\n width: 256,\r\n borderRadius: 6,\r\n border: \"1px solid #e5e7eb\",\r\n backgroundColor: \"#ffffff\",\r\n padding: 16,\r\n fontSize: 14,\r\n color: \"#18181b\",\r\n boxShadow:\r\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\r\n outline: \"none\",\r\n visibility: position ? \"visible\" : \"hidden\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={mergedRef}\r\n data-slot=\"hover-card-content\"\r\n data-side={side}\r\n data-align={align}\r\n data-state={open ? \"open\" : \"closed\"}\r\n style={contentStyle}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nHoverCardContent.displayName = \"HoverCardContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * HoverCardArrow\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface HoverCardArrowProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Width of the arrow (default: 10) */\r\n width?: number;\r\n /** Height of the arrow (default: 5) */\r\n height?: number;\r\n}\r\n\r\n/**\r\n * Arrow element that points to the trigger.\r\n * Place inside HoverCardContent.\r\n */\r\nconst HoverCardArrow = React.forwardRef<HTMLDivElement, HoverCardArrowProps>(\r\n ({ width = 10, height = 5, style, ...props }, ref) => {\r\n const arrowStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n width,\r\n height,\r\n backgroundColor: \"#ffffff\",\r\n border: \"1px solid #e5e7eb\",\r\n transform: \"rotate(45deg)\",\r\n ...style,\r\n };\r\n\r\n return <div ref={ref} data-slot=\"arrow\" style={arrowStyle} {...props} />;\r\n },\r\n);\r\nHoverCardArrow.displayName = \"HoverCardArrow\";\r\n\r\nexport { HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger };\r\n","import * as React from \"react\";\r\n\r\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {}\r\n\r\n/**\r\n * Keyboard key indicator component.\r\n * Use data-slot=\"kbd\" for styling hooks.\r\n * @example\r\n * <Kbd>⌘</Kbd>\r\n * <Kbd>Ctrl</Kbd>\r\n * <KbdGroup><Kbd>⌘</Kbd><Kbd>K</Kbd></KbdGroup>\r\n */\r\nconst Kbd = React.forwardRef<HTMLElement, KbdProps>(\r\n ({ className, style, ...props }, ref) => {\r\n return (\r\n <kbd\r\n ref={ref}\r\n data-slot=\"kbd\"\r\n className={className}\r\n style={style}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nKbd.displayName = \"Kbd\";\r\n\r\nexport interface KbdGroupProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Group multiple Kbd elements together.\r\n * @example\r\n * <KbdGroup><Kbd>⌘</Kbd><Kbd>K</Kbd></KbdGroup>\r\n */\r\nconst KbdGroup = React.forwardRef<HTMLDivElement, KbdGroupProps>(\r\n ({ className, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"kbd-group\"\r\n className={className}\r\n style={style}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nKbdGroup.displayName = \"KbdGroup\";\r\n\r\nexport { Kbd, KbdGroup };\r\n","import * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { cn } from \"../utils\";\r\n\r\nexport interface LabelProps extends React.ComponentPropsWithoutRef<\"label\"> {}\r\n\r\n/**\r\n * A functional label component that supports accessible interactions.\r\n * Built on top of Radix UI Label Primitive.\r\n */\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n LabelProps\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root\r\n ref={ref}\r\n data-slot=\"label\"\r\n className={cn(className)}\r\n {...(props as any)}\r\n />\r\n));\r\n\r\nLabel.displayName = \"Label\";\r\n\r\nexport { Label };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenu Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface NavigationMenuContextValue {\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n orientation: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nconst NavigationMenuContext =\r\n React.createContext<NavigationMenuContextValue | null>(null);\r\n\r\nfunction useNavigationMenuContext() {\r\n const context = React.useContext(NavigationMenuContext);\r\n if (!context) {\r\n throw new Error(\r\n \"NavigationMenu components must be used within a NavigationMenu\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuItem Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface NavigationMenuItemContextValue {\r\n value: string;\r\n isOpen: boolean;\r\n triggerRef: React.RefObject<HTMLButtonElement | null>;\r\n}\r\n\r\nconst NavigationMenuItemContext =\r\n React.createContext<NavigationMenuItemContextValue | null>(null);\r\n\r\nfunction useNavigationMenuItemContext() {\r\n const context = React.useContext(NavigationMenuItemContext);\r\n if (!context) {\r\n throw new Error(\r\n \"NavigationMenuTrigger/Content must be used within a NavigationMenuItem\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenu\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuProps extends React.HTMLAttributes<HTMLElement> {\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value */\r\n defaultValue?: string;\r\n /** Callback when value changes */\r\n onValueChange?: (value: string) => void;\r\n /** Orientation of the menu */\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\n/**\r\n * Navigation menu component with dropdown support.\r\n * @example\r\n * <NavigationMenu>\r\n * <NavigationMenuList>\r\n * <NavigationMenuItem value=\"home\">\r\n * <NavigationMenuTrigger>Home</NavigationMenuTrigger>\r\n * <NavigationMenuContent>Content</NavigationMenuContent>\r\n * </NavigationMenuItem>\r\n * </NavigationMenuList>\r\n * </NavigationMenu>\r\n */\r\nconst NavigationMenu = React.forwardRef<HTMLElement, NavigationMenuProps>(\r\n (\r\n {\r\n value: controlledValue,\r\n defaultValue = \"\",\r\n onValueChange,\r\n orientation = \"horizontal\",\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledValue, setUncontrolledValue] =\r\n React.useState(defaultValue);\r\n const navRef = React.useRef<HTMLElement>(null);\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: string) => {\r\n if (!isControlled) {\r\n setUncontrolledValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n },\r\n [isControlled, onValueChange],\r\n );\r\n\r\n // Click outside to close\r\n React.useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (navRef.current && !navRef.current.contains(e.target as Node)) {\r\n handleValueChange(\"\");\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () =>\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [handleValueChange]);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLElement | null) => {\r\n (navRef as React.MutableRefObject<HTMLElement | null>).current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n return (\r\n <NavigationMenuContext.Provider\r\n value={{ value, onValueChange: handleValueChange, orientation }}\r\n >\r\n <nav\r\n ref={mergedRef}\r\n data-slot=\"navigation-menu\"\r\n data-orientation={orientation}\r\n style={style}\r\n {...props}\r\n >\r\n {children}\r\n </nav>\r\n </NavigationMenuContext.Provider>\r\n );\r\n },\r\n);\r\nNavigationMenu.displayName = \"NavigationMenu\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuListProps extends React.HTMLAttributes<HTMLUListElement> {}\r\n\r\n/**\r\n * Container for navigation menu items.\r\n */\r\nconst NavigationMenuList = React.forwardRef<\r\n HTMLUListElement,\r\n NavigationMenuListProps\r\n>(({ style, children, ...props }, ref) => {\r\n const { orientation } = useNavigationMenuContext();\r\n\r\n return (\r\n <ul\r\n ref={ref}\r\n data-slot=\"navigation-menu-list\"\r\n data-orientation={orientation}\r\n style={style}\r\n {...props}\r\n >\r\n {children}\r\n </ul>\r\n );\r\n});\r\nNavigationMenuList.displayName = \"NavigationMenuList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuItemProps extends React.HTMLAttributes<HTMLLIElement> {\r\n /** Unique value for this item */\r\n value?: string;\r\n}\r\n\r\n/**\r\n * Container for navigation trigger and content.\r\n */\r\nconst NavigationMenuItem = React.forwardRef<\r\n HTMLLIElement,\r\n NavigationMenuItemProps\r\n>(({ value: itemValue, style, children, ...props }, ref) => {\r\n const menu = useNavigationMenuContext();\r\n const generatedValue = React.useId();\r\n const value = itemValue ?? generatedValue;\r\n const isOpen = menu.value === value;\r\n const triggerRef = React.useRef<HTMLButtonElement>(null);\r\n\r\n return (\r\n <NavigationMenuItemContext.Provider value={{ value, isOpen, triggerRef }}>\r\n <li\r\n ref={ref}\r\n data-slot=\"navigation-menu-item\"\r\n data-state={isOpen ? \"open\" : \"closed\"}\r\n style={style}\r\n {...props}\r\n >\r\n {children}\r\n </li>\r\n </NavigationMenuItemContext.Provider>\r\n );\r\n});\r\nNavigationMenuItem.displayName = \"NavigationMenuItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\n/**\r\n * Button that toggles the navigation menu content.\r\n */\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n NavigationMenuTriggerProps\r\n>(\r\n (\r\n { className, style, children, onMouseEnter, onMouseLeave, ...props },\r\n ref,\r\n ) => {\r\n const menu = useNavigationMenuContext();\r\n const item = useNavigationMenuItemContext();\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLButtonElement | null) => {\r\n (\r\n item.triggerRef as React.MutableRefObject<HTMLButtonElement | null>\r\n ).current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, item.triggerRef],\r\n );\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n menu.onValueChange(item.value);\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n onMouseLeave?.(e);\r\n };\r\n\r\n return (\r\n <button\r\n ref={mergedRef}\r\n type=\"button\"\r\n data-slot=\"navigation-menu-trigger\"\r\n aria-expanded={item.isOpen}\r\n data-state={item.isOpen ? \"open\" : \"closed\"}\r\n className={className}\r\n style={style}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n {...props}\r\n >\r\n {children}\r\n <svg\r\n data-slot=\"icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={2}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </button>\r\n );\r\n },\r\n);\r\nNavigationMenuTrigger.displayName = \"NavigationMenuTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Dropdown content for a navigation menu item.\r\n */\r\nconst NavigationMenuContent = React.forwardRef<\r\n HTMLDivElement,\r\n NavigationMenuContentProps\r\n>(\r\n (\r\n { className, style, children, onMouseEnter, onMouseLeave, ...props },\r\n ref,\r\n ) => {\r\n const menu = useNavigationMenuContext();\r\n const item = useNavigationMenuItemContext();\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\r\n menu.onValueChange(item.value);\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\r\n menu.onValueChange(\"\");\r\n onMouseLeave?.(e);\r\n };\r\n\r\n if (!item.isOpen) return null;\r\n\r\n const contentStyle: React.CSSProperties = {\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"navigation-menu-content\"\r\n data-state={item.isOpen ? \"open\" : \"closed\"}\r\n className={className}\r\n style={contentStyle}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuLink\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\r\n /** Whether this is the active link */\r\n active?: boolean;\r\n}\r\n\r\n/**\r\n * Link element for navigation menu.\r\n */\r\nconst NavigationMenuLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n NavigationMenuLinkProps\r\n>(({ active, className, style, children, onClick, ...props }, ref) => {\r\n const menu = useNavigationMenuContext();\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\r\n menu.onValueChange(\"\");\r\n onClick?.(e);\r\n };\r\n\r\n return (\r\n <a\r\n ref={ref}\r\n data-slot=\"navigation-menu-link\"\r\n data-active={active || undefined}\r\n className={className}\r\n style={style}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n );\r\n});\r\nNavigationMenuLink.displayName = \"NavigationMenuLink\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NavigationMenuIndicator\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NavigationMenuIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Optional indicator for active navigation item.\r\n */\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n HTMLDivElement,\r\n NavigationMenuIndicatorProps\r\n>(({ style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"navigation-menu-indicator\"\r\n style={style}\r\n {...props}\r\n >\r\n <div />\r\n </div>\r\n );\r\n});\r\nNavigationMenuIndicator.displayName = \"NavigationMenuIndicator\";\r\n\r\nexport {\r\n NavigationMenu,\r\n NavigationMenuContent,\r\n NavigationMenuIndicator,\r\n NavigationMenuItem,\r\n NavigationMenuLink,\r\n NavigationMenuList,\r\n NavigationMenuTrigger,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Progress value from 0 to 100 */\r\n value?: number;\r\n /** Maximum value (default: 100) */\r\n max?: number;\r\n /** Show indeterminate loading animation */\r\n indeterminate?: boolean;\r\n}\r\n\r\n/**\r\n * Progress bar component with animations.\r\n * Use data-slot for styling hooks.\r\n * @example\r\n * <Progress value={50} />\r\n * <Progress value={75} max={100} />\r\n * <Progress indeterminate />\r\n */\r\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\r\n (\r\n { value = 0, max = 100, indeterminate = false, className, style, ...props },\r\n ref,\r\n ) => {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n // Container/Track styles\r\n const trackStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n height: 16,\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n borderRadius: 9999,\r\n backgroundColor: \"#e5e7eb\",\r\n ...style,\r\n };\r\n\r\n // Indicator styles\r\n const indicatorStyle: React.CSSProperties = indeterminate\r\n ? {\r\n position: \"absolute\",\r\n left: 0,\r\n height: \"100%\",\r\n width: \"40%\",\r\n backgroundColor: \"#18181b\",\r\n borderRadius: 9999,\r\n animation: \"progress-indeterminate 1.5s ease-in-out infinite\",\r\n }\r\n : {\r\n height: \"100%\",\r\n width: `${percentage}%`,\r\n backgroundColor: \"#18181b\",\r\n borderRadius: 9999,\r\n transition: \"width 0.3s ease\",\r\n };\r\n\r\n return (\r\n <>\r\n {/* Inject keyframes for indeterminate animation */}\r\n {indeterminate && (\r\n <style>\r\n {`\r\n @keyframes progress-indeterminate {\r\n 0% { left: -40%; }\r\n 100% { left: 100%; }\r\n }\r\n `}\r\n </style>\r\n )}\r\n <div\r\n ref={ref}\r\n data-slot=\"progress\"\r\n role=\"progressbar\"\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n aria-valuenow={indeterminate ? undefined : value}\r\n data-value={value}\r\n data-max={max}\r\n data-indeterminate={indeterminate || undefined}\r\n className={className}\r\n style={trackStyle}\r\n {...props}\r\n >\r\n <div\r\n data-slot=\"progress-indicator\"\r\n data-indeterminate={indeterminate || undefined}\r\n data-animated={\r\n percentage > 0 && percentage < 100 ? \"true\" : undefined\r\n }\r\n style={indicatorStyle}\r\n />\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\nProgress.displayName = \"Progress\";\r\n\r\nexport { Progress };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * RadioGroup Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface RadioGroupContextValue {\r\n value: string | undefined;\r\n onValueChange: (value: string) => void;\r\n name: string;\r\n disabled: boolean;\r\n required: boolean;\r\n}\r\n\r\nconst RadioGroupContext = React.createContext<RadioGroupContextValue | null>(\r\n null,\r\n);\r\n\r\nfunction useRadioGroupContext() {\r\n const context = React.useContext(RadioGroupContext);\r\n if (!context) {\r\n throw new Error(\"RadioGroupItem must be used within a RadioGroup\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * RadioGroup\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface RadioGroupProps extends Omit<\r\n React.HTMLAttributes<HTMLDivElement>,\r\n \"onChange\"\r\n> {\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value for uncontrolled usage */\r\n defaultValue?: string;\r\n /** Callback when value changes */\r\n onValueChange?: (value: string) => void;\r\n /** Name for form submission */\r\n name?: string;\r\n /** Whether the radio group is disabled */\r\n disabled?: boolean;\r\n /** Whether a selection is required */\r\n required?: boolean;\r\n /** Orientation of the radio group */\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\n/**\r\n * RadioGroup component for selecting one option from a set.\r\n * @example\r\n * <RadioGroup defaultValue=\"option1\" onValueChange={setValue}>\r\n * <RadioGroupItem value=\"option1\" />\r\n * <RadioGroupItem value=\"option2\" />\r\n * </RadioGroup>\r\n */\r\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\r\n (\r\n {\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n name: propName,\r\n disabled = false,\r\n required = false,\r\n orientation = \"vertical\",\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\r\n string | undefined\r\n >(defaultValue);\r\n const generatedName = React.useId();\r\n const name = propName ?? generatedName;\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: string) => {\r\n if (!isControlled) {\r\n setUncontrolledValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n },\r\n [isControlled, onValueChange],\r\n );\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n value,\r\n onValueChange: handleValueChange,\r\n name,\r\n disabled,\r\n required,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"radio-group\"\r\n role=\"radiogroup\"\r\n aria-required={required}\r\n aria-orientation={orientation}\r\n data-disabled={disabled || undefined}\r\n data-orientation={orientation}\r\n style={style}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </RadioGroupContext.Provider>\r\n );\r\n },\r\n);\r\nRadioGroup.displayName = \"RadioGroup\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * RadioGroupItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface RadioGroupItemProps extends Omit<\r\n React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n \"value\"\r\n> {\r\n /** Value of this radio item */\r\n value: string;\r\n /** Label text for the radio item */\r\n label?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Individual radio item within a RadioGroup.\r\n */\r\nconst RadioGroupItem = React.forwardRef<HTMLButtonElement, RadioGroupItemProps>(\r\n (\r\n { value, label, disabled: itemDisabled, className, style, id, ...props },\r\n ref,\r\n ) => {\r\n const context = useRadioGroupContext();\r\n const generatedId = React.useId();\r\n const itemId = id ?? generatedId;\r\n const isChecked = context.value === value;\r\n const isDisabled = context.disabled || itemDisabled;\r\n\r\n const handleClick = () => {\r\n if (!isDisabled) {\r\n context.onValueChange(value);\r\n }\r\n };\r\n\r\n return (\r\n <label htmlFor={itemId} className={className} style={style}>\r\n <button\r\n ref={ref}\r\n id={itemId}\r\n type=\"button\"\r\n data-slot=\"radio-group-item\"\r\n role=\"radio\"\r\n aria-checked={isChecked}\r\n data-state={isChecked ? \"checked\" : \"unchecked\"}\r\n data-disabled={isDisabled || undefined}\r\n disabled={isDisabled}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <span data-slot=\"radio-group-indicator\" />\r\n </button>\r\n {label && <span data-slot=\"radio-group-label\">{label}</span>}\r\n <input\r\n type=\"radio\"\r\n name={context.name}\r\n value={value}\r\n checked={isChecked}\r\n required={context.required}\r\n disabled={isDisabled}\r\n onChange={() => {}}\r\n style={{ position: \"absolute\", opacity: 0, pointerEvents: \"none\" }}\r\n tabIndex={-1}\r\n />\r\n </label>\r\n );\r\n },\r\n);\r\nRadioGroupItem.displayName = \"RadioGroupItem\";\r\n\r\nexport { RadioGroup, RadioGroupItem };\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Popover Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface PopoverContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n triggerRef: React.RefObject<HTMLElement | null>;\r\n contentId: string;\r\n side: PopoverSide;\r\n}\r\n\r\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null);\r\n\r\nfunction usePopoverContext() {\r\n const context = React.useContext(PopoverContext);\r\n if (!context) {\r\n throw new Error(\"Popover components must be used within a Popover\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Popover (Root)\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\r\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\r\n\r\nexport interface PopoverProps {\r\n /** Controlled open state */\r\n open?: boolean;\r\n /** Default open state for uncontrolled usage */\r\n defaultOpen?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Popover component that shows content on click.\r\n * @example\r\n * <Popover>\r\n * <PopoverTrigger>Click me</PopoverTrigger>\r\n * <PopoverContent>\r\n * <PopoverArrow />\r\n * Content here\r\n * </PopoverContent>\r\n * </Popover>\r\n */\r\nconst Popover: React.FC<PopoverProps> = ({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n children,\r\n}) => {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n const triggerRef = React.useRef<HTMLElement>(null);\r\n const contentId = React.useId();\r\n\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : uncontrolledOpen;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n },\r\n [isControlled, onOpenChange],\r\n );\r\n\r\n return (\r\n <PopoverContext.Provider\r\n value={{\r\n open,\r\n onOpenChange: handleOpenChange,\r\n triggerRef,\r\n contentId,\r\n side: \"bottom\",\r\n }}\r\n >\r\n {children}\r\n </PopoverContext.Provider>\r\n );\r\n};\r\nPopover.displayName = \"Popover\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * PopoverTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface PopoverTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\n/**\r\n * Button that toggles the popover open/closed.\r\n */\r\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\r\n ({ onClick, children, style, ...props }, ref) => {\r\n const { open, onOpenChange, triggerRef, contentId } = usePopoverContext();\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLButtonElement | null) => {\r\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current =\r\n node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, triggerRef],\r\n );\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n onOpenChange(!open);\r\n onClick?.(e);\r\n };\r\n\r\n const triggerStyle: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: \"8px 16px\",\r\n borderRadius: 6,\r\n border: \"1px solid #d1d5db\",\r\n backgroundColor: \"#ffffff\",\r\n fontSize: 14,\r\n cursor: \"pointer\",\r\n transition: \"background-color 0.2s ease\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <button\r\n ref={mergedRef}\r\n type=\"button\"\r\n data-slot=\"popover-trigger\"\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n aria-controls={open ? contentId : undefined}\r\n data-state={open ? \"open\" : \"closed\"}\r\n onClick={handleClick}\r\n style={triggerStyle}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n },\r\n);\r\nPopoverTrigger.displayName = \"PopoverTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * PopoverAnchor\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface PopoverAnchorProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Optional anchor element for positioning the popover.\r\n */\r\nconst PopoverAnchor = React.forwardRef<HTMLDivElement, PopoverAnchorProps>(\r\n ({ children, ...props }, ref) => {\r\n const { triggerRef } = usePopoverContext();\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current =\r\n node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, triggerRef],\r\n );\r\n\r\n return (\r\n <div ref={mergedRef} {...props}>\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nPopoverAnchor.displayName = \"PopoverAnchor\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * PopoverContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface ContentContextValue {\r\n side: PopoverSide;\r\n}\r\n\r\nconst ContentContext = React.createContext<ContentContextValue>({\r\n side: \"bottom\",\r\n});\r\n\r\nexport interface PopoverContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Side to position the content */\r\n side?: PopoverSide;\r\n /** Offset from the trigger (default: 8) */\r\n sideOffset?: number;\r\n /** Alignment relative to trigger */\r\n align?: PopoverAlign;\r\n /** Whether to use portal rendering */\r\n portal?: boolean;\r\n}\r\n\r\n/**\r\n * Content that appears when popover is open.\r\n */\r\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\r\n (\r\n {\r\n side = \"bottom\",\r\n sideOffset = 8,\r\n align = \"center\",\r\n portal = true,\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const { open, onOpenChange, triggerRef, contentId } = usePopoverContext();\r\n const contentRef = React.useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = React.useState<{\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n contentRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n // Calculate and update position\r\n React.useLayoutEffect(() => {\r\n if (!open || !triggerRef.current) {\r\n setPosition(null);\r\n return;\r\n }\r\n\r\n const updatePosition = () => {\r\n if (!triggerRef.current || !contentRef.current) return;\r\n\r\n const triggerRect = triggerRef.current.getBoundingClientRect();\r\n const contentRect = contentRef.current.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (side) {\r\n case \"top\":\r\n top = triggerRect.top - contentRect.height - sideOffset;\r\n break;\r\n case \"bottom\":\r\n top = triggerRect.bottom + sideOffset;\r\n break;\r\n case \"left\":\r\n left = triggerRect.left - contentRect.width - sideOffset;\r\n break;\r\n case \"right\":\r\n left = triggerRect.right + sideOffset;\r\n break;\r\n }\r\n\r\n if (side === \"top\" || side === \"bottom\") {\r\n switch (align) {\r\n case \"start\":\r\n left = triggerRect.left;\r\n break;\r\n case \"center\":\r\n left =\r\n triggerRect.left +\r\n triggerRect.width / 2 -\r\n contentRect.width / 2;\r\n break;\r\n case \"end\":\r\n left = triggerRect.right - contentRect.width;\r\n break;\r\n }\r\n } else {\r\n switch (align) {\r\n case \"start\":\r\n top = triggerRect.top;\r\n break;\r\n case \"center\":\r\n top =\r\n triggerRect.top +\r\n triggerRect.height / 2 -\r\n contentRect.height / 2;\r\n break;\r\n case \"end\":\r\n top = triggerRect.bottom - contentRect.height;\r\n break;\r\n }\r\n }\r\n\r\n setPosition({ top, left });\r\n };\r\n\r\n // Initial position calculation with RAF to ensure element has dimensions\r\n requestAnimationFrame(updatePosition);\r\n }, [open, side, sideOffset, align, triggerRef]);\r\n\r\n // Close on click outside\r\n React.useEffect(() => {\r\n if (!open) return;\r\n\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n contentRef.current &&\r\n !contentRef.current.contains(e.target as Node) &&\r\n triggerRef.current &&\r\n !triggerRef.current.contains(e.target as Node)\r\n ) {\r\n onOpenChange(false);\r\n }\r\n };\r\n\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n onOpenChange(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n document.addEventListener(\"keydown\", handleEscape);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n };\r\n }, [open, onOpenChange, triggerRef]);\r\n\r\n if (!open) return null;\r\n\r\n const contentStyle: React.CSSProperties = {\r\n position: \"fixed\",\r\n top: position?.top ?? -9999,\r\n left: position?.left ?? -9999,\r\n zIndex: 50,\r\n width: 288,\r\n borderRadius: 6,\r\n border: \"1px solid #e5e7eb\",\r\n backgroundColor: \"#ffffff\",\r\n padding: 16,\r\n fontSize: 14,\r\n color: \"#18181b\",\r\n boxShadow:\r\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\r\n outline: \"none\",\r\n visibility: position ? \"visible\" : \"hidden\",\r\n ...style,\r\n };\r\n\r\n const content = (\r\n <ContentContext.Provider value={{ side }}>\r\n <div\r\n ref={mergedRef}\r\n id={contentId}\r\n data-slot=\"popover-content\"\r\n role=\"dialog\"\r\n data-side={side}\r\n data-align={align}\r\n data-state={open ? \"open\" : \"closed\"}\r\n style={contentStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </ContentContext.Provider>\r\n );\r\n\r\n if (portal && typeof document !== \"undefined\") {\r\n return ReactDOM.createPortal(content, document.body);\r\n }\r\n\r\n return content;\r\n },\r\n);\r\nPopoverContent.displayName = \"PopoverContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * PopoverArrow\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface PopoverArrowProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Width of the arrow (default: 10) */\r\n width?: number;\r\n /** Height of the arrow (default: 5) */\r\n height?: number;\r\n}\r\n\r\n/**\r\n * Arrow element that points to the trigger.\r\n * Place inside PopoverContent.\r\n */\r\nconst PopoverArrow = React.forwardRef<HTMLDivElement, PopoverArrowProps>(\r\n ({ width = 10, height = 5, className, style, ...props }, ref) => {\r\n const { side } = React.useContext(ContentContext);\r\n\r\n // Get arrow positioning based on side\r\n const getArrowPosition = (): React.CSSProperties => {\r\n const base: React.CSSProperties = {\r\n position: \"absolute\",\r\n width,\r\n height,\r\n backgroundColor: \"#ffffff\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRight: \"none\",\r\n borderBottom: \"none\",\r\n };\r\n\r\n switch (side) {\r\n case \"bottom\":\r\n return {\r\n ...base,\r\n top: -height / 2 - 1,\r\n left: \"50%\",\r\n transform: \"translateX(-50%) rotate(45deg)\",\r\n };\r\n case \"top\":\r\n return {\r\n ...base,\r\n bottom: -height / 2 - 1,\r\n left: \"50%\",\r\n transform: \"translateX(-50%) rotate(-135deg)\",\r\n };\r\n case \"left\":\r\n return {\r\n ...base,\r\n right: -height / 2 - 1,\r\n top: \"50%\",\r\n transform: \"translateY(-50%) rotate(135deg)\",\r\n };\r\n case \"right\":\r\n return {\r\n ...base,\r\n left: -height / 2 - 1,\r\n top: \"50%\",\r\n transform: \"translateY(-50%) rotate(-45deg)\",\r\n };\r\n default:\r\n return base;\r\n }\r\n };\r\n\r\n const arrowStyle: React.CSSProperties = {\r\n ...getArrowPosition(),\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"popover-arrow\"\r\n className={className}\r\n style={arrowStyle}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nPopoverArrow.displayName = \"PopoverArrow\";\r\n\r\nexport { Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger };\r\n","import * as React from \"react\";\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\r\n\r\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<\r\n typeof SeparatorPrimitive.Root\r\n> {}\r\n\r\n/**\r\n * Unstyled Separator component wrapping Radix Separator primitive.\r\n * Use data-orientation for styling horizontal/vertical variants.\r\n * @example\r\n * <Separator orientation=\"horizontal\" />\r\n * <Separator orientation=\"vertical\" decorative={false} />\r\n */\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n SeparatorProps\r\n>(\r\n (\r\n { orientation = \"horizontal\", decorative = true, className, ...props },\r\n ref,\r\n ) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n data-slot=\"separator\"\r\n decorative={decorative}\r\n orientation={orientation}\r\n data-orientation={orientation}\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nSeparator.displayName = \"Separator\";\r\n\r\nexport { Separator };\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Sidebar Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface SidebarContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n collapsed: boolean;\r\n onCollapsedChange: (collapsed: boolean) => void;\r\n side: \"left\" | \"right\";\r\n variant: \"sidebar\" | \"floating\" | \"inset\";\r\n isMobile: boolean;\r\n}\r\n\r\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"Sidebar components must be used within a SidebarProvider\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarProvider\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarProviderProps {\r\n /** Controlled open state (for mobile sheet) */\r\n open?: boolean;\r\n /** Default open state */\r\n defaultOpen?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Controlled collapsed state (for desktop) */\r\n collapsed?: boolean;\r\n /** Default collapsed state */\r\n defaultCollapsed?: boolean;\r\n /** Callback when collapsed state changes */\r\n onCollapsedChange?: (collapsed: boolean) => void;\r\n /** Which side the sidebar is on */\r\n side?: \"left\" | \"right\";\r\n /** Sidebar variant */\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n /** Mobile breakpoint in pixels */\r\n mobileBreakpoint?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Provider for sidebar state.\r\n * @example\r\n * <SidebarProvider>\r\n * <Sidebar>...</Sidebar>\r\n * <SidebarInset>...</SidebarInset>\r\n * </SidebarProvider>\r\n */\r\nconst SidebarProvider: React.FC<SidebarProviderProps> = ({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n collapsed: controlledCollapsed,\r\n defaultCollapsed = false,\r\n onCollapsedChange,\r\n side = \"left\",\r\n variant = \"sidebar\",\r\n mobileBreakpoint = 768,\r\n children,\r\n}) => {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n const [uncontrolledCollapsed, setUncontrolledCollapsed] =\r\n React.useState(defaultCollapsed);\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n\r\n const isOpenControlled = controlledOpen !== undefined;\r\n const open = isOpenControlled ? controlledOpen : uncontrolledOpen;\r\n\r\n const isCollapsedControlled = controlledCollapsed !== undefined;\r\n const collapsed = isCollapsedControlled\r\n ? controlledCollapsed\r\n : uncontrolledCollapsed;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isOpenControlled) {\r\n setUncontrolledOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n },\r\n [isOpenControlled, onOpenChange],\r\n );\r\n\r\n const handleCollapsedChange = React.useCallback(\r\n (newCollapsed: boolean) => {\r\n if (!isCollapsedControlled) {\r\n setUncontrolledCollapsed(newCollapsed);\r\n }\r\n onCollapsedChange?.(newCollapsed);\r\n },\r\n [isCollapsedControlled, onCollapsedChange],\r\n );\r\n\r\n React.useEffect(() => {\r\n const handleResize = () => {\r\n setIsMobile(window.innerWidth < mobileBreakpoint);\r\n };\r\n handleResize();\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [mobileBreakpoint]);\r\n\r\n return (\r\n <SidebarContext.Provider\r\n value={{\r\n open,\r\n onOpenChange: handleOpenChange,\r\n collapsed,\r\n onCollapsedChange: handleCollapsedChange,\r\n side,\r\n variant,\r\n isMobile,\r\n }}\r\n >\r\n {children}\r\n </SidebarContext.Provider>\r\n );\r\n};\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Sidebar\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\r\n /** Width when expanded */\r\n width?: number;\r\n /** Width when collapsed */\r\n collapsedWidth?: number;\r\n}\r\n\r\n/**\r\n * Main sidebar container.\r\n */\r\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\r\n ({ width = 256, collapsedWidth = 64, style, children, ...props }, ref) => {\r\n const { open, onOpenChange, collapsed, side, variant, isMobile } =\r\n useSidebar();\r\n\r\n // Mobile: render as sheet/overlay\r\n if (isMobile) {\r\n if (!open) return null;\r\n\r\n return ReactDOM.createPortal(\r\n <>\r\n <div\r\n data-slot=\"sidebar-overlay\"\r\n data-state=\"open\"\r\n onClick={() => onOpenChange(false)}\r\n />\r\n <aside\r\n ref={ref}\r\n data-slot=\"sidebar\"\r\n data-side={side}\r\n data-mobile=\"true\"\r\n data-state=\"open\"\r\n style={style}\r\n {...props}\r\n >\r\n {children}\r\n </aside>\r\n </>,\r\n document.body,\r\n );\r\n }\r\n\r\n // Desktop: render as sidebar\r\n const sidebarWidth = collapsed ? collapsedWidth : width;\r\n\r\n return (\r\n <aside\r\n ref={ref}\r\n data-slot=\"sidebar\"\r\n data-side={side}\r\n data-collapsed={collapsed || undefined}\r\n data-variant={variant}\r\n style={{ width: sidebarWidth, minWidth: sidebarWidth, ...style }}\r\n {...props}\r\n >\r\n {children}\r\n </aside>\r\n );\r\n },\r\n);\r\nSidebar.displayName = \"Sidebar\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarHeader\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Header section of the sidebar.\r\n */\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(\r\n ({ style, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"sidebar-header\" style={style} {...props}>\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Scrollable content section of the sidebar.\r\n */\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\r\n ({ style, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"sidebar-content\" style={style} {...props}>\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarFooter\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Footer section of the sidebar.\r\n */\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(\r\n ({ style, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"sidebar-footer\" style={style} {...props}>\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarGroup\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarGroupProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Group of sidebar items.\r\n */\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(\r\n ({ style, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"sidebar-group\" style={style} {...props}>\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarGroupLabel\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Label for a sidebar group.\r\n */\r\nconst SidebarGroupLabel = React.forwardRef<\r\n HTMLDivElement,\r\n SidebarGroupLabelProps\r\n>(({ style, children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-slot=\"sidebar-group-label\" style={style} {...props}>\r\n {children}\r\n </div>\r\n );\r\n});\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarMenuItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Whether this item is active */\r\n active?: boolean;\r\n /** Icon to display */\r\n icon?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Interactive menu item in the sidebar.\r\n */\r\nconst SidebarMenuItem = React.forwardRef<\r\n HTMLButtonElement,\r\n SidebarMenuItemProps\r\n>(({ active, icon, disabled, style, children, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"sidebar-menu-item\"\r\n data-active={active || undefined}\r\n data-disabled={disabled || undefined}\r\n disabled={disabled}\r\n style={style}\r\n {...props}\r\n >\r\n {icon && <span data-slot=\"sidebar-menu-item-icon\">{icon}</span>}\r\n <span data-slot=\"sidebar-menu-item-content\">{children}</span>\r\n </button>\r\n );\r\n});\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\n/**\r\n * Button to toggle the sidebar (open on mobile, collapse on desktop).\r\n */\r\nconst SidebarTrigger = React.forwardRef<HTMLButtonElement, SidebarTriggerProps>(\r\n ({ style, children, ...props }, ref) => {\r\n const { open, onOpenChange, collapsed, onCollapsedChange, isMobile } =\r\n useSidebar();\r\n\r\n const handleClick = () => {\r\n if (isMobile) {\r\n onOpenChange(!open);\r\n } else {\r\n onCollapsedChange(!collapsed);\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"sidebar-trigger\"\r\n onClick={handleClick}\r\n style={style}\r\n {...props}\r\n >\r\n {children || (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={2}\r\n >\r\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\r\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\r\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\r\n </svg>\r\n )}\r\n </button>\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SidebarInset\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface SidebarInsetProps extends React.HTMLAttributes<HTMLElement> {}\r\n\r\n/**\r\n * Main content area next to the sidebar.\r\n */\r\nconst SidebarInset = React.forwardRef<HTMLElement, SidebarInsetProps>(\r\n ({ style, children, ...props }, ref) => {\r\n return (\r\n <main ref={ref} data-slot=\"sidebar-inset\" style={style} {...props}>\r\n {children}\r\n </main>\r\n );\r\n },\r\n);\r\nSidebarInset.displayName = \"SidebarInset\";\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInset,\r\n SidebarMenuItem,\r\n SidebarProvider,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport type SliderOrientation = \"horizontal\" | \"vertical\";\r\n\r\nexport interface SliderProps\r\n extends Omit<\r\n React.HTMLAttributes<HTMLDivElement>,\r\n \"onChange\" | \"defaultValue\"\r\n > {\r\n /** Current value (controlled) */\r\n value?: number[];\r\n /** Default value (uncontrolled) */\r\n defaultValue?: number[];\r\n /** Minimum value */\r\n min?: number;\r\n /** Maximum value */\r\n max?: number;\r\n /** Step increment */\r\n step?: number;\r\n /** Orientation of the slider */\r\n orientation?: SliderOrientation;\r\n /** Whether the slider is disabled */\r\n disabled?: boolean;\r\n /** Show value label on thumb */\r\n showValue?: boolean;\r\n /** Format for the value label: 'value' shows the number, 'percent' shows percentage */\r\n valueFormat?: \"value\" | \"percent\";\r\n /** Callback when value changes */\r\n onValueChange?: (value: number[]) => void;\r\n /** Callback when value commit (on pointer up) */\r\n onValueCommit?: (value: number[]) => void;\r\n}\r\n\r\n/**\r\n * Slider component with default styles built-in.\r\n * Use className or data attributes for custom styling.\r\n * @example\r\n * <Slider defaultValue={[50]} max={100} step={1} />\r\n * <Slider value={[25, 75]} onValueChange={setValue} showValue />\r\n * <Slider defaultValue={[50]} showValue valueFormat=\"percent\" />\r\n */\r\nconst Slider = React.forwardRef<HTMLDivElement, SliderProps>(\r\n (\r\n {\r\n value,\r\n defaultValue = [0],\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n orientation = \"horizontal\",\r\n disabled = false,\r\n showValue = false,\r\n valueFormat = \"value\",\r\n onValueChange,\r\n onValueCommit,\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [internalValue, setInternalValue] = React.useState(defaultValue);\r\n const currentValue = value ?? internalValue;\r\n const trackRef = React.useRef<HTMLDivElement>(null);\r\n const isDragging = React.useRef<number | null>(null);\r\n\r\n const clamp = (val: number) => Math.min(Math.max(val, min), max);\r\n\r\n const getValueFromPosition = React.useCallback(\r\n (clientX: number, clientY: number) => {\r\n if (!trackRef.current) return currentValue[0];\r\n const rect = trackRef.current.getBoundingClientRect();\r\n\r\n let percent: number;\r\n if (orientation === \"horizontal\") {\r\n percent = (clientX - rect.left) / rect.width;\r\n } else {\r\n percent = 1 - (clientY - rect.top) / rect.height;\r\n }\r\n\r\n const rawValue = min + percent * (max - min);\r\n const steppedValue = Math.round(rawValue / step) * step;\r\n return clamp(steppedValue);\r\n },\r\n [orientation, min, max, step, currentValue],\r\n );\r\n\r\n const updateValue = React.useCallback(\r\n (newVal: number, thumbIndex: number) => {\r\n const newValues = [...currentValue];\r\n newValues[thumbIndex] = newVal;\r\n newValues.sort((a, b) => a - b);\r\n\r\n if (value === undefined) {\r\n setInternalValue(newValues);\r\n }\r\n onValueChange?.(newValues);\r\n },\r\n [currentValue, value, onValueChange],\r\n );\r\n\r\n const handlePointerDown = (e: React.PointerEvent, thumbIndex: number) => {\r\n if (disabled) return;\r\n e.preventDefault();\r\n isDragging.current = thumbIndex;\r\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\r\n };\r\n\r\n const handlePointerMove = (e: React.PointerEvent) => {\r\n if (isDragging.current === null || disabled) return;\r\n const newVal = getValueFromPosition(e.clientX, e.clientY);\r\n updateValue(newVal, isDragging.current);\r\n };\r\n\r\n const handlePointerUp = () => {\r\n if (isDragging.current !== null) {\r\n onValueCommit?.(currentValue);\r\n isDragging.current = null;\r\n }\r\n };\r\n\r\n const handleTrackClick = (e: React.PointerEvent) => {\r\n if (disabled) return;\r\n const newVal = getValueFromPosition(e.clientX, e.clientY);\r\n let closestIndex = 0;\r\n let closestDist = Math.abs(currentValue[0] - newVal);\r\n currentValue.forEach((v, i) => {\r\n const dist = Math.abs(v - newVal);\r\n if (dist < closestDist) {\r\n closestDist = dist;\r\n closestIndex = i;\r\n }\r\n });\r\n updateValue(newVal, closestIndex);\r\n const newValues = [...currentValue];\r\n newValues[closestIndex] = newVal;\r\n newValues.sort((a, b) => a - b);\r\n onValueCommit?.(newValues);\r\n };\r\n\r\n const getPercentage = (val: number) => ((val - min) / (max - min)) * 100;\r\n\r\n const formatValue = (val: number) => {\r\n if (valueFormat === \"percent\") {\r\n return `${Math.round(getPercentage(val))}%`;\r\n }\r\n return String(val);\r\n };\r\n\r\n // Default styles with colors\r\n const rootStyle: React.CSSProperties =\r\n orientation === \"horizontal\"\r\n ? {\r\n position: \"relative\",\r\n display: \"flex\",\r\n width: \"100%\",\r\n height: showValue ? 5 : 0,\r\n paddingTop: showValue ? 5 : 0,\r\n touchAction: \"none\",\r\n userSelect: \"none\",\r\n alignItems: \"center\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? 0.5 : 1,\r\n ...style,\r\n }\r\n : {\r\n position: \"relative\",\r\n display: \"flex\",\r\n width: showValue ? 40 : 20,\r\n paddingLeft: showValue ? 20 : 0,\r\n height: \"100%\",\r\n touchAction: \"none\",\r\n userSelect: \"none\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? 0.5 : 1,\r\n ...style,\r\n };\r\n\r\n const trackStyle: React.CSSProperties =\r\n orientation === \"horizontal\"\r\n ? {\r\n position: \"relative\",\r\n flexGrow: 1,\r\n height: 6,\r\n borderRadius: 9999,\r\n background: \"rgba(0, 0, 0, 0.1)\",\r\n overflow: \"hidden\",\r\n }\r\n : {\r\n position: \"relative\",\r\n flexGrow: 1,\r\n width: 6,\r\n borderRadius: 9999,\r\n background: \"rgba(0, 0, 0, 0.1)\",\r\n overflow: \"hidden\",\r\n };\r\n\r\n // For single value slider, range goes from min to value\r\n // For range slider (2 values), range goes from first to second value\r\n const rangeStart =\r\n currentValue.length === 1 ? 0 : getPercentage(Math.min(...currentValue));\r\n const rangeEnd = getPercentage(Math.max(...currentValue));\r\n\r\n const rangeStyle: React.CSSProperties =\r\n orientation === \"horizontal\"\r\n ? {\r\n position: \"absolute\",\r\n height: \"100%\",\r\n borderRadius: 9999,\r\n background: \"#0f172a\",\r\n left: `${rangeStart}%`,\r\n width: `${rangeEnd - rangeStart}%`,\r\n }\r\n : {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n borderRadius: 9999,\r\n background: \"#0f172a\",\r\n bottom: `${rangeStart}%`,\r\n height: `${rangeEnd - rangeStart}%`,\r\n };\r\n\r\n const getThumbStyle = (val: number): React.CSSProperties => {\r\n const baseThumbStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n display: \"block\",\r\n width: 20,\r\n height: 20,\r\n borderRadius: 9999,\r\n border: \"2px solid #0f172a\",\r\n backgroundColor: \"#ffffff\",\r\n cursor: disabled ? \"not-allowed\" : \"grab\",\r\n transform: \"translate(-50%, -50%)\",\r\n transition: \"box-shadow 0.2s ease\",\r\n outline: \"none\",\r\n };\r\n\r\n return orientation === \"horizontal\"\r\n ? {\r\n ...baseThumbStyle,\r\n left: `${getPercentage(val)}%`,\r\n top: \"50%\",\r\n }\r\n : {\r\n ...baseThumbStyle,\r\n bottom: `${getPercentage(val)}%`,\r\n left: \"50%\",\r\n transform: \"translate(-50%, 50%)\",\r\n };\r\n };\r\n\r\n const getValueLabelStyle = (val: number): React.CSSProperties => {\r\n const baseLabelStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n fontSize: 12,\r\n fontWeight: 500,\r\n color: \"#18181b\",\r\n whiteSpace: \"nowrap\",\r\n };\r\n\r\n return orientation === \"horizontal\"\r\n ? {\r\n ...baseLabelStyle,\r\n left: `${getPercentage(val)}%`,\r\n top: -24,\r\n transform: \"translateX(-50%)\",\r\n }\r\n : {\r\n ...baseLabelStyle,\r\n bottom: `${getPercentage(val)}%`,\r\n left: -32,\r\n transform: \"translateY(50%)\",\r\n };\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"slider\"\r\n data-orientation={orientation}\r\n data-disabled={disabled || undefined}\r\n className={className}\r\n style={rootStyle}\r\n onPointerMove={handlePointerMove}\r\n onPointerUp={handlePointerUp}\r\n onPointerLeave={handlePointerUp}\r\n {...props}\r\n >\r\n <div\r\n ref={trackRef}\r\n data-slot=\"slider-track\"\r\n data-orientation={orientation}\r\n style={trackStyle}\r\n onPointerDown={handleTrackClick}\r\n >\r\n <div\r\n data-slot=\"slider-range\"\r\n data-orientation={orientation}\r\n style={rangeStyle}\r\n />\r\n </div>\r\n {currentValue.map((val, index) => (\r\n <React.Fragment key={index}>\r\n {showValue && (\r\n <div\r\n data-slot=\"slider-value-label\"\r\n style={getValueLabelStyle(val)}\r\n >\r\n {formatValue(val)}\r\n </div>\r\n )}\r\n <div\r\n data-slot=\"slider-thumb\"\r\n data-orientation={orientation}\r\n data-disabled={disabled || undefined}\r\n style={getThumbStyle(val)}\r\n onPointerDown={(e) => handlePointerDown(e, index)}\r\n tabIndex={disabled ? -1 : 0}\r\n role=\"slider\"\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={val}\r\n aria-disabled={disabled}\r\n aria-orientation={orientation}\r\n />\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n },\r\n);\r\nSlider.displayName = \"Slider\";\r\n\r\nexport { Slider };\r\n","import * as React from \"react\";\r\n\r\nexport interface SwitchProps\r\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\r\n /** Whether the switch is checked (controlled) */\r\n checked?: boolean;\r\n /** Default checked state (uncontrolled) */\r\n defaultChecked?: boolean;\r\n /** Callback when checked state changes */\r\n onCheckedChange?: (checked: boolean) => void;\r\n /** Whether the switch is disabled */\r\n disabled?: boolean;\r\n /** Whether the switch is required */\r\n required?: boolean;\r\n /** Name for form submission */\r\n name?: string;\r\n /** Value for form submission */\r\n value?: string;\r\n /** Custom style for the thumb element */\r\n thumbStyle?: React.CSSProperties;\r\n /** Custom className for the thumb element */\r\n thumbClassName?: string;\r\n}\r\n\r\n/**\r\n * Switch component for toggling between on/off states.\r\n * Use data-state for styling (checked/unchecked).\r\n * @example\r\n * <Switch />\r\n * <Switch checked={isOn} onCheckedChange={setIsOn} />\r\n * <Switch defaultChecked disabled />\r\n */\r\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\r\n (\r\n {\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onCheckedChange,\r\n disabled = false,\r\n required,\r\n name,\r\n value = \"on\",\r\n className,\r\n style,\r\n thumbStyle,\r\n thumbClassName,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledChecked, setUncontrolledChecked] =\r\n React.useState(defaultChecked);\r\n\r\n const isControlled = controlledChecked !== undefined;\r\n const checked = isControlled ? controlledChecked : uncontrolledChecked;\r\n\r\n const handleClick = () => {\r\n if (disabled) return;\r\n\r\n const newChecked = !checked;\r\n if (!isControlled) {\r\n setUncontrolledChecked(newChecked);\r\n }\r\n onCheckedChange?.(newChecked);\r\n };\r\n\r\n // Default styles (can be overridden by theme CSS via data-slot selectors)\r\n const defaultSwitchStyle: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n width: 44,\r\n height: 24,\r\n padding: 2,\r\n borderRadius: 9999,\r\n border: \"none\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? 0.5 : 1,\r\n backgroundColor: checked ? \"#18181b\" : \"#d4d4d8\",\r\n transition: \"background-color 0.2s ease\",\r\n ...style,\r\n };\r\n\r\n const defaultThumbStyle: React.CSSProperties = {\r\n display: \"block\",\r\n width: 20,\r\n height: 20,\r\n borderRadius: 9999,\r\n backgroundColor: \"#ffffff\",\r\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.2)\",\r\n transition: \"transform 0.2s ease\",\r\n transform: checked ? \"translateX(20px)\" : \"translateX(0)\",\r\n ...thumbStyle,\r\n };\r\n\r\n return (\r\n <>\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n aria-required={required}\r\n data-slot=\"switch\"\r\n data-state={checked ? \"checked\" : \"unchecked\"}\r\n data-disabled={disabled || undefined}\r\n disabled={disabled}\r\n className={className}\r\n style={defaultSwitchStyle}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <span\r\n data-slot=\"switch-thumb\"\r\n data-state={checked ? \"checked\" : \"unchecked\"}\r\n className={thumbClassName}\r\n style={defaultThumbStyle}\r\n />\r\n </button>\r\n {name && (\r\n <input type=\"hidden\" name={name} value={checked ? value : \"\"} />\r\n )}\r\n </>\r\n );\r\n },\r\n);\r\nSwitch.displayName = \"Switch\";\r\n\r\nexport { Switch };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Tabs Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface TabsContextValue {\r\n value: string | undefined;\r\n onValueChange: (value: string) => void;\r\n orientation: \"horizontal\" | \"vertical\";\r\n activationMode: \"automatic\" | \"manual\";\r\n registerTrigger: (value: string, element: HTMLButtonElement | null) => void;\r\n getIndicatorStyle: () => React.CSSProperties;\r\n}\r\n\r\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\r\n\r\nfunction useTabsContext() {\r\n const context = React.useContext(TabsContext);\r\n if (!context) {\r\n throw new Error(\"Tabs components must be used within a Tabs\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Tabs\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Controlled value */\r\n value?: string;\r\n /** Default value for uncontrolled usage */\r\n defaultValue?: string;\r\n /** Callback when value changes */\r\n onValueChange?: (value: string) => void;\r\n /** Orientation of tabs */\r\n orientation?: \"horizontal\" | \"vertical\";\r\n /** How tabs are activated - automatic (on focus) or manual (on click) */\r\n activationMode?: \"automatic\" | \"manual\";\r\n}\r\n\r\n/**\r\n * Tabs component for organizing content.\r\n * @example\r\n * <Tabs defaultValue=\"tab1\">\r\n * <TabsList>\r\n * <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\r\n * <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\r\n * </TabsList>\r\n * <TabsContent value=\"tab1\">Content 1</TabsContent>\r\n * <TabsContent value=\"tab2\">Content 2</TabsContent>\r\n * </Tabs>\r\n */\r\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\r\n (\r\n {\r\n value: controlledValue,\r\n defaultValue,\r\n onValueChange,\r\n orientation = \"horizontal\",\r\n activationMode = \"automatic\",\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\r\n string | undefined\r\n >(defaultValue);\r\n const triggersRef = React.useRef<Map<string, HTMLButtonElement>>(new Map());\r\n const [indicatorStyle, setIndicatorStyle] =\r\n React.useState<React.CSSProperties>({});\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: string) => {\r\n if (!isControlled) {\r\n setUncontrolledValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n },\r\n [isControlled, onValueChange],\r\n );\r\n\r\n const registerTrigger = React.useCallback(\r\n (triggerValue: string, element: HTMLButtonElement | null) => {\r\n if (element) {\r\n triggersRef.current.set(triggerValue, element);\r\n } else {\r\n triggersRef.current.delete(triggerValue);\r\n }\r\n },\r\n [],\r\n );\r\n\r\n const updateIndicator = React.useCallback(() => {\r\n if (value && triggersRef.current.has(value)) {\r\n const trigger = triggersRef.current.get(value);\r\n if (trigger) {\r\n const rect = trigger.getBoundingClientRect();\r\n const parentRect = trigger.parentElement?.getBoundingClientRect();\r\n if (parentRect) {\r\n if (orientation === \"horizontal\") {\r\n setIndicatorStyle({\r\n width: rect.width,\r\n transform: `translateX(${rect.left - parentRect.left}px)`,\r\n });\r\n } else {\r\n setIndicatorStyle({\r\n height: rect.height,\r\n transform: `translateY(${rect.top - parentRect.top}px)`,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }, [value, orientation]);\r\n\r\n React.useLayoutEffect(() => {\r\n updateIndicator();\r\n }, [updateIndicator, value]);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", updateIndicator);\r\n return () => window.removeEventListener(\"resize\", updateIndicator);\r\n }, [updateIndicator]);\r\n\r\n const getIndicatorStyle = React.useCallback(\r\n () => indicatorStyle,\r\n [indicatorStyle],\r\n );\r\n\r\n const tabsStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n flexDirection: orientation === \"vertical\" ? \"row\" : \"column\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <TabsContext.Provider\r\n value={{\r\n value,\r\n onValueChange: handleValueChange,\r\n orientation,\r\n activationMode,\r\n registerTrigger,\r\n getIndicatorStyle,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"tabs\"\r\n data-orientation={orientation}\r\n style={tabsStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n },\r\n);\r\nTabs.displayName = \"Tabs\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TabsList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Container for tab triggers with animated indicator.\r\n */\r\nconst TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\r\n ({ className, style, children, ...props }, ref) => {\r\n const { orientation, getIndicatorStyle } = useTabsContext();\r\n const indicatorStyle = getIndicatorStyle();\r\n\r\n const listStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderRadius: 6,\r\n backgroundColor: \"#f4f4f5\",\r\n padding: 4,\r\n color: \"#71717a\",\r\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\r\n ...style,\r\n };\r\n\r\n const baseIndicatorStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n borderRadius: 4,\r\n backgroundColor: \"#ffffff\",\r\n boxShadow: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\r\n transition: \"all 0.3s ease-in-out\",\r\n ...(orientation === \"horizontal\"\r\n ? {\r\n bottom: 4,\r\n left: 0,\r\n height: \"calc(100% - 8px)\",\r\n ...indicatorStyle,\r\n }\r\n : {\r\n right: 4,\r\n top: 0,\r\n width: \"calc(100% - 8px)\",\r\n ...indicatorStyle,\r\n }),\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tablist\"\r\n data-slot=\"tabs-list\"\r\n aria-orientation={orientation}\r\n data-orientation={orientation}\r\n className={className}\r\n style={listStyle}\r\n {...props}\r\n >\r\n {children}\r\n <span data-slot=\"tabs-indicator\" style={baseIndicatorStyle} />\r\n </div>\r\n );\r\n },\r\n);\r\nTabsList.displayName = \"TabsList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TabsTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TabsTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Value that associates this trigger with a content panel */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Button that activates a tab panel.\r\n */\r\nconst TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\r\n ({ value, disabled, className, style, children, ...props }, ref) => {\r\n const {\r\n value: selectedValue,\r\n onValueChange,\r\n activationMode,\r\n registerTrigger,\r\n } = useTabsContext();\r\n const isSelected = selectedValue === value;\r\n const triggerRef = React.useRef<HTMLButtonElement>(null);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLButtonElement | null) => {\r\n triggerRef.current = node;\r\n registerTrigger(value, node);\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, registerTrigger, value],\r\n );\r\n\r\n const handleClick = () => {\r\n if (!disabled) {\r\n onValueChange(value);\r\n }\r\n };\r\n\r\n const handleFocus = () => {\r\n if (activationMode === \"automatic\" && !disabled) {\r\n onValueChange(value);\r\n }\r\n };\r\n\r\n const triggerStyle: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n whiteSpace: \"nowrap\",\r\n borderRadius: 4,\r\n padding: \"6px 12px\",\r\n fontSize: 14,\r\n fontWeight: 500,\r\n backgroundColor: isSelected ? \"#ffffff\" : \"transparent\",\r\n color: isSelected ? \"#18181b\" : \"#71717a\",\r\n boxShadow: isSelected ? \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\" : \"none\",\r\n border: \"none\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? 0.5 : 1,\r\n transition: \"all 0.2s ease\",\r\n position: \"relative\",\r\n zIndex: isSelected ? 1 : 0,\r\n ...style,\r\n };\r\n\r\n return (\r\n <button\r\n ref={mergedRef}\r\n type=\"button\"\r\n role=\"tab\"\r\n data-slot=\"tabs-trigger\"\r\n aria-selected={isSelected}\r\n data-state={isSelected ? \"active\" : \"inactive\"}\r\n data-disabled={disabled || undefined}\r\n disabled={disabled}\r\n tabIndex={isSelected ? 0 : -1}\r\n className={className}\r\n style={triggerStyle}\r\n onClick={handleClick}\r\n onFocus={handleFocus}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n },\r\n);\r\nTabsTrigger.displayName = \"TabsTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TabsContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Value that associates this content with a trigger */\r\n value: string;\r\n /** Force mount the content even when not active */\r\n forceMount?: boolean;\r\n}\r\n\r\n/**\r\n * Content panel for a tab.\r\n */\r\nconst TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\r\n (\r\n { value, forceMount = false, className, style, children, ...props },\r\n ref,\r\n ) => {\r\n const { value: selectedValue, orientation } = useTabsContext();\r\n const isSelected = selectedValue === value;\r\n const [shouldRender, setShouldRender] = React.useState(isSelected);\r\n\r\n React.useEffect(() => {\r\n if (isSelected) {\r\n setShouldRender(true);\r\n } else if (!forceMount) {\r\n const timer = setTimeout(() => setShouldRender(false), 200);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [isSelected, forceMount]);\r\n\r\n if (!shouldRender && !forceMount) {\r\n return null;\r\n }\r\n\r\n const contentStyle: React.CSSProperties = {\r\n marginTop: orientation === \"vertical\" ? 0 : 8,\r\n marginLeft: orientation === \"vertical\" ? 8 : 0,\r\n outline: \"none\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tabpanel\"\r\n data-slot=\"tabs-content\"\r\n data-state={isSelected ? \"active\" : \"inactive\"}\r\n data-orientation={orientation}\r\n tabIndex={0}\r\n hidden={!isSelected}\r\n className={className}\r\n style={contentStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nTabsContent.displayName = \"TabsContent\";\r\n\r\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\r\n","import * as React from \"react\";\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\r\n\r\nexport type ToggleVariant = \"default\" | \"outline\";\r\nexport type ToggleSize = \"default\" | \"sm\" | \"lg\";\r\n\r\nexport interface ToggleProps extends React.ComponentPropsWithoutRef<\r\n typeof TogglePrimitive.Root\r\n> {\r\n /** Visual style variant */\r\n variant?: ToggleVariant;\r\n /** Size preset */\r\n size?: ToggleSize;\r\n}\r\n\r\n/**\r\n * Unstyled Toggle component wrapping Radix Toggle primitive.\r\n * Radix adds data-state=\"on\"/\"off\" automatically.\r\n * Use data-variant and data-size for styling hooks.\r\n * @example\r\n * <Toggle aria-label=\"Bold\">B</Toggle>\r\n * <Toggle variant=\"outline\" pressed>Active</Toggle>\r\n */\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n ToggleProps\r\n>(({ variant = \"default\", size = \"default\", className, ...props }, ref) => (\r\n <TogglePrimitive.Root\r\n ref={ref}\r\n data-slot=\"toggle\"\r\n data-variant={variant}\r\n data-size={size}\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nToggle.displayName = \"Toggle\";\r\n\r\nexport { Toggle };\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Tooltip Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface TooltipContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n triggerRef: React.RefObject<HTMLElement | null>;\r\n contentId: string;\r\n delayDuration: number;\r\n}\r\n\r\nconst TooltipContext = React.createContext<TooltipContextValue | null>(null);\r\n\r\nfunction useTooltipContext() {\r\n const context = React.useContext(TooltipContext);\r\n if (!context) {\r\n throw new Error(\"Tooltip components must be used within a Tooltip\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TooltipProvider\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TooltipProviderProps {\r\n /** Delay duration in ms before tooltip shows (default: 700) */\r\n delayDuration?: number;\r\n /** Skip the delay when opening after having been open */\r\n skipDelayDuration?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface TooltipProviderContextValue {\r\n delayDuration: number;\r\n skipDelayDuration: number;\r\n}\r\n\r\nconst TooltipProviderContext = React.createContext<TooltipProviderContextValue>(\r\n {\r\n delayDuration: 700,\r\n skipDelayDuration: 300,\r\n },\r\n);\r\n\r\n/**\r\n * Wraps your app to provide global tooltip settings.\r\n */\r\nconst TooltipProvider: React.FC<TooltipProviderProps> = ({\r\n delayDuration = 700,\r\n skipDelayDuration = 300,\r\n children,\r\n}) => {\r\n return (\r\n <TooltipProviderContext.Provider\r\n value={{ delayDuration, skipDelayDuration }}\r\n >\r\n {children}\r\n </TooltipProviderContext.Provider>\r\n );\r\n};\r\nTooltipProvider.displayName = \"TooltipProvider\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Tooltip (Root)\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\r\nexport type TooltipAlign = \"start\" | \"center\" | \"end\";\r\n\r\nexport interface TooltipProps {\r\n /** Controlled open state */\r\n open?: boolean;\r\n /** Default open state for uncontrolled usage */\r\n defaultOpen?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Delay in ms before tooltip shows (default: 700) */\r\n delayDuration?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Tooltip component that shows content on hover.\r\n * @example\r\n * <Tooltip>\r\n * <TooltipTrigger>Hover me</TooltipTrigger>\r\n * <TooltipContent>Tooltip text</TooltipContent>\r\n * </Tooltip>\r\n */\r\nconst Tooltip: React.FC<TooltipProps> = ({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n delayDuration: propDelayDuration,\r\n children,\r\n}) => {\r\n const providerContext = React.useContext(TooltipProviderContext);\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n const triggerRef = React.useRef<HTMLElement>(null);\r\n const contentId = React.useId();\r\n\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : uncontrolledOpen;\r\n const delayDuration = propDelayDuration ?? providerContext.delayDuration;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n },\r\n [isControlled, onOpenChange],\r\n );\r\n\r\n return (\r\n <TooltipContext.Provider\r\n value={{\r\n open,\r\n onOpenChange: handleOpenChange,\r\n triggerRef,\r\n contentId,\r\n delayDuration,\r\n }}\r\n >\r\n {children}\r\n </TooltipContext.Provider>\r\n );\r\n};\r\nTooltip.displayName = \"Tooltip\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TooltipTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TooltipTriggerProps\r\n extends React.HTMLAttributes<HTMLSpanElement> {\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Element that triggers the tooltip on hover.\r\n */\r\nconst TooltipTrigger = React.forwardRef<HTMLSpanElement, TooltipTriggerProps>(\r\n (\r\n { children, onMouseEnter, onMouseLeave, onFocus, onBlur, ...props },\r\n ref,\r\n ) => {\r\n const { open, onOpenChange, triggerRef, contentId, delayDuration } =\r\n useTooltipContext();\r\n const openTimerRef = React.useRef<number | undefined>(undefined);\r\n const closeTimerRef = React.useRef<number | undefined>(undefined);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLSpanElement | null) => {\r\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current =\r\n node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref, triggerRef],\r\n );\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLSpanElement>) => {\r\n if (closeTimerRef.current) {\r\n clearTimeout(closeTimerRef.current);\r\n closeTimerRef.current = undefined;\r\n }\r\n openTimerRef.current = window.setTimeout(() => {\r\n onOpenChange(true);\r\n }, delayDuration);\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const handleMouseLeave = (e: React.MouseEvent<HTMLSpanElement>) => {\r\n if (openTimerRef.current) {\r\n clearTimeout(openTimerRef.current);\r\n openTimerRef.current = undefined;\r\n }\r\n closeTimerRef.current = window.setTimeout(() => {\r\n onOpenChange(false);\r\n }, 100);\r\n onMouseLeave?.(e);\r\n };\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLSpanElement>) => {\r\n onOpenChange(true);\r\n onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLSpanElement>) => {\r\n onOpenChange(false);\r\n onBlur?.(e);\r\n };\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n if (openTimerRef.current) clearTimeout(openTimerRef.current);\r\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\r\n };\r\n }, []);\r\n\r\n return (\r\n <span\r\n ref={mergedRef}\r\n aria-describedby={open ? contentId : undefined}\r\n data-state={open ? \"open\" : \"closed\"}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n tabIndex={0}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n );\r\n },\r\n);\r\nTooltipTrigger.displayName = \"TooltipTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TooltipContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TooltipContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Side to position the content */\r\n side?: TooltipSide;\r\n /** Offset from the trigger (default: 4) */\r\n sideOffset?: number;\r\n /** Alignment relative to trigger */\r\n align?: TooltipAlign;\r\n}\r\n\r\n/**\r\n * Content that appears when tooltip is open.\r\n */\r\nconst TooltipContent = React.forwardRef<HTMLDivElement, TooltipContentProps>(\r\n (\r\n {\r\n side = \"top\",\r\n sideOffset = 4,\r\n align = \"center\",\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const { open, triggerRef, contentId } = useTooltipContext();\r\n const contentRef = React.useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = React.useState<{\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n\r\n const mergedRef = React.useCallback(\r\n (node: HTMLDivElement | null) => {\r\n contentRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n // Calculate position\r\n React.useLayoutEffect(() => {\r\n if (!open || !triggerRef.current) {\r\n setPosition(null);\r\n setIsVisible(false);\r\n return;\r\n }\r\n\r\n const updatePosition = () => {\r\n if (!triggerRef.current || !contentRef.current) return;\r\n\r\n const triggerRect = triggerRef.current.getBoundingClientRect();\r\n const contentRect = contentRef.current.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (side) {\r\n case \"top\":\r\n top = triggerRect.top - contentRect.height - sideOffset;\r\n break;\r\n case \"bottom\":\r\n top = triggerRect.bottom + sideOffset;\r\n break;\r\n case \"left\":\r\n left = triggerRect.left - contentRect.width - sideOffset;\r\n break;\r\n case \"right\":\r\n left = triggerRect.right + sideOffset;\r\n break;\r\n }\r\n\r\n if (side === \"top\" || side === \"bottom\") {\r\n switch (align) {\r\n case \"start\":\r\n left = triggerRect.left;\r\n break;\r\n case \"center\":\r\n left =\r\n triggerRect.left +\r\n triggerRect.width / 2 -\r\n contentRect.width / 2;\r\n break;\r\n case \"end\":\r\n left = triggerRect.right - contentRect.width;\r\n break;\r\n }\r\n } else {\r\n switch (align) {\r\n case \"start\":\r\n top = triggerRect.top;\r\n break;\r\n case \"center\":\r\n top =\r\n triggerRect.top +\r\n triggerRect.height / 2 -\r\n contentRect.height / 2;\r\n break;\r\n case \"end\":\r\n top = triggerRect.bottom - contentRect.height;\r\n break;\r\n }\r\n }\r\n\r\n setPosition({ top, left });\r\n // Trigger fade in after position is set\r\n requestAnimationFrame(() => setIsVisible(true));\r\n };\r\n\r\n requestAnimationFrame(updatePosition);\r\n }, [open, side, sideOffset, align, triggerRef]);\r\n\r\n if (!open) return null;\r\n\r\n const contentStyle: React.CSSProperties = {\r\n position: \"fixed\",\r\n top: position?.top ?? -9999,\r\n left: position?.left ?? -9999,\r\n zIndex: 50,\r\n overflow: \"hidden\",\r\n borderRadius: 6,\r\n border: \"1px solid #e5e7eb\",\r\n backgroundColor: \"#18181b\",\r\n padding: \"6px 12px\",\r\n fontSize: 14,\r\n color: \"#ffffff\",\r\n boxShadow:\r\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\r\n transform: isVisible ? \"scale(1)\" : \"scale(0.95)\",\r\n opacity: isVisible ? 1 : 0,\r\n transition: \"transform 0.15s ease, opacity 0.15s ease\",\r\n ...style,\r\n };\r\n\r\n const content = (\r\n <div\r\n ref={mergedRef}\r\n id={contentId}\r\n role=\"tooltip\"\r\n data-slot=\"tooltip-content\"\r\n data-side={side}\r\n data-align={align}\r\n data-state={open ? \"open\" : \"closed\"}\r\n style={contentStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n\r\n if (typeof document !== \"undefined\") {\r\n return ReactDOM.createPortal(content, document.body);\r\n }\r\n\r\n return content;\r\n },\r\n);\r\nTooltipContent.displayName = \"TooltipContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * TooltipArrow\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface TooltipArrowProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Width of the arrow (default: 8) */\r\n width?: number;\r\n /** Height of the arrow (default: 4) */\r\n height?: number;\r\n}\r\n\r\n/**\r\n * Arrow element for the tooltip.\r\n */\r\nconst TooltipArrow = React.forwardRef<HTMLDivElement, TooltipArrowProps>(\r\n ({ width = 8, height = 4, style, ...props }, ref) => {\r\n // Note: For proper arrow positioning, this would need side context\r\n // For now, defaults to top side (arrow points down)\r\n const arrowStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n bottom: -height,\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div ref={ref} data-slot=\"tooltip-arrow\" style={arrowStyle} {...props} />\r\n );\r\n },\r\n);\r\nTooltipArrow.displayName = \"TooltipArrow\";\r\n\r\nexport {\r\n Tooltip,\r\n TooltipArrow,\r\n TooltipContent,\r\n TooltipProvider,\r\n TooltipTrigger,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport type TextareaVariant = \"default\" | \"filled\" | \"outline\" | \"ghost\";\r\nexport type TextareaSize = \"default\" | \"sm\" | \"lg\";\r\n\r\nexport interface TextareaProps\r\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n /** Visual style variant */\r\n variant?: TextareaVariant;\r\n /** Size preset */\r\n size?: TextareaSize;\r\n /** Error state */\r\n error?: boolean;\r\n /** Auto-resize based on content */\r\n autoResize?: boolean;\r\n /** Minimum number of rows (for autoResize) */\r\n minRows?: number;\r\n /** Maximum number of rows (for autoResize) */\r\n maxRows?: number;\r\n /** Show character counter */\r\n showCount?: boolean;\r\n /** Custom counter render function */\r\n counterRender?: (count: number, maxLength?: number) => React.ReactNode;\r\n}\r\n\r\n/**\r\n * Textarea component with variant/size data attributes.\r\n * Supports auto-resize, character counter, and error states.\r\n * @example\r\n * <Textarea placeholder=\"Enter text...\" />\r\n * <Textarea variant=\"filled\" size=\"lg\" />\r\n * <Textarea autoResize minRows={2} maxRows={6} />\r\n * <Textarea showCount maxLength={200} />\r\n * <Textarea error={true} />\r\n */\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n (\r\n {\r\n className,\r\n variant = \"default\",\r\n size = \"default\",\r\n error = false,\r\n autoResize = false,\r\n minRows = 2,\r\n maxRows,\r\n showCount = false,\r\n counterRender,\r\n maxLength,\r\n style,\r\n onChange,\r\n value,\r\n defaultValue,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\r\n const [internalValue, setInternalValue] = React.useState<string>(\r\n (defaultValue as string) ?? \"\",\r\n );\r\n const [isFocused, setIsFocused] = React.useState(false);\r\n\r\n // Get current value for counter\r\n const currentValue = value !== undefined ? String(value) : internalValue;\r\n const currentLength = currentValue.length;\r\n const isOverLimit = maxLength !== undefined && currentLength > maxLength;\r\n\r\n // Merge refs\r\n const mergedRef = React.useCallback(\r\n (node: HTMLTextAreaElement | null) => {\r\n textareaRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n },\r\n [ref],\r\n );\r\n\r\n // Handle auto-resize\r\n const adjustHeight = React.useCallback(() => {\r\n const textarea = textareaRef.current;\r\n if (!textarea || !autoResize) return;\r\n\r\n // Reset height to get correct scrollHeight\r\n textarea.style.height = \"auto\";\r\n\r\n // Calculate line height from computed style\r\n const computedStyle = window.getComputedStyle(textarea);\r\n const lineHeight = parseFloat(computedStyle.lineHeight) || 20;\r\n const paddingTop = parseFloat(computedStyle.paddingTop) || 0;\r\n const paddingBottom = parseFloat(computedStyle.paddingBottom) || 0;\r\n const borderTop = parseFloat(computedStyle.borderTopWidth) || 0;\r\n const borderBottom = parseFloat(computedStyle.borderBottomWidth) || 0;\r\n\r\n const minHeight =\r\n minRows * lineHeight +\r\n paddingTop +\r\n paddingBottom +\r\n borderTop +\r\n borderBottom;\r\n const maxHeight = maxRows\r\n ? maxRows * lineHeight +\r\n paddingTop +\r\n paddingBottom +\r\n borderTop +\r\n borderBottom\r\n : undefined;\r\n\r\n let newHeight = Math.max(textarea.scrollHeight, minHeight);\r\n if (maxHeight) {\r\n newHeight = Math.min(newHeight, maxHeight);\r\n }\r\n\r\n textarea.style.height = `${newHeight}px`;\r\n }, [autoResize, minRows, maxRows]);\r\n\r\n // Adjust height on value change\r\n React.useEffect(() => {\r\n adjustHeight();\r\n }, [value, internalValue, adjustHeight]);\r\n\r\n // Adjust height on mount\r\n React.useEffect(() => {\r\n if (autoResize) {\r\n adjustHeight();\r\n }\r\n }, [autoResize, adjustHeight]);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (value === undefined) {\r\n setInternalValue(event.target.value);\r\n }\r\n onChange?.(event);\r\n };\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\r\n setIsFocused(true);\r\n props.onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\r\n setIsFocused(false);\r\n props.onBlur?.(e);\r\n };\r\n\r\n // Determine border color\r\n const getBorderColor = () => {\r\n if (error || isOverLimit) return \"#ef4444\";\r\n if (isFocused) return \"#3b82f6\";\r\n return \"#d1d5db\";\r\n };\r\n\r\n // Determine box shadow\r\n const getBoxShadow = () => {\r\n if (!isFocused) return \"none\";\r\n if (error || isOverLimit) return \"0 0 0 3px rgba(239, 68, 68, 0.15)\";\r\n return \"0 0 0 3px rgba(59, 130, 246, 0.15)\";\r\n };\r\n\r\n // Default counter render\r\n const defaultCounterRender = (count: number, max?: number) => {\r\n if (max !== undefined) {\r\n return `${count} / ${max}`;\r\n }\r\n return `${count}`;\r\n };\r\n\r\n const renderCounter = counterRender || defaultCounterRender;\r\n\r\n // Default textarea styles\r\n const textareaStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n minHeight: 80,\r\n width: \"100%\",\r\n borderRadius: 6,\r\n border: `1px solid ${getBorderColor()}`,\r\n backgroundColor: \"#ffffff\",\r\n padding: \"8px 12px\",\r\n fontSize: 14,\r\n lineHeight: 1.5,\r\n color: \"#18181b\",\r\n boxShadow: getBoxShadow(),\r\n transition: \"border-color 0.2s ease, box-shadow 0.2s ease\",\r\n outline: \"none\",\r\n // Auto-resize specific\r\n resize: autoResize ? \"none\" : undefined,\r\n overflow: autoResize && maxRows ? \"auto\" : undefined,\r\n // User styles override\r\n ...style,\r\n };\r\n\r\n // Wrapper styles\r\n const wrapperStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n width: \"100%\",\r\n };\r\n\r\n // Counter styles\r\n const counterStyle: React.CSSProperties = {\r\n marginTop: 4,\r\n textAlign: \"right\",\r\n fontSize: 12,\r\n color: error || isOverLimit ? \"#ef4444\" : \"#6b7280\",\r\n transition: \"color 0.2s ease\",\r\n };\r\n\r\n const textarea = (\r\n <textarea\r\n ref={mergedRef}\r\n data-slot=\"textarea\"\r\n data-variant={variant}\r\n data-size={size}\r\n data-error={error || isOverLimit ? \"\" : undefined}\r\n className={className}\r\n style={textareaStyle}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n value={value}\r\n defaultValue={value === undefined ? defaultValue : undefined}\r\n onChange={handleChange}\r\n maxLength={maxLength}\r\n rows={autoResize ? minRows : props.rows}\r\n {...props}\r\n />\r\n );\r\n\r\n if (showCount) {\r\n return (\r\n <div data-slot=\"textarea-wrapper\" style={wrapperStyle}>\r\n {textarea}\r\n <div\r\n data-slot=\"textarea-counter\"\r\n data-error={error || isOverLimit ? \"true\" : undefined}\r\n style={counterStyle}\r\n >\r\n {renderCounter(currentLength, maxLength)}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return textarea;\r\n },\r\n);\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport { Textarea };\r\n","import * as React from \"react\";\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\r\n\r\nexport interface CheckIconProps extends React.SVGAttributes<SVGSVGElement> {\r\n /** Icon size in pixels */\r\n size?: number;\r\n}\r\n\r\n/**\r\n * Inline SVG check icon - no external dependencies.\r\n * @example\r\n * <CheckIcon size={16} />\r\n */\r\nconst CheckIcon = ({ size = 12, ...props }: CheckIconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={3}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n);\r\n\r\nexport interface CheckboxProps extends React.ComponentPropsWithoutRef<\r\n typeof CheckboxPrimitive.Root\r\n> {\r\n /** Custom check icon (defaults to inline SVG checkmark) */\r\n checkIcon?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Unstyled Checkbox component wrapping Radix Checkbox primitive.\r\n * Radix adds data-state=\"checked\"/\"unchecked\"/\"indeterminate\" automatically.\r\n * @example\r\n * <Checkbox id=\"terms\" />\r\n * <Checkbox checked checkIcon={<CustomIcon />} />\r\n */\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n CheckboxProps\r\n>(({ className, checkIcon, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n data-slot=\"checkbox\"\r\n className={className}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\">\r\n {checkIcon ?? <CheckIcon />}\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n));\r\nCheckbox.displayName = \"Checkbox\";\r\n\r\nexport { Checkbox, CheckIcon };\r\n","import * as React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * The root component for the Dialog.\r\n */\r\nconst Dialog = DialogPrimitive.Root;\r\n\r\n/**\r\n * The trigger that opens the dialog.\r\n */\r\nconst DialogTrigger = DialogPrimitive.Trigger;\r\n\r\n/**\r\n * Portals the dialog content into a different part of the DOM.\r\n */\r\nconst DialogPortal = DialogPrimitive.Portal;\r\n\r\n/**\r\n * The close button for the dialog.\r\n */\r\nconst DialogClose = DialogPrimitive.Close;\r\n\r\n/**\r\n * The overlay that covers the screen when the dialog is open.\r\n */\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n data-slot=\"dialog-overlay\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\r\n\r\n/**\r\n * The content of the dialog.\r\n */\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n data-slot=\"dialog-content\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close data-slot=\"dialog-close\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n));\r\nDialogContent.displayName = DialogPrimitive.Content.displayName;\r\n\r\n/**\r\n * The header area of the dialog.\r\n */\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div data-slot=\"dialog-header\" className={cn(className)} {...props} />\r\n);\r\nDialogHeader.displayName = \"DialogHeader\";\r\n\r\n/**\r\n * The footer area of the dialog.\r\n */\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div data-slot=\"dialog-footer\" className={cn(className)} {...props} />\r\n);\r\nDialogFooter.displayName = \"DialogFooter\";\r\n\r\n/**\r\n * The title of the dialog.\r\n */\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n data-slot=\"dialog-title\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\n/**\r\n * The description/body text of the dialog.\r\n */\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n data-slot=\"dialog-description\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n};\r\n","import * as React from \"react\";\r\nimport { Command as CommandPrimitive } from \"cmdk\";\r\nimport { Search } from \"lucide-react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cn } from \"../utils\";\r\nimport { Dialog, DialogContent } from \"./dialog\";\r\n\r\nexport interface CommandProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive\r\n> {}\r\n\r\n/**\r\n * Command Root Component.\r\n * Acts as the container for the command palette.\r\n * @example\r\n * <Command>\r\n * <CommandInput />\r\n * <CommandList>...</CommandList>\r\n * </Command>\r\n */\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n CommandProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n data-slot=\"command\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nCommand.displayName = CommandPrimitive.displayName;\r\n\r\nexport interface CommandDialogProps extends DialogPrimitive.DialogProps {\r\n /** content className for the Dialog Content */\r\n contentClassName?: string;\r\n}\r\n\r\n/**\r\n * Command Dialog Component.\r\n * Wraps the Command component in a Dialog for modal usage.\r\n */\r\nconst CommandDialog = ({\r\n children,\r\n contentClassName,\r\n ...props\r\n}: CommandDialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent\r\n data-slot=\"command-dialog-content\"\r\n className={cn(contentClassName)}\r\n >\r\n <Command>{children}</Command>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport interface CommandInputProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.Input\r\n> {\r\n /** Optional custom search icon to replace default */\r\n icon?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Command Input Component.\r\n * An input field for searching commands.\r\n */\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n CommandInputProps\r\n>(({ className, icon, ...props }, ref) => (\r\n <div data-slot=\"command-input-wrapper\" cmdk-input-wrapper=\"\">\r\n {icon ?? <Search />}\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n data-slot=\"command-input\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </div>\r\n));\r\nCommandInput.displayName = CommandPrimitive.Input.displayName;\r\n\r\nexport interface CommandListProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.List\r\n> {}\r\n\r\n/**\r\n * Command List Component.\r\n * Container for the list of items and groups.\r\n */\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n CommandListProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n data-slot=\"command-list\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nCommandList.displayName = CommandPrimitive.List.displayName;\r\n\r\nexport interface CommandEmptyProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.Empty\r\n> {}\r\n\r\n/**\r\n * Command Empty Component.\r\n * Rendered when no results match the search query.\r\n */\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n CommandEmptyProps\r\n>((props, ref) => (\r\n <CommandPrimitive.Empty ref={ref} data-slot=\"command-empty\" {...props} />\r\n));\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\r\n\r\nexport interface CommandGroupProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.Group\r\n> {}\r\n\r\n/**\r\n * Command Group Component.\r\n * Groups related items together.\r\n */\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n CommandGroupProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n data-slot=\"command-group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\r\n\r\nexport interface CommandSeparatorProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.Separator\r\n> {}\r\n\r\n/**\r\n * Command Separator Component.\r\n * A visual separator between items or groups.\r\n */\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n CommandSeparatorProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"command-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\r\n\r\nexport interface CommandItemProps extends React.ComponentPropsWithoutRef<\r\n typeof CommandPrimitive.Item\r\n> {}\r\n\r\n/**\r\n * Command Item Component.\r\n * A selectable item in the command list.\r\n */\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n CommandItemProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n data-slot=\"command-item\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nCommandItem.displayName = CommandPrimitive.Item.displayName;\r\n\r\nexport interface CommandShortcutProps extends React.HTMLAttributes<HTMLSpanElement> {}\r\n\r\n/**\r\n * Command Shortcut Component.\r\n * Displays a keyboard shortcut for an item.\r\n */\r\nconst CommandShortcut = ({ className, ...props }: CommandShortcutProps) => {\r\n return (\r\n <span data-slot=\"command-shortcut\" className={cn(className)} {...props} />\r\n );\r\n};\r\nCommandShortcut.displayName = \"CommandShortcut\";\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils\";\r\n\r\n/**\r\n * The root component for the Context Menu.\r\n */\r\nconst ContextMenu = ContextMenuPrimitive.Root;\r\n\r\n/**\r\n * The trigger that opens the context menu when right-clicked.\r\n */\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\r\n\r\n/**\r\n * Groups multiple ContextMenu items.\r\n */\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\r\n\r\n/**\r\n * Portals the context menu content into a different part of the DOM.\r\n */\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\r\n\r\n/**\r\n * A sub-menu within the context menu.\r\n */\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\r\n\r\n/**\r\n * A group of radio buttons within the context menu.\r\n */\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\r\n\r\nexport interface ContextMenuSubTriggerProps extends React.ComponentPropsWithoutRef<\r\n typeof ContextMenuPrimitive.SubTrigger\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * Trigger item for a sub-menu.\r\n */\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n ContextMenuSubTriggerProps\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n data-slot=\"context-menu-sub-trigger\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight data-slot=\"context-menu-chevron\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n));\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\r\n\r\n/**\r\n * The content of a sub-menu.\r\n */\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n data-slot=\"context-menu-sub-content\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\r\n\r\n/**\r\n * The content that pops up when the context menu is triggered.\r\n */\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n data-slot=\"context-menu-content\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n));\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\r\n\r\nexport interface ContextMenuItemProps extends React.ComponentPropsWithoutRef<\r\n typeof ContextMenuPrimitive.Item\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * An item within the context menu.\r\n */\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.Item>,\r\n ContextMenuItemProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n data-slot=\"context-menu-item\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\r\n\r\n/**\r\n * A checkbox item within the context menu.\r\n */\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n data-slot=\"context-menu-checkbox-item\"\r\n className={cn(className)}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span data-slot=\"context-menu-item-indicator-wrapper\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check data-slot=\"context-menu-check-icon\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n));\r\nContextMenuCheckboxItem.displayName =\r\n ContextMenuPrimitive.CheckboxItem.displayName;\r\n\r\n/**\r\n * A radio item within the context menu.\r\n */\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n data-slot=\"context-menu-radio-item\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <span data-slot=\"context-menu-item-indicator-wrapper\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle data-slot=\"context-menu-circle-icon\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n));\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\r\n\r\nexport interface ContextMenuLabelProps extends React.ComponentPropsWithoutRef<\r\n typeof ContextMenuPrimitive.Label\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * A label for a group of items in the context menu.\r\n */\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.Label>,\r\n ContextMenuLabelProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Label\r\n ref={ref}\r\n data-slot=\"context-menu-label\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\r\n\r\n/**\r\n * A separator to visually divide items in the context menu.\r\n */\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ComponentRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"context-menu-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\r\n\r\n/**\r\n * Keyboard shortcut display for a menu item.\r\n */\r\nconst ContextMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n data-slot=\"context-menu-shortcut\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n};\r\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * The root component for the Dropdown Menu.\r\n */\r\nconst DropdownMenu = DropdownMenuPrimitive.Root;\r\n\r\n/**\r\n * The trigger that opens the dropdown menu.\r\n */\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\r\n\r\n/**\r\n * Groups multiple DropdownMenu items.\r\n */\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\r\n\r\n/**\r\n * Portals the dropdown menu content into a different part of the DOM.\r\n */\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\r\n\r\n/**\r\n * A sub-menu within the dropdown menu.\r\n */\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\r\n\r\n/**\r\n * A group of radio buttons within the dropdown menu.\r\n */\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\r\n\r\nexport interface DropdownMenuSubTriggerProps extends React.ComponentPropsWithoutRef<\r\n typeof DropdownMenuPrimitive.SubTrigger\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * The trigger item for a sub-menu.\r\n */\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n DropdownMenuSubTriggerProps\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n data-slot=\"dropdown-menu-sub-trigger\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight data-slot=\"dropdown-menu-chevron\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n));\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName;\r\n\r\n/**\r\n * The content of a sub-menu.\r\n */\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n data-slot=\"dropdown-menu-sub-content\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName;\r\n\r\n/**\r\n * The content that pops up when the dropdown menu is triggered.\r\n */\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n data-slot=\"dropdown-menu-content\"\r\n sideOffset={sideOffset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n));\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\r\n\r\nexport interface DropdownMenuItemProps extends React.ComponentPropsWithoutRef<\r\n typeof DropdownMenuPrimitive.Item\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * An item within the dropdown menu.\r\n */\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\r\n DropdownMenuItemProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n data-slot=\"dropdown-menu-item\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\r\n\r\n/**\r\n * A checkbox item within the dropdown menu.\r\n */\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n data-slot=\"dropdown-menu-checkbox-item\"\r\n className={cn(className)}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span data-slot=\"dropdown-menu-item-indicator-wrapper\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check data-slot=\"dropdown-menu-check-icon\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n));\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName;\r\n\r\n/**\r\n * A radio item within the dropdown menu.\r\n */\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n data-slot=\"dropdown-menu-radio-item\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <span data-slot=\"dropdown-menu-item-indicator-wrapper\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle data-slot=\"dropdown-menu-circle-icon\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n));\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\r\n\r\nexport interface DropdownMenuLabelProps extends React.ComponentPropsWithoutRef<\r\n typeof DropdownMenuPrimitive.Label\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * A label for a group of items in the dropdown menu.\r\n */\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\r\n DropdownMenuLabelProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n data-slot=\"dropdown-menu-label\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\r\n\r\n/**\r\n * A separator to visually divide items in the dropdown menu.\r\n */\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"dropdown-menu-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\r\n\r\n/**\r\n * Keyboard shortcut display for a menu item.\r\n */\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n data-slot=\"dropdown-menu-shortcut\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n};\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * A specific menu within the menubar.\r\n */\r\nfunction MenubarMenu(\r\n props: React.ComponentProps<typeof MenubarPrimitive.Menu>,\r\n) {\r\n return <MenubarPrimitive.Menu {...props} />;\r\n}\r\n\r\n/**\r\n * Groups multiple Menubar items.\r\n */\r\nfunction MenubarGroup(\r\n props: React.ComponentProps<typeof MenubarPrimitive.Group>,\r\n) {\r\n return <MenubarPrimitive.Group {...props} />;\r\n}\r\n\r\n/**\r\n * Portals the menubar content into a different part of the DOM.\r\n */\r\nfunction MenubarPortal(\r\n props: React.ComponentProps<typeof MenubarPrimitive.Portal>,\r\n) {\r\n return <MenubarPrimitive.Portal {...props} />;\r\n}\r\n\r\n/**\r\n * A group of radio buttons within a menu.\r\n */\r\nfunction MenubarRadioGroup(\r\n props: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>,\r\n) {\r\n return <MenubarPrimitive.RadioGroup {...props} />;\r\n}\r\n\r\n/**\r\n * A sub-menu within the menubar.\r\n */\r\nfunction MenubarSub(props: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\r\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\r\n}\r\n\r\n/**\r\n * The root component for the menubar.\r\n * Contains all menu items and triggers.\r\n */\r\nconst Menubar = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Root\r\n ref={ref}\r\n data-slot=\"menubar\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubar.displayName = MenubarPrimitive.Root.displayName;\r\n\r\n/**\r\n * The trigger that opens a specific menu within the menubar.\r\n */\r\nconst MenubarTrigger = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Trigger\r\n ref={ref}\r\n data-slot=\"menubar-trigger\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\r\n\r\nexport interface MenubarSubTriggerProps extends React.ComponentPropsWithoutRef<\r\n typeof MenubarPrimitive.SubTrigger\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * The trigger item for a sub-menu within the menubar.\r\n */\r\nconst MenubarSubTrigger = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.SubTrigger>,\r\n MenubarSubTriggerProps\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <MenubarPrimitive.SubTrigger\r\n ref={ref}\r\n data-slot=\"menubar-sub-trigger\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight data-slot=\"menubar-chevron\" />\r\n </MenubarPrimitive.SubTrigger>\r\n));\r\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\r\n\r\n/**\r\n * The content of a sub-menu.\r\n */\r\nconst MenubarSubContent = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.SubContent\r\n ref={ref}\r\n data-slot=\"menubar-sub-content\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\r\n\r\n/**\r\n * The content that pops up when a menu trigger is activated.\r\n */\r\nconst MenubarContent = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\r\n>(\r\n (\r\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\r\n ref,\r\n ) => (\r\n <MenubarPrimitive.Portal>\r\n <MenubarPrimitive.Content\r\n ref={ref}\r\n data-slot=\"menubar-content\"\r\n align={align}\r\n alignOffset={alignOffset}\r\n sideOffset={sideOffset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </MenubarPrimitive.Portal>\r\n ),\r\n);\r\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\r\n\r\nexport interface MenubarItemProps extends React.ComponentPropsWithoutRef<\r\n typeof MenubarPrimitive.Item\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * An item within a menu.\r\n */\r\nconst MenubarItem = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Item>,\r\n MenubarItemProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Item\r\n ref={ref}\r\n data-slot=\"menubar-item\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\r\n\r\n/**\r\n * A checkbox item within a menu.\r\n */\r\nconst MenubarCheckboxItem = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <MenubarPrimitive.CheckboxItem\r\n ref={ref}\r\n data-slot=\"menubar-checkbox-item\"\r\n className={cn(className)}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span data-slot=\"menubar-item-indicator-wrapper\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Check data-slot=\"menubar-check-icon\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.CheckboxItem>\r\n));\r\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\r\n\r\n/**\r\n * A radio item within a menu.\r\n */\r\nconst MenubarRadioItem = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <MenubarPrimitive.RadioItem\r\n ref={ref}\r\n data-slot=\"menubar-radio-item\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <span data-slot=\"menubar-item-indicator-wrapper\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Circle data-slot=\"menubar-circle-icon\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.RadioItem>\r\n));\r\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\r\n\r\nexport interface MenubarLabelProps extends React.ComponentPropsWithoutRef<\r\n typeof MenubarPrimitive.Label\r\n> {\r\n inset?: boolean;\r\n}\r\n\r\n/**\r\n * A label for a group of items in a menu.\r\n */\r\nconst MenubarLabel = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Label>,\r\n MenubarLabelProps\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Label\r\n ref={ref}\r\n data-slot=\"menubar-label\"\r\n data-inset={inset}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\r\n\r\n/**\r\n * A separator to visually divide items in a menu.\r\n */\r\nconst MenubarSeparator = React.forwardRef<\r\n React.ComponentRef<typeof MenubarPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"menubar-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\r\n\r\n/**\r\n * Keyboard shortcut display for a menu item.\r\n */\r\nconst MenubarShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span data-slot=\"menubar-shortcut\" className={cn(className)} {...props} />\r\n );\r\n};\r\nMenubarShortcut.displayName = \"MenubarShortcut\";\r\n\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n MenubarShortcut,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../utils\";\r\n\r\n/**\r\n * A container for grouping inputs with addons, buttons, or text.\r\n * Provides a cohesive look for input groups.\r\n */\r\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"input-group\"\r\n role=\"group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst inputGroupAddonVariants = cva(\"\", {\r\n variants: {\r\n align: {\r\n \"inline-start\": \"\",\r\n \"inline-end\": \"\",\r\n \"block-start\": \"\",\r\n \"block-end\": \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n align: \"inline-start\",\r\n },\r\n});\r\n\r\nexport interface InputGroupAddonProps\r\n extends\r\n React.ComponentProps<\"div\">,\r\n VariantProps<typeof inputGroupAddonVariants> {}\r\n\r\n/**\r\n * An addon element for the input group, typically used for icons or text prefixes/suffixes.\r\n * Clicking the addon focuses the adjacent input.\r\n */\r\nfunction InputGroupAddon({\r\n className,\r\n align = \"inline-start\",\r\n ...props\r\n}: InputGroupAddonProps) {\r\n return (\r\n <div\r\n role=\"group\"\r\n data-slot=\"input-group-addon\"\r\n data-align={align}\r\n className={cn(inputGroupAddonVariants({ align }), className)}\r\n onClick={(e) => {\r\n if ((e.target as HTMLElement).closest(\"button\")) {\r\n return;\r\n }\r\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst inputGroupButtonVariants = cva(\"\", {\r\n variants: {\r\n size: {\r\n xs: \"\",\r\n sm: \"\",\r\n \"icon-xs\": \"\",\r\n \"icon-sm\": \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"xs\",\r\n },\r\n});\r\n\r\nexport interface InputGroupButtonProps\r\n extends\r\n React.ComponentProps<\"button\">,\r\n VariantProps<typeof inputGroupButtonVariants> {\r\n variant?: string;\r\n}\r\n\r\n/**\r\n * A button component designed to be integrated within an input group.\r\n */\r\nfunction InputGroupButton({\r\n className,\r\n type = \"button\",\r\n size = \"xs\",\r\n ...props\r\n}: InputGroupButtonProps) {\r\n return (\r\n <button\r\n type={type}\r\n data-slot=\"input-group-button\"\r\n data-size={size}\r\n className={cn(inputGroupButtonVariants({ size }), className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Simple text wrapper for non-interactive content within an input group.\r\n */\r\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\r\n return (\r\n <span data-slot=\"input-group-text\" className={cn(className)} {...props} />\r\n );\r\n}\r\n\r\n/**\r\n * The input field component for the input group.\r\n */\r\nfunction InputGroupInput({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"input\">) {\r\n return (\r\n <input\r\n data-slot=\"input-group-control\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * The textarea component for the input group.\r\n */\r\nfunction InputGroupTextarea({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"textarea\">) {\r\n return (\r\n <textarea\r\n data-slot=\"input-group-control\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n InputGroup,\r\n InputGroupAddon,\r\n InputGroupButton,\r\n InputGroupText,\r\n InputGroupInput,\r\n InputGroupTextarea,\r\n inputGroupAddonVariants,\r\n inputGroupButtonVariants,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport {\r\n Controller,\r\n FormProvider,\r\n useFormContext,\r\n type ControllerProps,\r\n type FieldPath,\r\n type FieldValues,\r\n} from \"react-hook-form\";\r\n\r\nimport { cn } from \"../utils\";\r\n\r\n/**\r\n * The root container for a form managed by react-hook-form.\r\n */\r\nconst Form = FormProvider;\r\n\r\ntype FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n> = {\r\n name: TName;\r\n};\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(\r\n null,\r\n);\r\n\r\n/**\r\n * Wrapper for a form field that provides context for labels, errors, and descriptions.\r\n * Handles wiring up the react-hook-form Controller.\r\n */\r\nconst FormField = <\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>({\r\n ...props\r\n}: ControllerProps<TFieldValues, TName>) => {\r\n return (\r\n <FormFieldContext.Provider value={{ name: props.name }}>\r\n <Controller {...props} />\r\n </FormFieldContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * Hook to access field state and IDs within a FormField.\r\n * Must be used within a <FormField>.\r\n */\r\nconst useFormField = () => {\r\n const fieldContext = React.useContext(FormFieldContext);\r\n const itemContext = React.useContext(FormItemContext);\r\n const { getFieldState, formState } = useFormContext();\r\n\r\n if (!fieldContext) {\r\n throw new Error(\"useFormField should be used within <FormField>\");\r\n }\r\n\r\n if (!itemContext) {\r\n throw new Error(\"useFormField should be used within <FormItem>\");\r\n }\r\n\r\n const fieldState = getFieldState(fieldContext.name, formState);\r\n\r\n const { id } = itemContext;\r\n\r\n return {\r\n id,\r\n name: fieldContext.name,\r\n formItemId: `${id}-form-item`,\r\n formDescriptionId: `${id}-form-item-description`,\r\n formMessageId: `${id}-form-item-message`,\r\n ...fieldState,\r\n };\r\n};\r\n\r\ntype FormItemContextValue = {\r\n id: string;\r\n};\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue | null>(null);\r\n\r\n/**\r\n * Container for a single form field (Label, Control, Description, Message).\r\n * Generates a unique ID for accessible labelling.\r\n */\r\nconst FormItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const id = React.useId();\r\n\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div\r\n ref={ref}\r\n data-slot=\"form-item\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </FormItemContext.Provider>\r\n );\r\n});\r\nFormItem.displayName = \"FormItem\";\r\n\r\n/**\r\n * Label for a form field.\r\n * Automatically ties to the input via htmlFor and highlights on error.\r\n */\r\nconst FormLabel = React.forwardRef<\r\n HTMLLabelElement,\r\n React.LabelHTMLAttributes<HTMLLabelElement>\r\n>(({ className, ...props }, ref) => {\r\n const { error, formItemId } = useFormField();\r\n\r\n return (\r\n <label\r\n ref={ref}\r\n data-slot=\"form-label\"\r\n data-error={!!error}\r\n className={cn(className)}\r\n htmlFor={formItemId}\r\n {...props}\r\n />\r\n );\r\n});\r\nFormLabel.displayName = \"FormLabel\";\r\n\r\n/**\r\n * Wrapper for the actual input component (Input, Select, etc.).\r\n * Handles ARIA attributes for accessibility (invalid state, description IDs).\r\n */\r\nconst FormControl = React.forwardRef<\r\n React.ComponentRef<typeof Slot>,\r\n React.ComponentPropsWithoutRef<typeof Slot>\r\n>(({ ...props }, ref) => {\r\n const { error, formItemId, formDescriptionId, formMessageId } =\r\n useFormField();\r\n\r\n return (\r\n <Slot\r\n ref={ref}\r\n data-slot=\"form-control\"\r\n id={formItemId}\r\n aria-describedby={\r\n !error\r\n ? `${formDescriptionId}`\r\n : `${formDescriptionId} ${formMessageId}`\r\n }\r\n aria-invalid={!!error}\r\n {...props}\r\n />\r\n );\r\n});\r\nFormControl.displayName = \"FormControl\";\r\n\r\n/**\r\n * Helper text displayed below the form field.\r\n */\r\nconst FormDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => {\r\n const { formDescriptionId } = useFormField();\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n data-slot=\"form-description\"\r\n id={formDescriptionId}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nFormDescription.displayName = \"FormDescription\";\r\n\r\n/**\r\n * Error message displayed when validation fails.\r\n */\r\nconst FormMessage = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, children, ...props }, ref) => {\r\n const { error, formMessageId } = useFormField();\r\n const body = error ? String(error?.message ?? \"\") : children;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n data-slot=\"form-message\"\r\n id={formMessageId}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nFormMessage.displayName = \"FormMessage\";\r\n\r\nexport {\r\n useFormField,\r\n Form,\r\n FormItem,\r\n FormLabel,\r\n FormControl,\r\n FormDescription,\r\n FormMessage,\r\n FormField,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../utils\";\r\n\r\n/**\r\n * Container for a group of items.\r\n * @example\r\n * <ItemGroup>\r\n * <Item>...</Item>\r\n * <Item>...</Item>\r\n * </ItemGroup>\r\n */\r\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n role=\"list\"\r\n data-slot=\"item-group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Visual separator between items.\r\n */\r\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<\"hr\">) {\r\n return <hr data-slot=\"item-separator\" className={cn(className)} {...props} />;\r\n}\r\n\r\nconst itemVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default: \"\",\r\n outline: \"\",\r\n muted: \"\",\r\n },\r\n size: {\r\n default: \"\",\r\n sm: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n});\r\n\r\nexport interface ItemProps\r\n extends React.ComponentProps<\"div\">, VariantProps<typeof itemVariants> {\r\n asChild?: boolean;\r\n}\r\n\r\n/**\r\n * Interactive or display item component.\r\n * Supports various variants and sizes.\r\n */\r\nfunction Item({\r\n className,\r\n variant = \"default\",\r\n size = \"default\",\r\n asChild = false,\r\n ...props\r\n}: ItemProps) {\r\n const Comp = asChild ? Slot : \"div\";\r\n return (\r\n <Comp\r\n data-slot=\"item\"\r\n data-variant={variant}\r\n data-size={size}\r\n className={cn(itemVariants({ variant, size, className }))}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst itemMediaVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default: \"\",\r\n icon: \"\",\r\n image: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nexport interface ItemMediaProps\r\n extends React.ComponentProps<\"div\">, VariantProps<typeof itemMediaVariants> {}\r\n\r\n/**\r\n * Media container for icons, images, or avatars within an Item.\r\n */\r\nfunction ItemMedia({\r\n className,\r\n variant = \"default\",\r\n ...props\r\n}: ItemMediaProps) {\r\n return (\r\n <div\r\n data-slot=\"item-media\"\r\n data-variant={variant}\r\n className={cn(itemMediaVariants({ variant, className }))}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Main content area for an Item.\r\n */\r\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"item-content\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * Title element for an Item.\r\n */\r\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"item-title\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * Description text for an Item.\r\n */\r\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\r\n return (\r\n <p data-slot=\"item-description\" className={cn(className)} {...props} />\r\n );\r\n}\r\n\r\n/**\r\n * Action buttons container (e.g., for copy, edit, delete buttons).\r\n */\r\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"item-actions\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * Optional header section for an Item.\r\n */\r\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"item-header\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * Optional footer section for an Item.\r\n */\r\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"item-footer\" className={cn(className)} {...props} />;\r\n}\r\n\r\nexport {\r\n Item,\r\n ItemMedia,\r\n ItemContent,\r\n ItemActions,\r\n ItemGroup,\r\n ItemSeparator,\r\n ItemTitle,\r\n ItemDescription,\r\n ItemHeader,\r\n ItemFooter,\r\n itemVariants,\r\n itemMediaVariants,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * FieldSet is a container for grouping related fields.\r\n * It's used to group related fields together, such as a set of checkboxes or radio buttons,\r\n * or even a section of a form.\r\n */\r\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\r\n return (\r\n <fieldset data-slot=\"field-set\" className={cn(className)} {...props} />\r\n );\r\n}\r\n\r\nexport interface FieldLegendProps extends React.ComponentProps<\"legend\"> {\r\n variant?: \"legend\" | \"label\";\r\n}\r\n\r\n/**\r\n * FieldLegend is a caption for a FieldSet.\r\n * It's used to provide a title or description for a group of fields.\r\n */\r\nfunction FieldLegend({\r\n className,\r\n variant = \"legend\",\r\n ...props\r\n}: FieldLegendProps) {\r\n return (\r\n <legend\r\n data-slot=\"field-legend\"\r\n data-variant={variant}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * FieldGroup is a wrapper for stacking multiple fields.\r\n * It's used to group related fields together, such as a set of inputs.\r\n */\r\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"field-group\" className={cn(className)} {...props} />;\r\n}\r\n\r\nconst fieldVariants = cva(\"group\", {\r\n variants: {\r\n orientation: {\r\n vertical: \"\",\r\n horizontal: \"\",\r\n responsive: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"vertical\",\r\n },\r\n});\r\n\r\nexport interface FieldProps\r\n extends React.ComponentProps<\"div\">, VariantProps<typeof fieldVariants> {}\r\n\r\n/**\r\n * Field is the main container for a form field.\r\n * It provides the structure and styling for the field's label, input, description, and error message.\r\n */\r\nfunction Field({ className, orientation = \"vertical\", ...props }: FieldProps) {\r\n return (\r\n <div\r\n role=\"group\"\r\n data-slot=\"field\"\r\n data-orientation={orientation}\r\n className={cn(fieldVariants({ orientation }), className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * FieldContent is a wrapper for field content.\r\n * It's used to group the field's input and label together.\r\n */\r\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"field-content\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * FieldLabel is the label for the field.\r\n * It's used to provide a descriptive label for the field's input.\r\n */\r\nfunction FieldLabel({ className, ...props }: React.ComponentProps<\"label\">) {\r\n return <label data-slot=\"field-label\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * FieldTitle is a title for a group or section within a field.\r\n * It's used to provide a title for a section of content within a field.\r\n */\r\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return <div data-slot=\"field-title\" className={cn(className)} {...props} />;\r\n}\r\n\r\n/**\r\n * FieldDescription is helper text for the field.\r\n * It's used to provide additional information or instructions about the field.\r\n */\r\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\r\n return (\r\n <p data-slot=\"field-description\" className={cn(className)} {...props} />\r\n );\r\n}\r\n\r\n/**\r\n * FieldSeparator is a visual separator between fields or sections.\r\n * It's used to separate groups of fields or sections of content.\r\n */\r\nfunction FieldSeparator({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n children?: React.ReactNode;\r\n}) {\r\n return (\r\n <div\r\n data-slot=\"field-separator\"\r\n data-content={!!children}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <hr data-slot=\"field-separator-line\" />\r\n {children && <span data-slot=\"field-separator-content\">{children}</span>}\r\n {children && <hr data-slot=\"field-separator-line\" />}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface FieldErrorProps extends React.ComponentProps<\"div\"> {\r\n errors?: Array<{ message?: string } | undefined>;\r\n}\r\n\r\n/**\r\n * FieldError is a component for displaying error messages.\r\n * It's used to display validation errors for the field.\r\n */\r\nfunction FieldError({\r\n className,\r\n children,\r\n errors,\r\n ...props\r\n}: FieldErrorProps) {\r\n const content = React.useMemo(() => {\r\n if (children) {\r\n return children;\r\n }\r\n\r\n if (!errors) {\r\n return null;\r\n }\r\n\r\n if (errors?.length === 1 && errors[0]?.message) {\r\n return errors[0].message;\r\n }\r\n\r\n return (\r\n <ul data-slot=\"field-error-list\">\r\n {errors.map(\r\n (error, index) =>\r\n error?.message && <li key={index}>{error.message}</li>,\r\n )}\r\n </ul>\r\n );\r\n }, [children, errors]);\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n role=\"alert\"\r\n data-slot=\"field-error\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {content}\r\n </div>\r\n );\r\n}\r\n\r\nexport {\r\n Field,\r\n FieldLabel,\r\n FieldDescription,\r\n FieldError,\r\n FieldGroup,\r\n FieldLegend,\r\n FieldSeparator,\r\n FieldSet,\r\n FieldContent,\r\n FieldTitle,\r\n fieldVariants,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n ChevronDownIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n} from \"lucide-react\";\r\nimport { DayButton, DayPicker, type DayPickerProps } from \"react-day-picker\";\r\n\r\nimport { cn } from \"../utils\";\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n buttonVariant?: string;\r\n showTimePicker?: boolean;\r\n};\r\n\r\n/**\r\n * A date picker component built on react-day-picker.\r\n * @example\r\n * <Calendar\r\n * mode=\"single\"\r\n * selected={date}\r\n * onSelect={setDate}\r\n * showTimePicker\r\n * className=\"rounded-md border\"\r\n * />\r\n */\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n captionLayout = \"label\",\r\n buttonVariant = \"ghost\",\r\n showTimePicker,\r\n formatters,\r\n components,\r\n ...props\r\n}: CalendarProps) {\r\n // Extract selected date for time picker (assuming single mode for now)\r\n const selectedDate =\r\n (props as any).selected instanceof Date\r\n ? (props as any).selected\r\n : undefined;\r\n\r\n // Handler for time changes\r\n const handleTimeChange = (newDate: Date) => {\r\n if ((props as any).onSelect) {\r\n (props as any).onSelect(newDate);\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex flex-col sm:flex-row gap-4\", className)}>\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\"p-3\")}\r\n captionLayout={captionLayout}\r\n formatters={{\r\n formatMonthDropdown: (date) =>\r\n date.toLocaleString(\"default\", { month: \"short\" }),\r\n ...formatters,\r\n }}\r\n classNames={{\r\n months:\r\n \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\r\n month: \"space-y-4\",\r\n month_caption: \"flex justify-center pt-1 relative items-center\",\r\n caption_label: \"text-sm font-medium\",\r\n nav: \"space-x-1 flex items-center\",\r\n button_previous: cn(\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 hover:bg-accent hover:text-accent-foreground rounded-md flex items-center justify-center transition-opacity\",\r\n ),\r\n button_next: cn(\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 hover:bg-accent hover:text-accent-foreground rounded-md flex items-center justify-center transition-opacity\",\r\n ),\r\n month_grid: \"w-full border-collapse space-y-1\",\r\n weekdays: \"flex\",\r\n weekday:\r\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\r\n week: \"flex w-full mt-2\",\r\n day: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\r\n day_button: cn(\r\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 hover:bg-accent hover:text-accent-foreground rounded-md flex items-center justify-center transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n ),\r\n range_start: \"day-range-start\",\r\n range_end: \"day-range-end\",\r\n selected:\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\r\n today: \"bg-accent text-accent-foreground\",\r\n outside:\r\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\r\n disabled: \"text-muted-foreground opacity-50\",\r\n range_middle:\r\n \"aria-selected:bg-accent aria-selected:text-accent-foreground aria-selected:rounded-none\",\r\n hidden: \"invisible\",\r\n\r\n // Dropdown & Footer Styling\r\n dropdowns: \"flex items-center justify-center space-x-2\",\r\n dropdown:\r\n \"bg-background ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 text-sm font-medium rounded-md border border-input h-7 px-2 py-1 max-w-[120px]\",\r\n dropdown_icon: \"hidden\",\r\n dropdown_month: \"min-w-[80px]\",\r\n dropdown_year: \"min-w-[70px]\",\r\n footer: \"pt-3 mt-3 border-t\",\r\n\r\n ...classNames,\r\n }}\r\n components={{\r\n Root: ({ className, rootRef, ...props }) => {\r\n return (\r\n <div\r\n data-slot=\"calendar\"\r\n ref={rootRef}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n Chevron: ({ className, orientation, ...props }) => {\r\n const Icon =\r\n orientation === \"left\"\r\n ? ChevronLeftIcon\r\n : orientation === \"right\"\r\n ? ChevronRightIcon\r\n : ChevronDownIcon;\r\n return (\r\n <Icon\r\n data-slot=\"calendar-chevron\"\r\n data-orientation={orientation || \"down\"}\r\n className={cn(\"h-4 w-4\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n DayButton: CalendarDayButton,\r\n WeekNumber: ({ children, ...props }) => {\r\n return (\r\n <td\r\n data-slot=\"calendar-week-number\"\r\n className=\"text-muted-foreground text-[0.8rem] w-9 text-center\"\r\n {...props}\r\n >\r\n <div>{children}</div>\r\n </td>\r\n );\r\n },\r\n ...components,\r\n }}\r\n {...props}\r\n />\r\n {showTimePicker && (\r\n <div className=\"flex flex-col sm:border-l sm:pl-4 border-t sm:border-t-0 pt-4 sm:pt-0\">\r\n <TimePicker date={selectedDate} onChange={handleTimeChange} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction CalendarDayButton({\r\n className,\r\n day,\r\n modifiers,\r\n ...props\r\n}: React.ComponentProps<typeof DayButton>) {\r\n const ref = React.useRef<HTMLButtonElement>(null);\r\n React.useEffect(() => {\r\n if (modifiers.focused) ref.current?.focus();\r\n }, [modifiers.focused]);\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-slot=\"calendar-day-button\"\r\n data-day={day.date.toLocaleDateString()}\r\n data-selected-single={\r\n modifiers.selected &&\r\n !modifiers.range_start &&\r\n !modifiers.range_end &&\r\n !modifiers.range_middle\r\n }\r\n data-range-start={modifiers.range_start}\r\n data-range-end={modifiers.range_end}\r\n data-range-middle={modifiers.range_middle}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ninterface TimePickerProps {\r\n date: Date | undefined;\r\n onChange: (date: Date) => void;\r\n}\r\n\r\nfunction TimePicker({ date, onChange }: TimePickerProps) {\r\n const hours = Array.from({ length: 12 }, (_, i) => i + 1);\r\n const minutes = Array.from({ length: 60 }, (_, i) => i);\r\n const ampm = [\"AM\", \"PM\"];\r\n\r\n const safeDate = date || new Date(); // Fallback to now if no date selected yet\r\n\r\n // Helper to update time\r\n const updateTime = (\r\n type: \"hour\" | \"minute\" | \"ampm\",\r\n value: number | string,\r\n ) => {\r\n const newDate = new Date(safeDate);\r\n let currentHours = newDate.getHours();\r\n\r\n if (type === \"hour\") {\r\n const hour = value as number;\r\n if (currentHours >= 12) {\r\n // PM\r\n newDate.setHours(hour === 12 ? 12 : hour + 12);\r\n } else {\r\n // AM\r\n newDate.setHours(hour === 12 ? 0 : hour);\r\n }\r\n } else if (type === \"minute\") {\r\n newDate.setMinutes(value as number);\r\n } else if (type === \"ampm\") {\r\n const isPM = value === \"PM\";\r\n if (isPM && currentHours < 12) {\r\n newDate.setHours(currentHours + 12);\r\n } else if (!isPM && currentHours >= 12) {\r\n newDate.setHours(currentHours - 12);\r\n }\r\n }\r\n onChange(newDate);\r\n };\r\n\r\n const getHourValue = (d: Date) => {\r\n const h = d.getHours();\r\n if (h === 0 || h === 12) return 12;\r\n return h > 12 ? h - 12 : h;\r\n };\r\n\r\n const getAMPMValue = (d: Date) => (d.getHours() >= 12 ? \"PM\" : \"AM\");\r\n\r\n return (\r\n <div className=\"flex h-[300px] w-auto gap-2\">\r\n <div className=\"flex flex-col gap-2\">\r\n <span className=\"text-xs font-medium text-center text-muted-foreground pb-2\">\r\n Hour\r\n </span>\r\n <div className=\"h-full overflow-y-auto no-scrollbar border-r px-2 scroll-smooth\">\r\n <div className=\"flex flex-col gap-1 py-32\">\r\n {hours.map((h) => (\r\n <button\r\n key={h}\r\n type=\"button\"\r\n className={cn(\r\n \"h-8 w-10 text-sm rounded-md transition-colors hover:bg-accent hover:text-accent-foreground\",\r\n getHourValue(safeDate) === h &&\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\r\n )}\r\n onClick={() => updateTime(\"hour\", h)}\r\n >\r\n {h}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-2\">\r\n <span className=\"text-xs font-medium text-center text-muted-foreground pb-2\">\r\n Min\r\n </span>\r\n <div className=\"h-full overflow-y-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] border-r px-2 scroll-smooth\">\r\n <div className=\"flex flex-col gap-1 py-32\">\r\n {minutes.map((m) => (\r\n <button\r\n key={m}\r\n type=\"button\"\r\n className={cn(\r\n \"h-8 w-10 text-sm rounded-md transition-colors hover:bg-accent hover:text-accent-foreground\",\r\n safeDate.getMinutes() === m &&\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\r\n )}\r\n onClick={() => updateTime(\"minute\", m)}\r\n >\r\n {m.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-2\">\r\n <span className=\"text-xs font-medium text-center text-muted-foreground pb-2\">\r\n AM/PM\r\n </span>\r\n <div className=\"h-full overflow-y-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] px-2\">\r\n <div className=\"flex flex-col gap-1 py-32\">\r\n {ampm.map((ap) => (\r\n <button\r\n key={ap}\r\n type=\"button\"\r\n className={cn(\r\n \"h-8 w-10 text-sm rounded-md transition-colors hover:bg-accent hover:text-accent-foreground\",\r\n getAMPMValue(safeDate) === ap &&\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\r\n )}\r\n onClick={() => updateTime(\"ampm\", ap)}\r\n >\r\n {ap}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport { Calendar, CalendarDayButton };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\";\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1];\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\r\ntype CarouselOptions = UseCarouselParameters[0];\r\ntype CarouselPlugin = UseCarouselParameters[1];\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions;\r\n plugins?: CarouselPlugin;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n setApi?: (api: CarouselApi) => void;\r\n};\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\r\n api: ReturnType<typeof useEmblaCarousel>[1];\r\n scrollPrev: () => void;\r\n scrollNext: () => void;\r\n canScrollPrev: boolean;\r\n canScrollNext: boolean;\r\n selectedIndex: number;\r\n scrollSnaps: number[];\r\n scrollTo: (index: number) => void;\r\n} & CarouselProps;\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\r\n\r\n/**\r\n * Hook to access the carousel context.\r\n * Must be used within a <Carousel> component.\r\n */\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\n/**\r\n * A carousel component built on top of Embla Carousel.\r\n * Provides context and state management for carousel functionality.\r\n * @example\r\n * <Carousel>\r\n * <CarouselContent>\r\n * <CarouselItem>...</CarouselItem>\r\n * </CarouselContent>\r\n * <CarouselPrevious />\r\n * <CarouselNext />\r\n * </Carousel>\r\n */\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins,\r\n );\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\r\n const [canScrollNext, setCanScrollNext] = React.useState(false);\r\n const [selectedIndex, setSelectedIndex] = React.useState(0);\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev());\r\n setCanScrollNext(api.canScrollNext());\r\n setSelectedIndex(api.selectedScrollSnap());\r\n }, []);\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return;\r\n }\r\n setScrollSnaps(api.scrollSnapList());\r\n }, []);\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev();\r\n }, [api]);\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext();\r\n }, [api]);\r\n\r\n const scrollTo = React.useCallback(\r\n (index: number) => {\r\n api?.scrollTo(index);\r\n },\r\n [api],\r\n );\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault();\r\n scrollPrev();\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault();\r\n scrollNext();\r\n }\r\n },\r\n [scrollPrev, scrollNext],\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return;\r\n }\r\n\r\n setApi(api);\r\n }, [api, setApi]);\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n onSelect(api);\r\n onInit(api);\r\n api.on(\"reInit\", onSelect);\r\n api.on(\"reInit\", onInit);\r\n api.on(\"select\", onSelect);\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect);\r\n };\r\n }, [api, onSelect, onInit]);\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n selectedIndex,\r\n scrollSnaps,\r\n scrollTo,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"carousel\"\r\n data-orientation={orientation}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n );\r\n },\r\n);\r\nCarousel.displayName = \"Carousel\";\r\n\r\n/**\r\n * The viewport and container for carousel items.\r\n * Handles scrolling and layout of slides.\r\n */\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel();\r\n\r\n return (\r\n <div ref={carouselRef} data-slot=\"carousel-viewport\">\r\n <div\r\n ref={ref}\r\n data-slot=\"carousel-content\"\r\n data-orientation={orientation}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n});\r\nCarouselContent.displayName = \"CarouselContent\";\r\n\r\n/**\r\n * A single slide within the carousel.\r\n */\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"carousel-item\"\r\n data-orientation={orientation}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nCarouselItem.displayName = \"CarouselItem\";\r\n\r\nexport interface CarouselPreviousProps extends React.ComponentProps<\"button\"> {\r\n variant?: string;\r\n size?: string;\r\n}\r\n\r\n/**\r\n * Button to navigate to the previous slide.\r\n * Automatically disabled when there is no previous slide.\r\n */\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n CarouselPreviousProps\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"carousel-previous\"\r\n data-orientation={orientation}\r\n data-variant={variant}\r\n data-size={size}\r\n className={cn(className)}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft data-slot=\"carousel-previous-icon\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </button>\r\n );\r\n});\r\nCarouselPrevious.displayName = \"CarouselPrevious\";\r\n\r\nexport interface CarouselNextProps extends React.ComponentProps<\"button\"> {\r\n variant?: string;\r\n size?: string;\r\n}\r\n\r\n/**\r\n * Button to navigate to the next slide.\r\n * Automatically disabled when there is no next slide.\r\n */\r\nconst CarouselNext = React.forwardRef<HTMLButtonElement, CarouselNextProps>(\r\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n data-slot=\"carousel-next\"\r\n data-orientation={orientation}\r\n data-variant={variant}\r\n data-size={size}\r\n className={cn(className)}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight data-slot=\"carousel-next-icon\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </button>\r\n );\r\n },\r\n);\r\nCarouselNext.displayName = \"CarouselNext\";\r\n\r\n/**\r\n * Navigation dots for the carousel.\r\n * Shows the current active slide and allows direct navigation.\r\n */\r\nconst CarouselDots = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { scrollSnaps, selectedIndex, scrollTo } = useCarousel();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"carousel-dots\"\r\n role=\"tablist\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n role=\"tab\"\r\n data-slot=\"carousel-dot\"\r\n aria-selected={index === selectedIndex}\r\n data-active={index === selectedIndex}\r\n onClick={() => scrollTo(index)}\r\n className={cn(\r\n \"relative h-2 w-2 rounded-full transition-colors\",\r\n index === selectedIndex ? \"bg-primary\" : \"bg-muted\",\r\n )}\r\n >\r\n <span className=\"sr-only\">Go to slide {index + 1}</span>\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n});\r\nCarouselDots.displayName = \"CarouselDots\";\r\n\r\n/**\r\n * A text-based counter showing the current slide index and total slides.\r\n * Format: \"Current / Total\"\r\n */\r\nconst CarouselCounter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { selectedIndex, scrollSnaps } = useCarousel();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"carousel-counter\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {selectedIndex + 1} / {scrollSnaps.length}\r\n </div>\r\n );\r\n});\r\nCarouselCounter.displayName = \"CarouselCounter\";\r\n\r\nexport {\r\n type CarouselApi,\r\n type CarouselOptions,\r\n type CarouselPlugin,\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n CarouselDots,\r\n CarouselCounter,\r\n useCarousel,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\r\n\r\n/**\r\n * Configuration for the chart.\r\n * Maps data keys to labels, icons, and colors/themes.\r\n */\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & (\r\n | { color?: string; theme?: never }\r\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\r\n );\r\n};\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig;\r\n};\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\n/**\r\n * Hook to access the chart context.\r\n * Must be used within a <ChartContainer>.\r\n */\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nexport interface ChartContainerProps extends React.ComponentProps<\"div\"> {\r\n config: ChartConfig;\r\n children: React.ComponentProps<\r\n typeof RechartsPrimitive.ResponsiveContainer\r\n >[\"children\"];\r\n}\r\n\r\n/**\r\n * A container for Recharts charts that provides the chart context and styling.\r\n * Handles the generation of CSS variables for chart colors based on the config.\r\n * @example\r\n * <ChartContainer config={chartConfig}>\r\n * <BarChart ... />\r\n * </ChartContainer>\r\n */\r\nconst ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\r\n ({ id, className, children, config, ...props }, ref) => {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-slot=\"chart\"\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>\r\n {children}\r\n </RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n },\r\n);\r\nChartContainer.displayName = \"Chart\";\r\n\r\n/**\r\n * Component that generates and injects CSS variables for the chart colors.\r\n * Used internally by ChartContainer.\r\n */\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(\r\n ([, config]) => config.theme || config.color,\r\n );\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color =\r\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\r\n itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`,\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\ntype TooltipPayloadItem = {\r\n dataKey?: string | number;\r\n name?: string;\r\n value?: number | string;\r\n type?: string;\r\n color?: string;\r\n payload?: Record<string, unknown>;\r\n fill?: string;\r\n};\r\n\r\nexport type ChartTooltipContentProps = React.ComponentProps<\"div\"> & {\r\n active?: boolean;\r\n payload?: TooltipPayloadItem[];\r\n label?: string;\r\n labelFormatter?: (\r\n value: unknown,\r\n payload: TooltipPayloadItem[],\r\n ) => React.ReactNode;\r\n labelClassName?: string;\r\n formatter?: (\r\n value: unknown,\r\n name: string,\r\n item: TooltipPayloadItem,\r\n index: number,\r\n payload: Record<string, unknown>,\r\n ) => React.ReactNode;\r\n color?: string;\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n};\r\n\r\n/**\r\n * Custom tooltip content component for Recharts.\r\n * Displays the tooltip payload with labels, values, and indicators formatted according to the chart config.\r\n */\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n ChartTooltipContentProps\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref,\r\n ) => {\r\n const { config } = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return (\r\n <div data-slot=\"chart-tooltip-label\" className={cn(labelClassName)}>\r\n {labelFormatter(value, payload)}\r\n </div>\r\n );\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div data-slot=\"chart-tooltip-label\" className={cn(labelClassName)}>\r\n {value}\r\n </div>\r\n );\r\n }, [\r\n label,\r\n labelFormatter,\r\n payload,\r\n hideLabel,\r\n labelClassName,\r\n config,\r\n labelKey,\r\n ]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"chart-tooltip-content\"\r\n className={cn(className)}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div data-slot=\"chart-tooltip-items\">\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor =\r\n color || (item.payload?.fill as string) || item.color;\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n data-slot=\"chart-tooltip-item\"\r\n data-indicator={indicator}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(\r\n item.value,\r\n item.name,\r\n item,\r\n index,\r\n item.payload ?? {},\r\n )\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n data-slot=\"chart-tooltip-indicator\"\r\n data-indicator={indicator}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div data-slot=\"chart-tooltip-item-content\">\r\n <div data-slot=\"chart-tooltip-item-label\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span data-slot=\"chart-tooltip-item-name\">\r\n {itemConfig?.label || item.name}\r\n </span>\r\n </div>\r\n {item.value && (\r\n <span data-slot=\"chart-tooltip-item-value\">\r\n {typeof item.value === \"number\"\r\n ? item.value.toLocaleString()\r\n : item.value}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\nChartTooltipContent.displayName = \"ChartTooltip\";\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\ntype LegendPayloadItem = {\r\n value?: string;\r\n dataKey?: string | number;\r\n type?: string;\r\n color?: string;\r\n};\r\n\r\nexport type ChartLegendContentProps = React.ComponentProps<\"div\"> & {\r\n payload?: LegendPayloadItem[];\r\n verticalAlign?: \"top\" | \"bottom\" | \"middle\";\r\n hideIcon?: boolean;\r\n nameKey?: string;\r\n};\r\n\r\n/**\r\n * Custom legend content component for Recharts.\r\n * Displays the legend payload with labels and indicators formatted according to the chart config.\r\n */\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n ChartLegendContentProps\r\n>(\r\n (\r\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\r\n ref,\r\n ) => {\r\n const { config } = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"chart-legend\"\r\n data-vertical-align={verticalAlign}\r\n className={cn(className)}\r\n >\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div key={item.value} data-slot=\"chart-legend-item\">\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n data-slot=\"chart-legend-indicator\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n },\r\n);\r\nChartLegendContent.displayName = \"ChartLegend\";\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(\r\n config: ChartConfig,\r\n payload: unknown,\r\n key: string,\r\n) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload &&\r\n typeof payload.payload === \"object\" &&\r\n payload.payload !== null\r\n ? payload.payload\r\n : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (\r\n key in payload &&\r\n typeof payload[key as keyof typeof payload] === \"string\"\r\n ) {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[\r\n key as keyof typeof payloadPayload\r\n ] as string;\r\n }\r\n\r\n return configLabelKey in config\r\n ? config[configLabelKey]\r\n : config[key as keyof typeof config];\r\n}\r\n\r\nexport {\r\n ChartContainer,\r\n ChartTooltip,\r\n ChartTooltipContent,\r\n ChartLegend,\r\n ChartLegendContent,\r\n ChartStyle,\r\n useChart,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\n/** Metadata for a registered section */\r\ninterface SectionMeta {\r\n id: string;\r\n label?: string;\r\n element: HTMLElement;\r\n}\r\n\r\n/** Root scrollytelling context value */\r\ninterface ScrollytellingContextValue {\r\n /** Global scroll progress (0-1) */\r\n progress: number;\r\n /** ID of the currently active section */\r\n activeSection: string | null;\r\n /** Scroll direction */\r\n direction: \"up\" | \"down\" | null;\r\n /** Whether reduced motion is preferred */\r\n reducedMotion: boolean;\r\n /** Navigate to a specific section by ID */\r\n goToSection: (id: string) => void;\r\n /** Array of registered sections */\r\n sections: SectionMeta[];\r\n /** Register a section with the context */\r\n registerSection: (meta: SectionMeta) => void;\r\n /** Unregister a section from the context */\r\n unregisterSection: (id: string) => void;\r\n}\r\n\r\nconst ScrollytellingContext =\r\n React.createContext<ScrollytellingContextValue | null>(null);\r\n\r\n/**\r\n * Hook to access the root scrollytelling context.\r\n * Must be used within a <Scrollytelling /> component.\r\n */\r\nfunction useScrollytelling(): ScrollytellingContextValue {\r\n const context = React.useContext(ScrollytellingContext);\r\n if (!context) {\r\n throw new Error(\"useScrollytelling must be used within <Scrollytelling />\");\r\n }\r\n return context;\r\n}\r\n\r\n/** Per-section context value */\r\ninterface SectionContextValue {\r\n /** Unique section identifier */\r\n id: string;\r\n /** Local progress within this section (0-1) */\r\n progress: number;\r\n /** Whether this section is currently active */\r\n isActive: boolean;\r\n /** Whether this section is currently pinned */\r\n isPinned: boolean;\r\n}\r\n\r\nconst SectionContext = React.createContext<SectionContextValue | null>(null);\r\n\r\n/**\r\n * Hook to access the current section's context.\r\n * Must be used within a <ScrollytellingSection /> component.\r\n */\r\nfunction useScrollytellingSection(): SectionContextValue {\r\n const context = React.useContext(SectionContext);\r\n if (!context) {\r\n throw new Error(\r\n \"useScrollytellingSection must be used within <ScrollytellingSection />\"\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nexport {\r\n ScrollytellingContext,\r\n SectionContext,\r\n useScrollytelling,\r\n useScrollytellingSection,\r\n type ScrollytellingContextValue,\r\n type SectionContextValue,\r\n type SectionMeta,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useScroll, useMotionValueEvent } from \"framer-motion\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n ScrollytellingContext,\r\n type ScrollytellingContextValue,\r\n type SectionMeta,\r\n} from \"./use-scrollytelling\";\r\n\r\nexport interface ScrollytellingProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onProgress\"> {\r\n /** Callback when global progress changes */\r\n onScrollProgress?: (progress: number) => void;\r\n}\r\n\r\n/**\r\n * Root provider for scrollytelling. Tracks global scroll progress,\r\n * manages section registry, and provides context to child components.\r\n */\r\nconst Scrollytelling = React.forwardRef<HTMLDivElement, ScrollytellingProps>(\r\n ({ className, children, onScrollProgress, ...props }, ref) => {\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const [mounted, setMounted] = React.useState(false);\r\n const [progress, setProgress] = React.useState(0);\r\n const [activeSection, setActiveSection] = React.useState<string | null>(\r\n null\r\n );\r\n const [direction, setDirection] = React.useState<\"up\" | \"down\" | null>(\r\n null\r\n );\r\n const [sections, setSections] = React.useState<SectionMeta[]>([]);\r\n const prevProgressRef = React.useRef(0);\r\n\r\n // SSR safety: track mounted state\r\n React.useEffect(() => {\r\n setMounted(true);\r\n }, []);\r\n\r\n // Detect prefers-reduced-motion\r\n const [reducedMotion, setReducedMotion] = React.useState(false);\r\n React.useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\r\n setReducedMotion(mediaQuery.matches);\r\n const handler = (e: MediaQueryListEvent) => setReducedMotion(e.matches);\r\n mediaQuery.addEventListener(\"change\", handler);\r\n return () => mediaQuery.removeEventListener(\"change\", handler);\r\n }, []);\r\n\r\n // Track global scroll progress\r\n const { scrollYProgress } = useScroll({\r\n target: containerRef,\r\n offset: [\"start start\", \"end end\"],\r\n });\r\n\r\n useMotionValueEvent(scrollYProgress, \"change\", (latest: number) => {\r\n const prevProgress = prevProgressRef.current;\r\n setProgress(latest);\r\n setDirection(latest > prevProgress ? \"down\" : latest < prevProgress ? \"up\" : null);\r\n prevProgressRef.current = latest;\r\n onScrollProgress?.(latest);\r\n });\r\n\r\n // Update active section based on scroll position\r\n React.useEffect(() => {\r\n if (sections.length === 0) return;\r\n\r\n const updateActiveSection = () => {\r\n const viewportCenter = window.innerHeight / 2;\r\n for (const section of sections) {\r\n const rect = section.element.getBoundingClientRect();\r\n if (rect.top <= viewportCenter && rect.bottom >= viewportCenter) {\r\n setActiveSection(section.id);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n updateActiveSection();\r\n window.addEventListener(\"scroll\", updateActiveSection, { passive: true });\r\n return () => window.removeEventListener(\"scroll\", updateActiveSection);\r\n }, [sections]);\r\n\r\n const registerSection = React.useCallback((meta: SectionMeta) => {\r\n setSections((prev) => {\r\n if (prev.some((s) => s.id === meta.id)) return prev;\r\n return [...prev, meta];\r\n });\r\n }, []);\r\n\r\n const unregisterSection = React.useCallback((id: string) => {\r\n setSections((prev) => prev.filter((s) => s.id !== id));\r\n }, []);\r\n\r\n const goToSection = React.useCallback(\r\n (id: string) => {\r\n const section = sections.find((s) => s.id === id);\r\n if (section) {\r\n section.element.scrollIntoView({\r\n behavior: reducedMotion ? \"auto\" : \"smooth\",\r\n });\r\n }\r\n },\r\n [sections, reducedMotion]\r\n );\r\n\r\n // Keyboard navigation\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (sections.length === 0) return;\r\n const currentIndex = sections.findIndex((s) => s.id === activeSection);\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n case \"PageDown\":\r\n event.preventDefault();\r\n if (currentIndex < sections.length - 1) {\r\n goToSection(sections[currentIndex + 1].id);\r\n }\r\n break;\r\n case \"ArrowUp\":\r\n case \"PageUp\":\r\n event.preventDefault();\r\n if (currentIndex > 0) {\r\n goToSection(sections[currentIndex - 1].id);\r\n }\r\n break;\r\n case \"Home\":\r\n event.preventDefault();\r\n goToSection(sections[0].id);\r\n break;\r\n case \"End\":\r\n event.preventDefault();\r\n goToSection(sections[sections.length - 1].id);\r\n break;\r\n }\r\n },\r\n [sections, activeSection, goToSection]\r\n );\r\n\r\n const contextValue = React.useMemo<ScrollytellingContextValue>(\r\n () => ({\r\n progress: mounted ? progress : 0,\r\n activeSection: mounted ? activeSection : null,\r\n direction: mounted ? direction : null,\r\n reducedMotion,\r\n goToSection,\r\n sections,\r\n registerSection,\r\n unregisterSection,\r\n }),\r\n [\r\n mounted,\r\n progress,\r\n activeSection,\r\n direction,\r\n reducedMotion,\r\n goToSection,\r\n sections,\r\n registerSection,\r\n unregisterSection,\r\n ]\r\n );\r\n\r\n return (\r\n <ScrollytellingContext.Provider value={contextValue}>\r\n <div\r\n ref={(node) => {\r\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n }}\r\n data-slot=\"scrollytelling\"\r\n role=\"region\"\r\n aria-roledescription=\"scrollytelling\"\r\n tabIndex={0}\r\n onKeyDown={handleKeyDown}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n {/* No-JavaScript fallback styles */}\r\n <noscript>\r\n <style>{`\r\n [data-slot=\"scrollytelling-reveal\"] { opacity: 1 !important; transform: none !important; }\r\n [data-slot=\"scrollytelling-media-image\"] { clip-path: none !important; }\r\n [data-slot=\"scrollytelling-media-svg\"] path { stroke-dashoffset: 0 !important; }\r\n [data-slot=\"scrollytelling-timeline\"],\r\n [data-slot=\"scrollytelling-nav\"],\r\n [data-slot=\"scrollytelling-debug\"] { display: none !important; }\r\n `}</style>\r\n </noscript>\r\n {/* ARIA live region for section announcements */}\r\n <div\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n className=\"sr-only\"\r\n >\r\n {activeSection &&\r\n sections.find((s) => s.id === activeSection)?.label &&\r\n `Now viewing: ${sections.find((s) => s.id === activeSection)?.label}`}\r\n </div>\r\n </div>\r\n </ScrollytellingContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nScrollytelling.displayName = \"Scrollytelling\";\r\n\r\nexport { Scrollytelling };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface ScrollytellingTrackProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Scroll snap behavior */\r\n snapType?: \"none\" | \"mandatory\" | \"proximity\";\r\n}\r\n\r\n/**\r\n * Container that holds scrollable sections. Optionally enables scroll snapping.\r\n */\r\nconst ScrollytellingTrack = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingTrackProps\r\n>(({ className, snapType = \"none\", children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-track\"\r\n data-snap={snapType !== \"none\" ? snapType : undefined}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nScrollytellingTrack.displayName = \"ScrollytellingTrack\";\r\n\r\nexport { ScrollytellingTrack };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useScroll, useMotionValueEvent } from \"framer-motion\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n SectionContext,\r\n useScrollytelling,\r\n type SectionContextValue,\r\n} from \"./use-scrollytelling\";\r\n\r\nexport interface ScrollytellingSectionProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onProgress\"> {\r\n /** Unique section identifier (required) */\r\n id: string;\r\n /** Label for timeline/nav display */\r\n label?: string;\r\n /** Viewport heights to scroll while pinned (0 = no pinning) */\r\n pinDuration?: number;\r\n /** Minimum height when not pinned */\r\n minHeight?: string;\r\n /** Section background color */\r\n backgroundColor?: string;\r\n /** Callback with local progress (0-1) */\r\n onScrollProgress?: (progress: number) => void;\r\n}\r\n\r\n/**\r\n * A section within the scrollytelling experience.\r\n * Supports sticky pinning and provides local progress context.\r\n */\r\nconst ScrollytellingSection = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingSectionProps\r\n>(\r\n (\r\n {\r\n id,\r\n label,\r\n pinDuration = 0,\r\n minHeight = \"100vh\",\r\n backgroundColor,\r\n className,\r\n children,\r\n onScrollProgress,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const sectionRef = React.useRef<HTMLDivElement>(null);\r\n const { activeSection, registerSection, unregisterSection } =\r\n useScrollytelling();\r\n\r\n const [localProgress, setLocalProgress] = React.useState(0);\r\n const isPinned = pinDuration > 0;\r\n const isActive = activeSection === id;\r\n\r\n // Register section with parent context\r\n React.useEffect(() => {\r\n if (sectionRef.current) {\r\n registerSection({ id, label, element: sectionRef.current });\r\n }\r\n return () => unregisterSection(id);\r\n }, [id, label, registerSection, unregisterSection]);\r\n\r\n // Track local progress within section bounds\r\n const { scrollYProgress } = useScroll({\r\n target: sectionRef,\r\n offset: [\"start end\", \"end start\"],\r\n });\r\n\r\n useMotionValueEvent(scrollYProgress, \"change\", (latest: number) => {\r\n setLocalProgress(latest);\r\n onScrollProgress?.(latest);\r\n });\r\n\r\n const contextValue = React.useMemo<SectionContextValue>(\r\n () => ({\r\n id,\r\n progress: localProgress,\r\n isActive,\r\n isPinned,\r\n }),\r\n [id, localProgress, isActive, isPinned]\r\n );\r\n\r\n // Calculate section height for pinned sections\r\n const sectionHeight = isPinned\r\n ? `${(1 + pinDuration) * 100}vh`\r\n : minHeight;\r\n\r\n return (\r\n <SectionContext.Provider value={contextValue}>\r\n <div\r\n ref={(node) => {\r\n (sectionRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n }}\r\n id={id}\r\n data-slot=\"scrollytelling-section\"\r\n data-pinned={isPinned ? \"\" : undefined}\r\n data-active={isActive ? \"\" : undefined}\r\n className={cn(className)}\r\n style={{\r\n minHeight: sectionHeight,\r\n backgroundColor,\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n {isPinned ? (\r\n <div\r\n data-slot=\"scrollytelling-section-sticky\"\r\n style={{\r\n position: \"sticky\",\r\n top: 0,\r\n height: \"100vh\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n ) : (\r\n children\r\n )}\r\n </div>\r\n </SectionContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingSection.displayName = \"ScrollytellingSection\";\r\n\r\nexport { ScrollytellingSection };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface ScrollytellingContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Horizontal alignment */\r\n align?: \"start\" | \"center\" | \"end\";\r\n /** Vertical justification */\r\n justify?: \"start\" | \"center\" | \"end\";\r\n /** Maximum content width */\r\n maxWidth?: string;\r\n /** Content padding */\r\n padding?: string;\r\n}\r\n\r\n/**\r\n * Content wrapper with alignment and layout controls.\r\n */\r\nconst ScrollytellingContent = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingContentProps\r\n>(\r\n (\r\n {\r\n align = \"center\",\r\n justify = \"center\",\r\n maxWidth,\r\n padding,\r\n className,\r\n children,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-content\"\r\n data-align={align}\r\n data-justify={justify}\r\n className={cn(className)}\r\n style={{\r\n maxWidth,\r\n padding,\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingContent.displayName = \"ScrollytellingContent\";\r\n\r\nexport { ScrollytellingContent };\r\n","/** Animation preset configurations for reveal effects */\r\nexport const animationPresets = {\r\n fade: {\r\n hidden: { opacity: 0 },\r\n visible: { opacity: 1 },\r\n },\r\n \"fade-up\": {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: { opacity: 1, y: 0 },\r\n },\r\n \"fade-down\": {\r\n hidden: { opacity: 0, y: -20 },\r\n visible: { opacity: 1, y: 0 },\r\n },\r\n \"fade-left\": {\r\n hidden: { opacity: 0, x: 20 },\r\n visible: { opacity: 1, x: 0 },\r\n },\r\n \"fade-right\": {\r\n hidden: { opacity: 0, x: -20 },\r\n visible: { opacity: 1, x: 0 },\r\n },\r\n scale: {\r\n hidden: { opacity: 0, scale: 0.8 },\r\n visible: { opacity: 1, scale: 1 },\r\n },\r\n \"scale-up\": {\r\n hidden: { opacity: 0, scale: 0.5 },\r\n visible: { opacity: 1, scale: 1 },\r\n },\r\n blur: {\r\n hidden: { opacity: 0, filter: \"blur(10px)\" },\r\n visible: { opacity: 1, filter: \"blur(0px)\" },\r\n },\r\n flip: {\r\n hidden: { opacity: 0, rotateX: 90 },\r\n visible: { opacity: 1, rotateX: 0 },\r\n },\r\n} as const;\r\n\r\nexport type AnimationPreset = keyof typeof animationPresets;\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { motion, type Easing } from \"framer-motion\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytellingSection, useScrollytelling } from \"./use-scrollytelling\";\r\nimport { animationPresets, type AnimationPreset } from \"./animations\";\r\n\r\nexport interface ScrollytellingRevealProps {\r\n /** Progress point(s) to trigger animation. Single number or [start, end] range */\r\n trigger?: number | [number, number];\r\n /** Animation preset name */\r\n animation?: AnimationPreset;\r\n /** Animation duration in milliseconds */\r\n duration?: number;\r\n /** Delay before animation starts in milliseconds */\r\n delay?: number;\r\n /** CSS easing function */\r\n easing?: Easing;\r\n /** Stay revealed after trigger (default: true) */\r\n persist?: boolean;\r\n /** Additional CSS class names */\r\n className?: string;\r\n /** Inline styles */\r\n style?: React.CSSProperties;\r\n /** Child elements */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Reveals content with animation based on section scroll progress.\r\n */\r\nconst ScrollytellingReveal = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingRevealProps\r\n>(\r\n (\r\n {\r\n trigger = 0.3,\r\n animation = \"fade-up\",\r\n duration = 600,\r\n delay = 0,\r\n easing = \"easeOut\",\r\n persist = true,\r\n className,\r\n children,\r\n style,\r\n },\r\n ref\r\n ) => {\r\n const { progress } = useScrollytellingSection();\r\n const { reducedMotion } = useScrollytelling();\r\n\r\n const preset = animationPresets[animation];\r\n const [triggerStart, triggerEnd] = Array.isArray(trigger)\r\n ? trigger\r\n : [trigger, trigger + 0.1];\r\n\r\n // Calculate animation progress (0 = hidden, 1 = visible)\r\n const calculateProgress = React.useCallback(() => {\r\n if (progress < triggerStart) return 0;\r\n if (progress >= triggerEnd) return persist ? 1 : 0;\r\n return (progress - triggerStart) / (triggerEnd - triggerStart);\r\n }, [progress, triggerStart, triggerEnd, persist]);\r\n\r\n const animProgress = calculateProgress();\r\n\r\n // Interpolate styles based on progress\r\n const interpolatedStyle = React.useMemo(() => {\r\n const result: Record<string, number | string> = {};\r\n const hidden = preset.hidden as Record<string, number | string>;\r\n const visible = preset.visible as Record<string, number | string>;\r\n\r\n for (const key of Object.keys(visible)) {\r\n const from = hidden[key] ?? visible[key];\r\n const to = visible[key];\r\n\r\n if (typeof from === \"number\" && typeof to === \"number\") {\r\n result[key] = from + (to - from) * animProgress;\r\n } else if (typeof from === \"string\" && typeof to === \"string\") {\r\n // Handle blur filter\r\n const fromBlurMatch = from.match(/blur\\((\\d+)px\\)/);\r\n const toBlurMatch = to.match(/blur\\((\\d+)px\\)/);\r\n if (fromBlurMatch && toBlurMatch) {\r\n const fromBlur = parseFloat(fromBlurMatch[1]);\r\n const toBlur = parseFloat(toBlurMatch[1]);\r\n result[key] = `blur(${fromBlur + (toBlur - fromBlur) * animProgress}px)`;\r\n } else {\r\n result[key] = animProgress >= 0.5 ? to : from;\r\n }\r\n } else {\r\n result[key] = animProgress >= 0.5 ? to : from;\r\n }\r\n }\r\n return result;\r\n }, [preset, animProgress]);\r\n\r\n // Skip animation for reduced motion preference\r\n if (reducedMotion) {\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-reveal\"\r\n className={cn(className)}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n data-slot=\"scrollytelling-reveal\"\r\n className={cn(className)}\r\n animate={interpolatedStyle}\r\n transition={{\r\n duration: duration / 1000,\r\n delay: delay / 1000,\r\n ease: easing,\r\n }}\r\n style={style}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingReveal.displayName = \"ScrollytellingReveal\";\r\n\r\nexport { ScrollytellingReveal };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useScroll, useMotionValueEvent, MotionValue } from \"framer-motion\";\r\n\r\ninterface UseScrollProgressOptions {\r\n /** Scroll offset configuration [start, end] */\r\n offset?: [string, string];\r\n /** Callback fired when progress changes */\r\n onProgress?: (progress: number) => void;\r\n}\r\n\r\ninterface UseScrollProgressReturn {\r\n /** Current progress value (0-1) */\r\n progress: number;\r\n /** Framer Motion motion value for direct animation binding */\r\n scrollYProgress: MotionValue<number>;\r\n}\r\n\r\n/**\r\n * Hook to track scroll progress within an element's viewport intersection.\r\n * Uses Framer Motion's useScroll for efficient GPU-accelerated tracking.\r\n *\r\n * @param elementRef - Ref to the element to track\r\n * @param options - Configuration options\r\n * @returns Progress value and motion value\r\n */\r\nfunction useScrollProgress(\r\n elementRef: React.RefObject<HTMLElement | null>,\r\n options: UseScrollProgressOptions = {}\r\n): UseScrollProgressReturn {\r\n const { offset = [\"start end\", \"end start\"], onProgress } = options;\r\n const [progress, setProgress] = React.useState(0);\r\n\r\n const { scrollYProgress } = useScroll({\r\n target: elementRef,\r\n offset: offset as [\"start end\", \"end start\"],\r\n });\r\n\r\n useMotionValueEvent(scrollYProgress, \"change\", (latest: number) => {\r\n setProgress(latest);\r\n onProgress?.(latest);\r\n });\r\n\r\n return { progress, scrollYProgress };\r\n}\r\n\r\nexport { useScrollProgress, type UseScrollProgressOptions, type UseScrollProgressReturn };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytellingSection } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingBackgroundProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Image or video source */\r\n src: string;\r\n /** Media type */\r\n type?: \"image\" | \"video\";\r\n /** Alt text for accessibility */\r\n alt?: string;\r\n /** Parallax speed (0 = fixed, 1 = normal, 0.5 = half speed) */\r\n parallax?: number;\r\n /** Background position */\r\n position?: string;\r\n /** Overlay color with opacity (e.g., 'rgba(0,0,0,0.5)') */\r\n overlay?: string;\r\n /** Object fit behavior */\r\n objectFit?: \"cover\" | \"contain\" | \"fill\";\r\n}\r\n\r\nconst ScrollytellingBackground = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingBackgroundProps\r\n>(\r\n (\r\n {\r\n src,\r\n type = \"image\",\r\n alt = \"\",\r\n parallax = 0,\r\n position = \"center\",\r\n overlay,\r\n objectFit = \"cover\",\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { progress } = useScrollytellingSection();\r\n const [yOffset, setYOffset] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n if (parallax === 0) return;\r\n // Negative offset creates upward parallax (image moves slower than scroll)\r\n const offset = -progress * 100 * (1 - parallax);\r\n setYOffset(offset);\r\n }, [progress, parallax]);\r\n\r\n const insetValue =\r\n parallax !== 0 ? `-${Math.abs(1 - parallax) * 50}%` : \"0\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-background\"\r\n className={cn(className)}\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n overflow: \"hidden\",\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n <div\r\n data-slot=\"scrollytelling-background-container\"\r\n style={{\r\n position: \"absolute\",\r\n top: insetValue,\r\n right: insetValue,\r\n bottom: insetValue,\r\n left: insetValue,\r\n transform: parallax !== 0 ? `translateY(${yOffset}%)` : undefined,\r\n }}\r\n >\r\n {type === \"image\" ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n data-slot=\"scrollytelling-background-image\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit,\r\n objectPosition: position,\r\n }}\r\n />\r\n ) : (\r\n <video\r\n src={src}\r\n data-slot=\"scrollytelling-background-video\"\r\n autoPlay\r\n muted\r\n loop\r\n playsInline\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit,\r\n objectPosition: position,\r\n }}\r\n />\r\n )}\r\n </div>\r\n\r\n {overlay && (\r\n <div\r\n data-slot=\"scrollytelling-background-overlay\"\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundColor: overlay,\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingBackground.displayName = \"ScrollytellingBackground\";\r\n\r\nexport { ScrollytellingBackground, type ScrollytellingBackgroundProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytellingSection, useScrollytelling } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingCounterProps\r\n extends React.HTMLAttributes<HTMLSpanElement> {\r\n /** Starting value */\r\n from: number;\r\n /** Ending value */\r\n to: number;\r\n /** Progress range [start, end] */\r\n trigger: [number, number];\r\n /** Number format */\r\n format?: \"standard\" | \"compact\" | \"currency\" | \"percent\";\r\n /** Locale for formatting */\r\n locale?: string;\r\n /** Currency code if format='currency' */\r\n currency?: string;\r\n /** Decimal places */\r\n decimals?: number;\r\n /** Prefix (e.g., \"$\") */\r\n prefix?: string;\r\n /** Suffix (e.g., \" users\") */\r\n suffix?: string;\r\n /** Easing function */\r\n easing?: \"linear\" | \"easeOut\" | \"easeInOut\";\r\n}\r\n\r\nconst easingFunctions = {\r\n linear: (t: number) => t,\r\n easeOut: (t: number) => 1 - Math.pow(1 - t, 3),\r\n easeInOut: (t: number) =>\r\n t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2,\r\n};\r\n\r\nconst ScrollytellingCounter = React.forwardRef<\r\n HTMLSpanElement,\r\n ScrollytellingCounterProps\r\n>(\r\n (\r\n {\r\n from,\r\n to,\r\n trigger,\r\n format = \"standard\",\r\n locale = \"en-US\",\r\n currency = \"USD\",\r\n decimals,\r\n prefix = \"\",\r\n suffix = \"\",\r\n easing = \"easeOut\",\r\n className,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { reducedMotion } = useScrollytelling();\r\n const { progress } = useScrollytellingSection();\r\n const [displayValue, setDisplayValue] = React.useState(from);\r\n\r\n const formatter = React.useMemo(() => {\r\n const options: Intl.NumberFormatOptions = {\r\n maximumFractionDigits: decimals ?? (format === \"percent\" ? 1 : 0),\r\n minimumFractionDigits: decimals ?? 0,\r\n };\r\n\r\n if (format === \"compact\") {\r\n options.notation = \"compact\";\r\n } else if (format === \"currency\") {\r\n options.style = \"currency\";\r\n options.currency = currency;\r\n } else if (format === \"percent\") {\r\n options.style = \"percent\";\r\n }\r\n\r\n return new Intl.NumberFormat(locale, options);\r\n }, [format, locale, currency, decimals]);\r\n\r\n React.useEffect(() => {\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n\r\n // Guard against division by zero\r\n if (range === 0) {\r\n setDisplayValue(progress >= start ? to : from);\r\n return;\r\n }\r\n\r\n // Clamp progress to trigger range\r\n const clampedProgress = Math.max(0, Math.min(1, (progress - start) / range));\r\n\r\n // Apply easing\r\n const easedProgress = reducedMotion\r\n ? clampedProgress\r\n : easingFunctions[easing](clampedProgress);\r\n\r\n // Interpolate value\r\n const value = from + (to - from) * easedProgress;\r\n\r\n setDisplayValue(value);\r\n }, [progress, trigger, from, to, easing, reducedMotion]);\r\n\r\n const formattedValue = React.useMemo(() => {\r\n if (format === \"percent\") {\r\n return formatter.format(displayValue / 100);\r\n }\r\n return formatter.format(displayValue);\r\n }, [displayValue, formatter, format]);\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n data-slot=\"scrollytelling-counter\"\r\n className={cn(className)}\r\n aria-label={`${prefix}${formattedValue}${suffix}`}\r\n {...props}\r\n >\r\n {prefix}\r\n {formattedValue}\r\n {suffix}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingCounter.displayName = \"ScrollytellingCounter\";\r\n\r\nexport { ScrollytellingCounter, type ScrollytellingCounterProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytellingSection } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingHighlightProps\r\n extends React.HTMLAttributes<HTMLElement> {\r\n /** Text content to highlight */\r\n children: string;\r\n /** Progress range for highlight [start, end] */\r\n trigger: [number, number];\r\n /** Highlight granularity */\r\n mode?: \"word\" | \"sentence\" | \"character\";\r\n /** Highlighted text color */\r\n highlightColor?: string;\r\n /** Unhighlighted text color */\r\n baseColor?: string;\r\n /** Highlight background */\r\n highlightBg?: string;\r\n /** Typography element */\r\n as?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n}\r\n\r\nfunction splitText(\r\n text: string,\r\n mode: \"word\" | \"sentence\" | \"character\"\r\n): string[] {\r\n switch (mode) {\r\n case \"character\":\r\n return text.split(\"\");\r\n case \"sentence\":\r\n // Split by sentence-ending punctuation, keeping the punctuation\r\n return (\r\n text\r\n .match(/[^.!?]+[.!?]*/g)\r\n ?.map((s) => s.trim())\r\n .filter(Boolean) || [text]\r\n );\r\n case \"word\":\r\n default:\r\n return text.split(/\\s+/).filter(Boolean);\r\n }\r\n}\r\n\r\nconst ScrollytellingHighlight = React.forwardRef<\r\n HTMLElement,\r\n ScrollytellingHighlightProps\r\n>(\r\n (\r\n {\r\n children,\r\n trigger,\r\n mode = \"word\",\r\n highlightColor = \"hsl(var(--foreground))\",\r\n baseColor = \"hsl(var(--muted-foreground))\",\r\n highlightBg,\r\n as: Component = \"p\",\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { progress } = useScrollytellingSection();\r\n const segments = React.useMemo(\r\n () => splitText(children, mode),\r\n [children, mode]\r\n );\r\n\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n const normalizedProgress =\r\n range === 0 ? (progress >= start ? 1 : 0) : Math.max(0, Math.min(1, (progress - start) / range));\r\n const activeIndex = Math.floor(normalizedProgress * segments.length);\r\n\r\n return (\r\n <Component\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n data-slot=\"scrollytelling-highlight\"\r\n className={cn(className)}\r\n style={style}\r\n {...props}\r\n >\r\n {segments.map((segment, index) => {\r\n const isHighlighted = index <= activeIndex;\r\n const separator = mode === \"character\" ? \"\" : \" \";\r\n\r\n return (\r\n <span\r\n key={index}\r\n data-slot=\"scrollytelling-highlight-segment\"\r\n data-highlighted={isHighlighted || undefined}\r\n style={{\r\n color: isHighlighted ? highlightColor : baseColor,\r\n backgroundColor: isHighlighted ? highlightBg : undefined,\r\n transition:\r\n \"color 0.2s ease, background-color 0.2s ease\",\r\n }}\r\n >\r\n {segment}\r\n {index < segments.length - 1 ? separator : \"\"}\r\n </span>\r\n );\r\n })}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingHighlight.displayName = \"ScrollytellingHighlight\";\r\n\r\nexport { ScrollytellingHighlight, type ScrollytellingHighlightProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytellingSection } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingTransitionProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Transition effect */\r\n effect?: \"crossfade\" | \"wipe-up\" | \"wipe-down\" | \"zoom\" | \"blur\";\r\n /** Transition start/end as progress range */\r\n trigger?: [number, number];\r\n}\r\n\r\nconst transitionEffects = {\r\n crossfade: {\r\n style: (progress: number) => ({\r\n opacity: 1 - progress,\r\n }),\r\n },\r\n \"wipe-up\": {\r\n style: (progress: number) => ({\r\n clipPath: `inset(${progress * 100}% 0 0 0)`,\r\n }),\r\n },\r\n \"wipe-down\": {\r\n style: (progress: number) => ({\r\n clipPath: `inset(0 0 ${progress * 100}% 0)`,\r\n }),\r\n },\r\n zoom: {\r\n style: (progress: number) => ({\r\n transform: `scale(${1 + progress * 0.2})`,\r\n opacity: 1 - progress,\r\n }),\r\n },\r\n blur: {\r\n style: (progress: number) => ({\r\n filter: `blur(${progress * 10}px)`,\r\n opacity: 1 - progress,\r\n }),\r\n },\r\n};\r\n\r\nconst ScrollytellingTransition = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingTransitionProps\r\n>(\r\n (\r\n {\r\n effect = \"crossfade\",\r\n trigger = [0.8, 1],\r\n className,\r\n children,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { progress } = useScrollytellingSection();\r\n\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n const normalizedProgress =\r\n range === 0 ? (progress >= start ? 1 : 0) : Math.max(0, Math.min(1, (progress - start) / range));\r\n\r\n const transitionStyle = transitionEffects[effect].style(normalizedProgress);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-transition\"\r\n data-effect={effect}\r\n className={cn(className)}\r\n style={{\r\n ...style,\r\n ...transitionStyle,\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingTransition.displayName = \"ScrollytellingTransition\";\r\n\r\nexport { ScrollytellingTransition, type ScrollytellingTransitionProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytelling } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingTimelineProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Position on screen */\r\n position?: \"left\" | \"right\";\r\n /** Show section labels */\r\n showLabels?: boolean;\r\n /** Show progress line */\r\n showProgress?: boolean;\r\n /** Hide on mobile */\r\n hideOnMobile?: boolean;\r\n /** Offset from edge */\r\n offset?: string | number;\r\n}\r\n\r\nconst ScrollytellingTimeline = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingTimelineProps\r\n>(\r\n (\r\n {\r\n position = \"right\",\r\n showLabels = true,\r\n showProgress = true,\r\n hideOnMobile = true,\r\n offset = \"1rem\",\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { progress, activeSection, sections, goToSection } =\r\n useScrollytelling();\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n data-slot=\"scrollytelling-timeline\"\r\n data-position={position}\r\n data-hide-mobile={hideOnMobile || undefined}\r\n aria-label=\"Scroll progress and navigation\"\r\n className={cn(className)}\r\n style={{\r\n position: \"fixed\",\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n [position]: offset,\r\n zIndex: 50,\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n {/* Progress track */}\r\n <div data-slot=\"scrollytelling-timeline-track\">\r\n {/* Progress fill */}\r\n {showProgress && (\r\n <div\r\n data-slot=\"scrollytelling-timeline-progress\"\r\n style={{ height: `${progress * 100}%` }}\r\n role=\"progressbar\"\r\n aria-valuenow={Math.round(progress * 100)}\r\n aria-valuemin={0}\r\n aria-valuemax={100}\r\n aria-label=\"Scroll progress\"\r\n />\r\n )}\r\n\r\n {/* Section markers */}\r\n <div data-slot=\"scrollytelling-timeline-markers\" role=\"tablist\">\r\n {sections.map((section, index) => {\r\n const markerPosition =\r\n (index / Math.max(sections.length - 1, 1)) * 100;\r\n const isActive = section.id === activeSection;\r\n\r\n return (\r\n <button\r\n key={section.id}\r\n type=\"button\"\r\n role=\"tab\"\r\n data-slot=\"scrollytelling-timeline-marker\"\r\n data-active={isActive || undefined}\r\n aria-selected={isActive}\r\n aria-label={section.label || `Section ${index + 1}`}\r\n onClick={() => goToSection(section.id)}\r\n style={{ top: `${markerPosition}%` }}\r\n >\r\n {showLabels && section.label && (\r\n <span data-slot=\"scrollytelling-timeline-label\">\r\n {section.label}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </nav>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingTimeline.displayName = \"ScrollytellingTimeline\";\r\n\r\nexport { ScrollytellingTimeline, type ScrollytellingTimelineProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useScrollytelling } from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingNavProps extends React.HTMLAttributes<HTMLElement> {\r\n /** Position */\r\n position?: \"left\" | \"right\" | \"bottom\";\r\n /** Nav style */\r\n variant?: \"dots\" | \"lines\" | \"numbers\";\r\n /** Show tooltips with section labels */\r\n tooltips?: boolean;\r\n /** Offset from edge */\r\n offset?: string | number;\r\n}\r\n\r\nconst ScrollytellingNav = React.forwardRef<\r\n HTMLElement,\r\n ScrollytellingNavProps\r\n>(\r\n (\r\n {\r\n position = \"right\",\r\n variant = \"dots\",\r\n tooltips = true,\r\n offset = \"1rem\",\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { activeSection, sections, goToSection } = useScrollytelling();\r\n\r\n const isHorizontal = position === \"bottom\";\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n data-slot=\"scrollytelling-nav\"\r\n data-position={position}\r\n data-variant={variant}\r\n aria-label=\"Section navigation\"\r\n className={cn(className)}\r\n style={{\r\n position: \"fixed\",\r\n ...(isHorizontal\r\n ? {\r\n bottom: offset,\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n }\r\n : {\r\n top: \"50%\",\r\n [position]: offset,\r\n transform: \"translateY(-50%)\",\r\n }),\r\n zIndex: 50,\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n <div\r\n data-slot=\"scrollytelling-nav-list\"\r\n role=\"tablist\"\r\n style={{\r\n display: \"flex\",\r\n flexDirection: isHorizontal ? \"row\" : \"column\",\r\n gap: \"0.5rem\",\r\n }}\r\n >\r\n {sections.map((section, index) => {\r\n const isActive = section.id === activeSection;\r\n\r\n return (\r\n <button\r\n key={section.id}\r\n type=\"button\"\r\n role=\"tab\"\r\n data-slot=\"scrollytelling-nav-item\"\r\n data-variant={variant}\r\n data-active={isActive || undefined}\r\n aria-selected={isActive}\r\n aria-label={section.label || `Go to section ${index + 1}`}\r\n title={tooltips ? section.label : undefined}\r\n onClick={() => goToSection(section.id)}\r\n >\r\n {variant === \"numbers\" && <span>{index + 1}</span>}\r\n <span className=\"sr-only\">\r\n {section.label || `Section ${index + 1}`}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </nav>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingNav.displayName = \"ScrollytellingNav\";\r\n\r\nexport { ScrollytellingNav, type ScrollytellingNavProps };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n useScrollytelling,\r\n useScrollytellingSection,\r\n} from \"./use-scrollytelling\";\r\n\r\ninterface ScrollytellingDebugProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Position of debug panel */\r\n position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\r\n}\r\n\r\n/** FPS counter hook */\r\nfunction useFPS() {\r\n const [fps, setFps] = React.useState(0);\r\n const frameRef = React.useRef(0);\r\n const lastTimeRef = React.useRef(performance.now());\r\n\r\n React.useEffect(() => {\r\n let animationId: number;\r\n\r\n const measureFPS = () => {\r\n frameRef.current++;\r\n const now = performance.now();\r\n const elapsed = now - lastTimeRef.current;\r\n\r\n if (elapsed >= 1000) {\r\n setFps(Math.round((frameRef.current * 1000) / elapsed));\r\n frameRef.current = 0;\r\n lastTimeRef.current = now;\r\n }\r\n\r\n animationId = requestAnimationFrame(measureFPS);\r\n };\r\n\r\n animationId = requestAnimationFrame(measureFPS);\r\n return () => cancelAnimationFrame(animationId);\r\n }, []);\r\n\r\n return fps;\r\n}\r\n\r\nconst ScrollytellingDebug = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingDebugProps\r\n>(({ position = \"bottom-right\", className, style, ...props }, ref) => {\r\n const { progress, activeSection, direction, reducedMotion, sections } =\r\n useScrollytelling();\r\n const fps = useFPS();\r\n\r\n const positionStyles: React.CSSProperties = {\r\n position: \"fixed\",\r\n zIndex: 9999,\r\n ...(position.includes(\"top\") ? { top: \"1rem\" } : { bottom: \"1rem\" }),\r\n ...(position.includes(\"left\") ? { left: \"1rem\" } : { right: \"1rem\" }),\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-debug\"\r\n className={cn(className)}\r\n style={{ ...positionStyles, ...style }}\r\n {...props}\r\n >\r\n <div data-slot=\"scrollytelling-debug-content\">\r\n <div data-slot=\"scrollytelling-debug-header\">Scrollytelling Debug</div>\r\n <dl data-slot=\"scrollytelling-debug-list\">\r\n <div>\r\n <dt>Progress</dt>\r\n <dd>{(progress * 100).toFixed(1)}%</dd>\r\n </div>\r\n <div>\r\n <dt>Active Section</dt>\r\n <dd>{activeSection || \"none\"}</dd>\r\n </div>\r\n <div>\r\n <dt>Direction</dt>\r\n <dd>{direction || \"idle\"}</dd>\r\n </div>\r\n <div>\r\n <dt>FPS</dt>\r\n <dd data-warning={fps < 30 || undefined}>{fps}</dd>\r\n </div>\r\n <div>\r\n <dt>Reduced Motion</dt>\r\n <dd>{reducedMotion ? \"Yes\" : \"No\"}</dd>\r\n </div>\r\n <div>\r\n <dt>Sections</dt>\r\n <dd>{sections.length}</dd>\r\n </div>\r\n </dl>\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nScrollytellingDebug.displayName = \"ScrollytellingDebug\";\r\n\r\n/**\r\n * Section-level debug component.\r\n * Use inside a ScrollytellingSection to see section-specific debug info.\r\n */\r\nconst ScrollytellingSectionDebug = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingDebugProps\r\n>(({ position = \"top-left\", className, style, ...props }, ref) => {\r\n const { id, progress, isActive, isPinned } = useScrollytellingSection();\r\n\r\n const positionStyles: React.CSSProperties = {\r\n position: \"absolute\",\r\n zIndex: 100,\r\n ...(position.includes(\"top\") ? { top: \"0.5rem\" } : { bottom: \"0.5rem\" }),\r\n ...(position.includes(\"left\") ? { left: \"0.5rem\" } : { right: \"0.5rem\" }),\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"scrollytelling-section-debug\"\r\n className={cn(className)}\r\n style={{ ...positionStyles, ...style }}\r\n {...props}\r\n >\r\n <dl>\r\n <div>\r\n <dt>Section</dt>\r\n <dd>{id}</dd>\r\n </div>\r\n <div>\r\n <dt>Progress</dt>\r\n <dd>{(progress * 100).toFixed(1)}%</dd>\r\n </div>\r\n <div>\r\n <dt>Active</dt>\r\n <dd>{isActive ? \"Yes\" : \"No\"}</dd>\r\n </div>\r\n <div>\r\n <dt>Pinned</dt>\r\n <dd>{isPinned ? \"Yes\" : \"No\"}</dd>\r\n </div>\r\n </dl>\r\n </div>\r\n );\r\n});\r\n\r\nScrollytellingSectionDebug.displayName = \"ScrollytellingSectionDebug\";\r\n\r\nexport {\r\n ScrollytellingDebug,\r\n ScrollytellingSectionDebug,\r\n type ScrollytellingDebugProps,\r\n};\r\n","import { useEffect, useLayoutEffect } from \"react\";\r\n\r\n/**\r\n * SSR-safe useLayoutEffect hook.\r\n * Uses useEffect on server (where useLayoutEffect warns), useLayoutEffect on client.\r\n * Use this for DOM measurements and synchronous updates that need to happen before paint.\r\n */\r\nconst useIsomorphicLayoutEffect =\r\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\r\n\r\nexport { useIsomorphicLayoutEffect };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport {\r\n useScrollytellingSection,\r\n useScrollytelling,\r\n} from \"./use-scrollytelling\";\r\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-effect\";\r\n\r\nexport interface ScrollytellingMediaProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Media source URL */\r\n src: string;\r\n /** Media type */\r\n type: \"video\" | \"image\" | \"svg\";\r\n /** Progress range for animation [start, end] */\r\n trigger?: [number, number];\r\n /** SVG animation type */\r\n animation?: \"draw\" | \"reveal\";\r\n /** Alt text for images */\r\n alt?: string;\r\n /** Poster image for video */\r\n poster?: string;\r\n /** Loop video within trigger range */\r\n loop?: boolean;\r\n /** Mobile behavior: 'poster' shows static image (default), 'scrub' enables full scrubbing */\r\n mobileMode?: \"poster\" | \"scrub\";\r\n}\r\n\r\ninterface VideoMediaProps {\r\n src: string;\r\n poster?: string;\r\n trigger: [number, number];\r\n loop: boolean;\r\n progress: number;\r\n reducedMotion: boolean;\r\n isMobile: boolean;\r\n mobileMode: \"poster\" | \"scrub\";\r\n}\r\n\r\n/** Video scrubbing component */\r\nconst VideoMedia = React.forwardRef<HTMLVideoElement, VideoMediaProps>(\r\n (\r\n {\r\n src,\r\n poster,\r\n trigger,\r\n loop,\r\n progress,\r\n reducedMotion,\r\n isMobile,\r\n mobileMode,\r\n },\r\n ref\r\n ) => {\r\n const videoRef = React.useRef<HTMLVideoElement>(null);\r\n const [duration, setDuration] = React.useState(0);\r\n const [isReady, setIsReady] = React.useState(false);\r\n const [loadError, setLoadError] = React.useState(false);\r\n const rafRef = React.useRef<number>(0);\r\n\r\n React.useImperativeHandle(ref, () => videoRef.current!);\r\n\r\n const handleLoadedMetadata = React.useCallback(() => {\r\n if (videoRef.current) {\r\n setDuration(videoRef.current.duration);\r\n setIsReady(true);\r\n }\r\n }, []);\r\n\r\n const handleError = React.useCallback(() => {\r\n setLoadError(true);\r\n }, []);\r\n\r\n // Show poster on mobile when mobileMode is 'poster'\r\n const showPosterOnly = isMobile && mobileMode === \"poster\";\r\n\r\n // Scrub video based on progress using requestAnimationFrame\r\n useIsomorphicLayoutEffect(() => {\r\n if (!isReady || !videoRef.current || reducedMotion || showPosterOnly)\r\n return;\r\n\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n if (range <= 0) return;\r\n\r\n // Cancel previous animation frame\r\n if (rafRef.current) {\r\n cancelAnimationFrame(rafRef.current);\r\n }\r\n\r\n rafRef.current = requestAnimationFrame(() => {\r\n if (!videoRef.current) return;\r\n\r\n const normalizedProgress = Math.max(\r\n 0,\r\n Math.min(1, (progress - start) / range)\r\n );\r\n\r\n let targetProgress = normalizedProgress;\r\n if (loop && normalizedProgress >= 1) {\r\n targetProgress = normalizedProgress % 1;\r\n }\r\n\r\n const targetTime = targetProgress * duration;\r\n\r\n // Only update if difference is significant (avoid micro-updates)\r\n if (Math.abs(videoRef.current.currentTime - targetTime) > 0.05) {\r\n videoRef.current.currentTime = targetTime;\r\n }\r\n });\r\n\r\n return () => {\r\n if (rafRef.current) {\r\n cancelAnimationFrame(rafRef.current);\r\n }\r\n };\r\n }, [progress, trigger, duration, loop, isReady, reducedMotion, showPosterOnly]);\r\n\r\n // Show poster image on mobile for battery optimization or on error\r\n if ((showPosterOnly || loadError) && poster) {\r\n return (\r\n <img\r\n src={poster}\r\n alt=\"\"\r\n data-slot=\"scrollytelling-media-poster\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <video\r\n ref={videoRef}\r\n src={src}\r\n poster={poster}\r\n data-slot=\"scrollytelling-media-video\"\r\n muted\r\n playsInline\r\n preload=\"auto\"\r\n onLoadedMetadata={handleLoadedMetadata}\r\n onError={handleError}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n }}\r\n />\r\n );\r\n }\r\n);\r\nVideoMedia.displayName = \"VideoMedia\";\r\n\r\ninterface SVGMediaProps {\r\n src: string;\r\n animation: \"draw\" | \"reveal\";\r\n trigger: [number, number];\r\n progress: number;\r\n reducedMotion: boolean;\r\n}\r\n\r\n/** SVG drawing/reveal component */\r\nconst SVGMedia = React.forwardRef<HTMLDivElement, SVGMediaProps>(\r\n ({ src, animation, trigger, progress, reducedMotion }, ref) => {\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const [pathLength, setPathLength] = React.useState(0);\r\n const [svgContent, setSvgContent] = React.useState<string | null>(null);\r\n const [loadError, setLoadError] = React.useState(false);\r\n\r\n React.useImperativeHandle(ref, () => containerRef.current!);\r\n\r\n // Load SVG content with AbortController for cleanup\r\n React.useEffect(() => {\r\n const controller = new AbortController();\r\n setSvgContent(null);\r\n setLoadError(false);\r\n\r\n fetch(src, { signal: controller.signal })\r\n .then((res) => {\r\n if (!res.ok) throw new Error(\"Failed to load SVG\");\r\n return res.text();\r\n })\r\n .then(setSvgContent)\r\n .catch((err) => {\r\n if (err.name !== \"AbortError\") {\r\n setLoadError(true);\r\n }\r\n });\r\n\r\n return () => controller.abort();\r\n }, [src]);\r\n\r\n // Calculate path length after SVG loads\r\n useIsomorphicLayoutEffect(() => {\r\n if (!containerRef.current || !svgContent) return;\r\n\r\n const path = containerRef.current.querySelector(\"path\");\r\n if (path) {\r\n setPathLength(path.getTotalLength());\r\n }\r\n }, [svgContent]);\r\n\r\n // Calculate animation progress\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n const normalizedProgress =\r\n range > 0 ? Math.max(0, Math.min(1, (progress - start) / range)) : 0;\r\n const drawProgress = reducedMotion ? 1 : normalizedProgress;\r\n\r\n // Apply stroke-dashoffset for draw animation\r\n const dashOffset = pathLength * (1 - drawProgress);\r\n\r\n if (loadError) {\r\n return (\r\n <div\r\n ref={containerRef}\r\n data-slot=\"scrollytelling-media-svg\"\r\n data-error=\"true\"\r\n >\r\n Failed to load SVG\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n data-slot=\"scrollytelling-media-svg\"\r\n data-animation={animation}\r\n style={\r\n {\r\n \"--svg-path-length\": pathLength,\r\n \"--svg-dash-offset\": dashOffset,\r\n } as React.CSSProperties\r\n }\r\n dangerouslySetInnerHTML={svgContent ? { __html: svgContent } : undefined}\r\n />\r\n );\r\n }\r\n);\r\nSVGMedia.displayName = \"SVGMedia\";\r\n\r\ninterface ImageMediaProps {\r\n src: string;\r\n alt: string;\r\n trigger: [number, number];\r\n progress: number;\r\n reducedMotion: boolean;\r\n}\r\n\r\n/** Image reveal component */\r\nconst ImageMedia = React.forwardRef<HTMLImageElement, ImageMediaProps>(\r\n ({ src, alt, trigger, progress, reducedMotion }, ref) => {\r\n const [start, end] = trigger;\r\n const range = end - start;\r\n const normalizedProgress =\r\n range > 0 ? Math.max(0, Math.min(1, (progress - start) / range)) : 0;\r\n const revealProgress = reducedMotion ? 1 : normalizedProgress;\r\n\r\n return (\r\n <img\r\n ref={ref}\r\n src={src}\r\n alt={alt}\r\n data-slot=\"scrollytelling-media-image\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n clipPath: `inset(0 ${(1 - revealProgress) * 100}% 0 0)`,\r\n transition: reducedMotion ? \"none\" : \"clip-path 0.1s ease-out\",\r\n }}\r\n />\r\n );\r\n }\r\n);\r\nImageMedia.displayName = \"ImageMedia\";\r\n\r\n/** Detect mobile device based on viewport width */\r\nfunction useIsMobile(): boolean {\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n let timeoutId: ReturnType<typeof setTimeout>;\r\n\r\n const checkMobile = () => {\r\n // Debounce resize checks\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => {\r\n setIsMobile(window.innerWidth <= 768);\r\n }, 100);\r\n };\r\n\r\n // Initial check without debounce\r\n setIsMobile(window.innerWidth <= 768);\r\n\r\n window.addEventListener(\"resize\", checkMobile);\r\n return () => {\r\n clearTimeout(timeoutId);\r\n window.removeEventListener(\"resize\", checkMobile);\r\n };\r\n }, []);\r\n\r\n return isMobile;\r\n}\r\n\r\n/**\r\n * Scroll-controlled media component for video scrubbing, SVG drawing, and image reveals.\r\n * Supports mobile poster fallback for battery optimization.\r\n *\r\n * @warning SVG loading uses dangerouslySetInnerHTML. Only use with trusted SVG sources.\r\n * For untrusted content, sanitize with DOMPurify before use.\r\n */\r\nconst ScrollytellingMedia = React.forwardRef<\r\n HTMLDivElement,\r\n ScrollytellingMediaProps\r\n>(\r\n (\r\n {\r\n src,\r\n type,\r\n trigger = [0, 1],\r\n animation = \"draw\",\r\n alt = \"\",\r\n poster,\r\n loop = false,\r\n mobileMode = \"poster\",\r\n className,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { reducedMotion } = useScrollytelling();\r\n const { progress } = useScrollytellingSection();\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const isMobile = useIsMobile();\r\n\r\n React.useImperativeHandle(ref, () => containerRef.current!);\r\n\r\n // Log security warning for SVG in development\r\n React.useEffect(() => {\r\n if (type === \"svg\" && process.env.NODE_ENV === \"development\") {\r\n console.warn(\r\n \"[ScrollytellingMedia] SVG loading uses dangerouslySetInnerHTML. \" +\r\n \"Only use with trusted SVG sources. For untrusted content, \" +\r\n \"sanitize with DOMPurify before use.\"\r\n );\r\n }\r\n }, [type]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n data-slot=\"scrollytelling-media\"\r\n data-type={type}\r\n className={cn(className)}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n ...style,\r\n }}\r\n {...props}\r\n >\r\n {type === \"video\" && (\r\n <VideoMedia\r\n src={src}\r\n poster={poster}\r\n trigger={trigger}\r\n loop={loop}\r\n progress={progress}\r\n reducedMotion={reducedMotion}\r\n isMobile={isMobile}\r\n mobileMode={mobileMode}\r\n />\r\n )}\r\n {type === \"svg\" && (\r\n <SVGMedia\r\n src={src}\r\n animation={animation}\r\n trigger={trigger}\r\n progress={progress}\r\n reducedMotion={reducedMotion}\r\n />\r\n )}\r\n {type === \"image\" && (\r\n <ImageMedia\r\n src={src}\r\n alt={alt}\r\n trigger={trigger}\r\n progress={progress}\r\n reducedMotion={reducedMotion}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nScrollytellingMedia.displayName = \"ScrollytellingMedia\";\r\n\r\nexport { ScrollytellingMedia };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * The root component for the Select.\r\n */\r\nconst Select = SelectPrimitive.Root;\r\n\r\n/**\r\n * Groups multiple Select items.\r\n */\r\nconst SelectGroup = SelectPrimitive.Group;\r\n\r\n/**\r\n * Displays the selected value.\r\n */\r\nconst SelectValue = SelectPrimitive.Value;\r\n\r\nexport interface SelectTriggerProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {}\r\n\r\n/**\r\n * The trigger that opens the select dropdown.\r\n */\r\nconst SelectTrigger = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\r\n SelectTriggerProps\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n data-slot=\"select-trigger\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown data-slot=\"select-icon\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n));\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\r\n\r\nexport interface SelectContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {}\r\n\r\n/**\r\n * The content that pops up when the select is triggered.\r\n */\r\nconst SelectContent = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.Content>,\r\n SelectContentProps\r\n>(({ className, children, position = \"popper\", sideOffset = 4, ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n data-slot=\"select-content\"\r\n position={position}\r\n sideOffset={sideOffset}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport data-slot=\"select-viewport\">\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n));\r\nSelectContent.displayName = SelectPrimitive.Content.displayName;\r\n\r\nexport interface SelectItemProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {}\r\n\r\n/**\r\n * An item within the select dropdown.\r\n */\r\nconst SelectItem = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.Item>,\r\n SelectItemProps\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n data-slot=\"select-item\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <span data-slot=\"select-item-indicator-wrapper\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check data-slot=\"select-check-icon\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n));\r\nSelectItem.displayName = SelectPrimitive.Item.displayName;\r\n\r\nexport interface SelectLabelProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {}\r\n\r\n/**\r\n * A label for a group of items in the select.\r\n */\r\nconst SelectLabel = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.Label>,\r\n SelectLabelProps\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n data-slot=\"select-label\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\r\n\r\nexport interface SelectSeparatorProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {}\r\n\r\n/**\r\n * A separator to visually divide items in the select.\r\n */\r\nconst SelectSeparator = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.Separator>,\r\n SelectSeparatorProps\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"select-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\r\n\r\nexport interface SelectScrollUpButtonProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton> {}\r\n\r\n/**\r\n * Scroll up button for long select lists.\r\n */\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.ScrollUpButton>,\r\n SelectScrollUpButtonProps\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n data-slot=\"select-scroll-up-button\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ChevronUp data-slot=\"select-chevron-up\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n));\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\r\n\r\nexport interface SelectScrollDownButtonProps\r\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton> {}\r\n\r\n/**\r\n * Scroll down button for long select lists.\r\n */\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ComponentRef<typeof SelectPrimitive.ScrollDownButton>,\r\n SelectScrollDownButtonProps\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n data-slot=\"select-scroll-down-button\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ChevronDown data-slot=\"select-chevron-down\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n));\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName;\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectItem,\r\n SelectLabel,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n};\r\n","\"use client\";\r\n\r\nimport { Toaster as SonnerToaster, toast } from \"sonner\";\r\n\r\ntype ToasterPosition =\r\n | \"top-left\"\r\n | \"top-center\"\r\n | \"top-right\"\r\n | \"bottom-left\"\r\n | \"bottom-center\"\r\n | \"bottom-right\";\r\n\r\nexport interface ToasterProps\r\n extends React.ComponentPropsWithoutRef<typeof SonnerToaster> {\r\n /** Position of the toasts */\r\n position?: ToasterPosition;\r\n /** Theme mode */\r\n theme?: \"light\" | \"dark\" | \"system\";\r\n /** Use richer colors for success/error */\r\n richColors?: boolean;\r\n /** Show close button on toasts */\r\n closeButton?: boolean;\r\n /** Offset from screen edges */\r\n offset?: string | number;\r\n /** Duration in milliseconds */\r\n duration?: number;\r\n /** Maximum visible toasts */\r\n visibleToasts?: number;\r\n /** Expand toasts on hover */\r\n expand?: boolean;\r\n}\r\n\r\n/**\r\n * Toast notification container.\r\n * Place once at your app root.\r\n *\r\n * @example\r\n * // In your root layout\r\n * <Toaster position=\"bottom-right\" richColors />\r\n *\r\n * // Trigger toasts anywhere\r\n * import { toast } from \"@nexa-ui-kit/core\"\r\n * toast.success(\"Saved successfully!\")\r\n */\r\nfunction Toaster({\r\n position = \"bottom-right\",\r\n theme = \"system\",\r\n richColors = true,\r\n closeButton = false,\r\n offset = \"16px\",\r\n duration = 4000,\r\n visibleToasts = 3,\r\n expand = false,\r\n ...props\r\n}: ToasterProps) {\r\n return (\r\n <SonnerToaster\r\n data-slot=\"toaster\"\r\n position={position}\r\n theme={theme}\r\n richColors={richColors}\r\n closeButton={closeButton}\r\n offset={offset}\r\n duration={duration}\r\n visibleToasts={visibleToasts}\r\n expand={expand}\r\n toastOptions={{\r\n classNames: {\r\n toast: \"nexa-toast\",\r\n title: \"nexa-toast-title\",\r\n description: \"nexa-toast-description\",\r\n actionButton: \"nexa-toast-action\",\r\n cancelButton: \"nexa-toast-cancel\",\r\n closeButton: \"nexa-toast-close\",\r\n success: \"nexa-toast-success\",\r\n error: \"nexa-toast-error\",\r\n warning: \"nexa-toast-warning\",\r\n info: \"nexa-toast-info\",\r\n loading: \"nexa-toast-loading\",\r\n },\r\n ...props.toastOptions,\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\nToaster.displayName = \"Toaster\";\r\n\r\nexport { Toaster, toast };\r\n\r\n// Re-export types for consumers\r\nexport type { ToasterPosition };\r\n","import * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Stepper Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface StepperContextValue {\r\n value: number;\r\n onValueChange: (value: number) => void;\r\n orientation: \"horizontal\" | \"vertical\";\r\n stepsCount: number;\r\n registerStep: (index: number) => void;\r\n linear: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nconst StepperContext = React.createContext<StepperContextValue | null>(null);\r\n\r\nfunction useStepperContext() {\r\n const context = React.useContext(StepperContext);\r\n if (!context) {\r\n throw new Error(\"Stepper components must be used within a Stepper\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperItem Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface StepperItemContextValue {\r\n index: number;\r\n isActive: boolean;\r\n isCompleted: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nconst StepperItemContext =\r\n React.createContext<StepperItemContextValue | null>(null);\r\n\r\nfunction useStepperItemContext() {\r\n const context = React.useContext(StepperItemContext);\r\n if (!context) {\r\n throw new Error(\r\n \"StepperTrigger/Content must be used within a StepperItem\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Stepper\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\r\n\r\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Controlled current step (0-indexed) */\r\n value?: number;\r\n /** Default step for uncontrolled usage */\r\n defaultValue?: number;\r\n /** Callback when step changes */\r\n onValueChange?: (value: number) => void;\r\n /** Orientation of the stepper */\r\n orientation?: StepperOrientation;\r\n /** If true, must complete steps in order */\r\n linear?: boolean;\r\n /** Whether the stepper is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Stepper component for multi-step flows.\r\n * @example\r\n * <Stepper defaultValue={0}>\r\n * <StepperList>\r\n * <StepperItem index={0}>\r\n * <StepperTrigger>Step 1</StepperTrigger>\r\n * </StepperItem>\r\n * <StepperSeparator />\r\n * <StepperItem index={1}>\r\n * <StepperTrigger>Step 2</StepperTrigger>\r\n * </StepperItem>\r\n * </StepperList>\r\n * <StepperContent index={0}>Content 1</StepperContent>\r\n * <StepperContent index={1}>Content 2</StepperContent>\r\n * </Stepper>\r\n */\r\nconst Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\r\n (\r\n {\r\n value: controlledValue,\r\n defaultValue = 0,\r\n onValueChange,\r\n orientation = \"horizontal\",\r\n linear = false,\r\n disabled = false,\r\n style,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledValue, setUncontrolledValue] =\r\n React.useState(defaultValue);\r\n const [stepsCount, setStepsCount] = React.useState(0);\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: number) => {\r\n if (!isControlled) {\r\n setUncontrolledValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n },\r\n [isControlled, onValueChange],\r\n );\r\n\r\n const registerStep = React.useCallback((index: number) => {\r\n setStepsCount((prev) => Math.max(prev, index + 1));\r\n }, []);\r\n\r\n const stepperStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 16,\r\n ...style,\r\n };\r\n\r\n return (\r\n <StepperContext.Provider\r\n value={{\r\n value,\r\n onValueChange: handleValueChange,\r\n orientation,\r\n stepsCount,\r\n registerStep,\r\n linear,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"stepper\"\r\n data-orientation={orientation}\r\n data-disabled={disabled || undefined}\r\n style={stepperStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </StepperContext.Provider>\r\n );\r\n },\r\n);\r\nStepper.displayName = \"Stepper\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperListProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Container for step indicators.\r\n */\r\nconst StepperList = React.forwardRef<HTMLDivElement, StepperListProps>(\r\n ({ style, children, ...props }, ref) => {\r\n const { orientation } = useStepperContext();\r\n\r\n const listStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tablist\"\r\n data-slot=\"stepper-list\"\r\n data-orientation={orientation}\r\n style={listStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nStepperList.displayName = \"StepperList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperItemProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Step index (0-based) */\r\n index: number;\r\n /** Whether this step is disabled */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Container for a single step indicator.\r\n */\r\nconst StepperItem = React.forwardRef<HTMLDivElement, StepperItemProps>(\r\n ({ index, disabled: itemDisabled, style, children, ...props }, ref) => {\r\n const stepper = useStepperContext();\r\n\r\n React.useEffect(() => {\r\n stepper.registerStep(index);\r\n }, [index, stepper.registerStep]);\r\n\r\n const isActive = stepper.value === index;\r\n const isCompleted = stepper.value > index;\r\n const disabled = stepper.disabled || itemDisabled;\r\n\r\n const itemStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n ...style,\r\n };\r\n\r\n return (\r\n <StepperItemContext.Provider\r\n value={{ index, isActive, isCompleted, disabled: !!disabled }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"stepper-item\"\r\n data-state={isActive ? \"active\" : isCompleted ? \"completed\" : \"inactive\"}\r\n data-disabled={disabled || undefined}\r\n style={itemStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </StepperItemContext.Provider>\r\n );\r\n },\r\n);\r\nStepperItem.displayName = \"StepperItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Custom icon to display instead of step number */\r\n icon?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Clickable step indicator button.\r\n */\r\nconst StepperTrigger = React.forwardRef<HTMLButtonElement, StepperTriggerProps>(\r\n ({ icon, style, children, ...props }, ref) => {\r\n const stepper = useStepperContext();\r\n const item = useStepperItemContext();\r\n\r\n const canNavigate =\r\n !item.disabled &&\r\n (!stepper.linear || item.index <= stepper.value + 1);\r\n\r\n const handleClick = () => {\r\n if (canNavigate) {\r\n stepper.onValueChange(item.index);\r\n }\r\n };\r\n\r\n const triggerStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n padding: 0,\r\n backgroundColor: \"transparent\",\r\n border: \"none\",\r\n cursor: canNavigate ? \"pointer\" : \"not-allowed\",\r\n opacity: item.disabled ? 0.5 : 1,\r\n ...style,\r\n };\r\n\r\n const indicatorStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: 32,\r\n height: 32,\r\n borderRadius: \"50%\",\r\n fontSize: 14,\r\n fontWeight: 500,\r\n flexShrink: 0,\r\n transition: \"all 0.2s ease\",\r\n backgroundColor: item.isActive\r\n ? \"#18181b\"\r\n : item.isCompleted\r\n ? \"#18181b\"\r\n : \"#e5e7eb\",\r\n color: item.isActive || item.isCompleted ? \"#ffffff\" : \"#71717a\",\r\n };\r\n\r\n const labelStyle: React.CSSProperties = {\r\n fontSize: 14,\r\n fontWeight: item.isActive ? 500 : 400,\r\n color: item.isActive ? \"#18181b\" : item.isCompleted ? \"#18181b\" : \"#71717a\",\r\n transition: \"all 0.2s ease\",\r\n };\r\n\r\n const renderIndicatorContent = () => {\r\n if (icon) return icon;\r\n if (item.isCompleted) {\r\n return (\r\n <svg\r\n width={16}\r\n height={16}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth={2}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n );\r\n }\r\n return item.index + 1;\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"tab\"\r\n data-slot=\"stepper-trigger\"\r\n aria-selected={item.isActive}\r\n data-state={item.isActive ? \"active\" : item.isCompleted ? \"completed\" : \"inactive\"}\r\n data-disabled={item.disabled || !canNavigate || undefined}\r\n disabled={item.disabled || !canNavigate}\r\n tabIndex={item.isActive ? 0 : -1}\r\n style={triggerStyle}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <span data-slot=\"stepper-indicator\" style={indicatorStyle}>\r\n {renderIndicatorContent()}\r\n </span>\r\n {children && (\r\n <span data-slot=\"stepper-label\" style={labelStyle}>\r\n {children}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n },\r\n);\r\nStepperTrigger.displayName = \"StepperTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperSeparator\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperSeparatorProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Visual separator between steps.\r\n */\r\nconst StepperSeparator = React.forwardRef<HTMLDivElement, StepperSeparatorProps>(\r\n ({ style, ...props }, ref) => {\r\n const { orientation } = useStepperContext();\r\n\r\n const separatorStyle: React.CSSProperties = {\r\n flexGrow: 1,\r\n backgroundColor: \"#e5e7eb\",\r\n transition: \"background-color 0.2s ease\",\r\n ...(orientation === \"horizontal\"\r\n ? { height: 1, minWidth: 24 }\r\n : { width: 1, minHeight: 24, marginLeft: 16 }),\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"stepper-separator\"\r\n data-orientation={orientation}\r\n role=\"separator\"\r\n style={separatorStyle}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nStepperSeparator.displayName = \"StepperSeparator\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Step index this content belongs to */\r\n index: number;\r\n /** Force mount the content even when not active */\r\n forceMount?: boolean;\r\n}\r\n\r\n/**\r\n * Content panel for a step.\r\n */\r\nconst StepperContent = React.forwardRef<HTMLDivElement, StepperContentProps>(\r\n ({ index, forceMount = false, style, children, ...props }, ref) => {\r\n const { value, orientation } = useStepperContext();\r\n const isActive = value === index;\r\n\r\n if (!isActive && !forceMount) {\r\n return null;\r\n }\r\n\r\n const contentStyle: React.CSSProperties = {\r\n outline: \"none\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"tabpanel\"\r\n data-slot=\"stepper-content\"\r\n data-state={isActive ? \"active\" : \"inactive\"}\r\n data-orientation={orientation}\r\n tabIndex={0}\r\n hidden={!isActive}\r\n style={contentStyle}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\nStepperContent.displayName = \"StepperContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperTitle\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperTitleProps\r\n extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\n/**\r\n * Title for a step.\r\n */\r\nconst StepperTitle = React.forwardRef<HTMLHeadingElement, StepperTitleProps>(\r\n ({ style, children, ...props }, ref) => {\r\n const titleStyle: React.CSSProperties = {\r\n fontSize: 14,\r\n fontWeight: 500,\r\n lineHeight: 1.5,\r\n margin: 0,\r\n ...style,\r\n };\r\n\r\n return (\r\n <h4\r\n ref={ref}\r\n data-slot=\"stepper-title\"\r\n style={titleStyle}\r\n {...props}\r\n >\r\n {children}\r\n </h4>\r\n );\r\n },\r\n);\r\nStepperTitle.displayName = \"StepperTitle\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * StepperDescription\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface StepperDescriptionProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\n/**\r\n * Description for a step.\r\n */\r\nconst StepperDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n StepperDescriptionProps\r\n>(({ style, children, ...props }, ref) => {\r\n const descriptionStyle: React.CSSProperties = {\r\n fontSize: 12,\r\n color: \"#71717a\",\r\n lineHeight: 1.5,\r\n margin: 0,\r\n ...style,\r\n };\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n data-slot=\"stepper-description\"\r\n style={descriptionStyle}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n );\r\n});\r\nStepperDescription.displayName = \"StepperDescription\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * useStepper Hook\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\n/**\r\n * Hook for programmatic stepper control.\r\n * Must be used within a Stepper component.\r\n */\r\nfunction useStepper() {\r\n const context = useStepperContext();\r\n\r\n const goToStep = React.useCallback(\r\n (step: number) => {\r\n if (step >= 0 && step < context.stepsCount) {\r\n context.onValueChange(step);\r\n }\r\n },\r\n [context],\r\n );\r\n\r\n const nextStep = React.useCallback(() => {\r\n if (context.value < context.stepsCount - 1) {\r\n context.onValueChange(context.value + 1);\r\n }\r\n }, [context]);\r\n\r\n const prevStep = React.useCallback(() => {\r\n if (context.value > 0) {\r\n context.onValueChange(context.value - 1);\r\n }\r\n }, [context]);\r\n\r\n const reset = React.useCallback(() => {\r\n context.onValueChange(0);\r\n }, [context]);\r\n\r\n return {\r\n value: context.value,\r\n stepsCount: context.stepsCount,\r\n isFirst: context.value === 0,\r\n isLast: context.value === context.stepsCount - 1,\r\n goToStep,\r\n nextStep,\r\n prevStep,\r\n reset,\r\n };\r\n}\r\n\r\nexport {\r\n Stepper,\r\n StepperContent,\r\n StepperDescription,\r\n StepperItem,\r\n StepperList,\r\n StepperSeparator,\r\n StepperTitle,\r\n StepperTrigger,\r\n useStepper,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {}\r\n\r\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\r\n ({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table ref={ref} data-slot=\"table\" className={className} {...props} />\r\n </div>\r\n ),\r\n);\r\nTable.displayName = \"Table\";\r\n\r\nexport interface TableHeaderProps\r\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\r\n\r\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\r\n ({ className, ...props }, ref) => (\r\n <thead\r\n ref={ref}\r\n data-slot=\"table-header\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableHeader.displayName = \"TableHeader\";\r\n\r\nexport interface TableBodyProps\r\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\r\n\r\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} data-slot=\"table-body\" className={className} {...props} />\r\n ),\r\n);\r\nTableBody.displayName = \"TableBody\";\r\n\r\nexport interface TableFooterProps\r\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\r\n\r\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\r\n ({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n data-slot=\"table-footer\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableFooter.displayName = \"TableFooter\";\r\n\r\nexport interface TableRowProps\r\n extends React.HTMLAttributes<HTMLTableRowElement> {}\r\n\r\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\r\n ({ className, ...props }, ref) => (\r\n <tr ref={ref} data-slot=\"table-row\" className={className} {...props} />\r\n ),\r\n);\r\nTableRow.displayName = \"TableRow\";\r\n\r\nexport interface TableHeadProps\r\n extends React.ThHTMLAttributes<HTMLTableCellElement> {}\r\n\r\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\r\n ({ className, ...props }, ref) => (\r\n <th ref={ref} data-slot=\"table-head\" className={className} {...props} />\r\n ),\r\n);\r\nTableHead.displayName = \"TableHead\";\r\n\r\nexport interface TableCellProps\r\n extends React.TdHTMLAttributes<HTMLTableCellElement> {}\r\n\r\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} data-slot=\"table-cell\" className={className} {...props} />\r\n ),\r\n);\r\nTableCell.displayName = \"TableCell\";\r\n\r\nexport interface TableCaptionProps\r\n extends React.HTMLAttributes<HTMLTableCaptionElement> {}\r\n\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n TableCaptionProps\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n data-slot=\"table-caption\"\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nTableCaption.displayName = \"TableCaption\";\r\n\r\nexport interface TableToolbarProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst TableToolbar = React.forwardRef<HTMLDivElement, TableToolbarProps>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} data-slot=\"table-toolbar\" className={className} {...props} />\r\n ),\r\n);\r\nTableToolbar.displayName = \"TableToolbar\";\r\n\r\nexport interface TablePaginationProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst TablePaginationSection = React.forwardRef<\r\n HTMLDivElement,\r\n TablePaginationProps\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"table-pagination\"\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nTablePaginationSection.displayName = \"TablePaginationSection\";\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n TableToolbar,\r\n TablePaginationSection as TablePagination,\r\n};\r\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\r\n\r\nimport { cn } from \"../utils\";\r\nimport { Button, ButtonProps } from \"./button\";\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n data-slot=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-slot=\"pagination-content\"\r\n className={cn(\"flex flex-row items-center gap-1\", className)}\r\n {...props}\r\n />\r\n));\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n data-slot=\"pagination-item\"\r\n className={cn(\"\", className)}\r\n {...props}\r\n />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<ButtonProps, \"size\"> &\r\n React.ComponentProps<\"a\">;\r\n\r\nconst PaginationLink = ({\r\n className,\r\n isActive,\r\n size = \"icon\",\r\n ...props\r\n}: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\r\n data-slot=\"pagination-link\"\r\n data-active={isActive}\r\n className={cn(\r\n \"flex items-center justify-center rounded-md transition-colors\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\nconst PaginationPrevious = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pl-2.5\", className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pr-2.5\", className)}\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden\r\n data-slot=\"pagination-ellipsis\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n};\r\n","import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * Root component for the Alert Dialog.\r\n * Unlike Dialog, Alert Dialog requires explicit user action (Action/Cancel) to close.\r\n * @example\r\n * <AlertDialog>\r\n * <AlertDialogTrigger>Delete</AlertDialogTrigger>\r\n * <AlertDialogContent>\r\n * <AlertDialogHeader>\r\n * <AlertDialogTitle>Are you sure?</AlertDialogTitle>\r\n * <AlertDialogDescription>This action cannot be undone.</AlertDialogDescription>\r\n * </AlertDialogHeader>\r\n * <AlertDialogFooter>\r\n * <AlertDialogCancel>Cancel</AlertDialogCancel>\r\n * <AlertDialogAction>Continue</AlertDialogAction>\r\n * </AlertDialogFooter>\r\n * </AlertDialogContent>\r\n * </AlertDialog>\r\n */\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\n\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\n\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n ref={ref}\r\n data-slot=\"alert-dialog-overlay\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n data-slot=\"alert-dialog-content\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n </AlertDialogPrimitive.Content>\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n data-slot=\"alert-dialog-header\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n data-slot=\"alert-dialog-footer\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n data-slot=\"alert-dialog-title\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n data-slot=\"alert-dialog-description\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action\r\n ref={ref}\r\n data-slot=\"alert-dialog-action\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n data-slot=\"alert-dialog-cancel\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","import * as React from \"react\";\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * Scroll Area with custom cross-browser scrollbars.\r\n * Scrollbars overlay content without taking up space.\r\n * @example\r\n * <ScrollArea className=\"h-[200px] w-[350px]\">\r\n * <div className=\"p-4\">{longContent}</div>\r\n * </ScrollArea>\r\n */\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n data-slot=\"scroll-area\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport data-slot=\"scroll-area-viewport\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n));\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n data-slot=\"scroll-bar\"\r\n data-orientation={orientation}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb data-slot=\"scroll-bar-thumb\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n));\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\r\n\r\nexport { ScrollArea, ScrollBar };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\r\nimport type { ToggleVariant, ToggleSize } from \"./toggle\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nconst ToggleGroupContext = React.createContext<{\r\n variant?: ToggleVariant;\r\n size?: ToggleSize;\r\n}>({ variant: \"default\", size: \"default\" });\r\n\r\nexport type ToggleGroupProps = React.ComponentPropsWithoutRef<\r\n typeof ToggleGroupPrimitive.Root\r\n> & {\r\n /** Visual style variant applied to all items */\r\n variant?: ToggleVariant;\r\n /** Size preset applied to all items */\r\n size?: ToggleSize;\r\n};\r\n\r\n/**\r\n * A group of toggle items where single or multiple can be pressed.\r\n * @example\r\n * <ToggleGroup type=\"single\">\r\n * <ToggleGroupItem value=\"left\"><TextAlignLeft /></ToggleGroupItem>\r\n * <ToggleGroupItem value=\"center\"><TextAlignCenter /></ToggleGroupItem>\r\n * <ToggleGroupItem value=\"right\"><TextAlignRight /></ToggleGroupItem>\r\n * </ToggleGroup>\r\n */\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n ToggleGroupProps\r\n>(({ className, variant = \"default\", size = \"default\", children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root\r\n ref={ref}\r\n data-slot=\"toggle-group\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <ToggleGroupContext.Provider value={{ variant, size }}>\r\n {children}\r\n </ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n));\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\r\n\r\nexport type ToggleGroupItemProps = React.ComponentPropsWithoutRef<\r\n typeof ToggleGroupPrimitive.Item\r\n> & {\r\n variant?: ToggleVariant;\r\n size?: ToggleSize;\r\n};\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n ToggleGroupItemProps\r\n>(({ className, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext);\r\n const resolvedVariant = variant || context.variant || \"default\";\r\n const resolvedSize = size || context.size || \"default\";\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n data-slot=\"toggle-group-item\"\r\n data-variant={resolvedVariant}\r\n data-size={resolvedSize}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\r\n\r\nexport { ToggleGroup, ToggleGroupItem };\r\n","import * as React from \"react\";\r\nimport * as ToolbarPrimitive from \"@radix-ui/react-toolbar\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * Toolbar container with keyboard navigation (roving tabindex).\r\n * @example\r\n * <Toolbar>\r\n * <ToolbarToggleGroup type=\"single\">\r\n * <ToolbarToggleItem value=\"bold\">B</ToolbarToggleItem>\r\n * <ToolbarToggleItem value=\"italic\">I</ToolbarToggleItem>\r\n * </ToolbarToggleGroup>\r\n * <ToolbarSeparator />\r\n * <ToolbarButton>Save</ToolbarButton>\r\n * <ToolbarLink href=\"#\">Help</ToolbarLink>\r\n * </Toolbar>\r\n */\r\nconst Toolbar = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.Root\r\n ref={ref}\r\n data-slot=\"toolbar\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbar.displayName = ToolbarPrimitive.Root.displayName;\r\n\r\nconst ToolbarButton = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.Button>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Button>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.Button\r\n ref={ref}\r\n data-slot=\"toolbar-button\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbarButton.displayName = ToolbarPrimitive.Button.displayName;\r\n\r\nconst ToolbarLink = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.Link>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Link>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.Link\r\n ref={ref}\r\n data-slot=\"toolbar-link\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbarLink.displayName = ToolbarPrimitive.Link.displayName;\r\n\r\nconst ToolbarSeparator = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.Separator\r\n ref={ref}\r\n data-slot=\"toolbar-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbarSeparator.displayName = ToolbarPrimitive.Separator.displayName;\r\n\r\nconst ToolbarToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.ToggleGroup>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleGroup>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.ToggleGroup\r\n ref={ref}\r\n data-slot=\"toolbar-toggle-group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbarToggleGroup.displayName = ToolbarPrimitive.ToggleGroup.displayName;\r\n\r\nconst ToolbarToggleItem = React.forwardRef<\r\n React.ElementRef<typeof ToolbarPrimitive.ToggleItem>,\r\n React.ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleItem>\r\n>(({ className, ...props }, ref) => (\r\n <ToolbarPrimitive.ToggleItem\r\n ref={ref}\r\n data-slot=\"toolbar-toggle-item\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToolbarToggleItem.displayName = ToolbarPrimitive.ToggleItem.displayName;\r\n\r\nexport {\r\n Toolbar,\r\n ToolbarButton,\r\n ToolbarLink,\r\n ToolbarSeparator,\r\n ToolbarToggleGroup,\r\n ToolbarToggleItem,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/**\r\n * Toast provider. Wrap your app root with this to enable toast notifications.\r\n * For a simpler alternative, see the Sonner (Toaster) component.\r\n */\r\nconst ToastProvider = ToastPrimitive.Provider;\r\n\r\nconst ToastViewport = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitive.Viewport\r\n ref={ref}\r\n data-slot=\"toast-viewport\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToastViewport.displayName = ToastPrimitive.Viewport.displayName;\r\n\r\nexport type ToastVariant = \"default\" | \"destructive\";\r\n\r\nexport interface ToastProps\r\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root> {\r\n variant?: ToastVariant;\r\n}\r\n\r\n/**\r\n * Individual toast notification.\r\n * @example\r\n * <Toast variant=\"destructive\">\r\n * <ToastTitle>Error</ToastTitle>\r\n * <ToastDescription>Something went wrong.</ToastDescription>\r\n * </Toast>\r\n */\r\nconst Toast = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Root>,\r\n ToastProps\r\n>(({ className, variant = \"default\", ...props }, ref) => (\r\n <ToastPrimitive.Root\r\n ref={ref}\r\n data-slot=\"toast\"\r\n data-variant={variant}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToast.displayName = ToastPrimitive.Root.displayName;\r\n\r\nconst ToastAction = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitive.Action\r\n ref={ref}\r\n data-slot=\"toast-action\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToastAction.displayName = ToastPrimitive.Action.displayName;\r\n\r\nconst ToastClose = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Close>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitive.Close\r\n ref={ref}\r\n data-slot=\"toast-close\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </ToastPrimitive.Close>\r\n));\r\nToastClose.displayName = ToastPrimitive.Close.displayName;\r\n\r\nconst ToastTitle = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitive.Title\r\n ref={ref}\r\n data-slot=\"toast-title\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToastTitle.displayName = ToastPrimitive.Title.displayName;\r\n\r\nconst ToastDescription = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitive.Description\r\n ref={ref}\r\n data-slot=\"toast-description\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nToastDescription.displayName = ToastPrimitive.Description.displayName;\r\n\r\n// --- useToast hook for imperative toast creation ---\r\n\r\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\r\n\r\ntype ToasterToast = ToastProps & {\r\n id: string;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n action?: ToastActionElement;\r\n};\r\n\r\nconst TOAST_LIMIT = 5;\r\n\r\ntype Action =\r\n | { type: \"ADD_TOAST\"; toast: ToasterToast }\r\n | { type: \"UPDATE_TOAST\"; toast: Partial<ToasterToast> }\r\n | { type: \"DISMISS_TOAST\"; toastId?: string }\r\n | { type: \"REMOVE_TOAST\"; toastId?: string };\r\n\r\ninterface State {\r\n toasts: ToasterToast[];\r\n}\r\n\r\nlet count = 0;\r\nfunction genId() {\r\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\r\n return count.toString();\r\n}\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\nlet memoryState: State = { toasts: [] };\r\n\r\nfunction dispatch(action: Action) {\r\n memoryState = reducer(memoryState, action);\r\n listeners.forEach((listener) => listener(memoryState));\r\n}\r\n\r\nfunction reducer(state: State, action: Action): State {\r\n switch (action.type) {\r\n case \"ADD_TOAST\":\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n };\r\n case \"UPDATE_TOAST\":\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\r\n ),\r\n };\r\n case \"DISMISS_TOAST\": {\r\n const { toastId } = action;\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? { ...t, open: false }\r\n : t,\r\n ),\r\n };\r\n }\r\n case \"REMOVE_TOAST\":\r\n if (action.toastId === undefined) return { ...state, toasts: [] };\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n };\r\n }\r\n}\r\n\r\nfunction toast({ ...props }: Omit<ToasterToast, \"id\">) {\r\n const id = genId();\r\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\r\n dispatch({\r\n type: \"ADD_TOAST\",\r\n toast: { ...props, id, open: true, onOpenChange: (open) => { if (!open) dismiss(); } },\r\n });\r\n return { id, dismiss, update: (props: Partial<ToasterToast>) => dispatch({ type: \"UPDATE_TOAST\", toast: { ...props, id } }) };\r\n}\r\n\r\nfunction useToast() {\r\n const [state, setState] = React.useState<State>(memoryState);\r\n\r\n React.useEffect(() => {\r\n listeners.push(setState);\r\n return () => {\r\n const index = listeners.indexOf(setState);\r\n if (index > -1) listeners.splice(index, 1);\r\n };\r\n }, []);\r\n\r\n return {\r\n ...state,\r\n toast,\r\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\r\n };\r\n}\r\n\r\nexport {\r\n ToastProvider,\r\n ToastViewport,\r\n Toast,\r\n ToastTitle,\r\n ToastDescription,\r\n ToastClose,\r\n ToastAction,\r\n toast,\r\n useToast,\r\n};\r\n\r\nexport type { ToasterToast, ToastActionElement };\r\n","import * as React from \"react\";\r\n\r\nexport type AlertVariant = \"default\" | \"destructive\" | \"warning\" | \"info\";\r\n\r\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: AlertVariant;\r\n}\r\n\r\n/**\r\n * Alert component for displaying important messages.\r\n * @example\r\n * <Alert variant=\"destructive\">\r\n * <AlertTitle>Error</AlertTitle>\r\n * <AlertDescription>Something went wrong.</AlertDescription>\r\n * </Alert>\r\n */\r\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\r\n ({ variant = \"default\", className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n data-slot=\"alert\"\r\n data-variant={variant}\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nAlert.displayName = \"Alert\";\r\n\r\nexport interface AlertTitleProps\r\n extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nconst AlertTitle = React.forwardRef<HTMLHeadingElement, AlertTitleProps>(\r\n ({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n data-slot=\"alert-title\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nAlertTitle.displayName = \"AlertTitle\";\r\n\r\nexport interface AlertDescriptionProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst AlertDescription = React.forwardRef<HTMLDivElement, AlertDescriptionProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"alert-description\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nAlertDescription.displayName = \"AlertDescription\";\r\n\r\nexport { Alert, AlertTitle, AlertDescription };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nconst Sheet = DialogPrimitive.Root;\r\nconst SheetTrigger = DialogPrimitive.Trigger;\r\nconst SheetClose = DialogPrimitive.Close;\r\nconst SheetPortal = DialogPrimitive.Portal;\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n data-slot=\"sheet-overlay\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nSheetOverlay.displayName = \"SheetOverlay\";\r\n\r\nexport type SheetSide = \"top\" | \"bottom\" | \"left\" | \"right\";\r\n\r\nexport interface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\r\n side?: SheetSide;\r\n}\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n data-slot=\"sheet-content\"\r\n data-side={side}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close data-slot=\"sheet-close\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </SheetPortal>\r\n));\r\nSheetContent.displayName = \"SheetContent\";\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div data-slot=\"sheet-header\" className={cn(className)} {...props} />\r\n);\r\nSheetHeader.displayName = \"SheetHeader\";\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div data-slot=\"sheet-footer\" className={cn(className)} {...props} />\r\n);\r\nSheetFooter.displayName = \"SheetFooter\";\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n data-slot=\"sheet-title\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nSheetTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n data-slot=\"sheet-description\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nSheetDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n Sheet,\r\n SheetPortal,\r\n SheetOverlay,\r\n SheetTrigger,\r\n SheetClose,\r\n SheetContent,\r\n SheetHeader,\r\n SheetFooter,\r\n SheetTitle,\r\n SheetDescription,\r\n};\r\n","import * as React from \"react\";\r\n\r\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Container for empty state displays.\r\n * @example\r\n * <EmptyState>\r\n * <EmptyStateIcon><InboxIcon /></EmptyStateIcon>\r\n * <EmptyStateTitle>No results</EmptyStateTitle>\r\n * <EmptyStateDescription>Try adjusting your search.</EmptyStateDescription>\r\n * <EmptyStateAction><Button>Create new</Button></EmptyStateAction>\r\n * </EmptyState>\r\n */\r\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"empty-state\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nEmptyState.displayName = \"EmptyState\";\r\n\r\nexport interface EmptyStateIconProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst EmptyStateIcon = React.forwardRef<HTMLDivElement, EmptyStateIconProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"empty-state-icon\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nEmptyStateIcon.displayName = \"EmptyStateIcon\";\r\n\r\nexport interface EmptyStateTitleProps\r\n extends React.HTMLAttributes<HTMLHeadingElement> {}\r\n\r\nconst EmptyStateTitle = React.forwardRef<\r\n HTMLHeadingElement,\r\n EmptyStateTitleProps\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n data-slot=\"empty-state-title\"\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nEmptyStateTitle.displayName = \"EmptyStateTitle\";\r\n\r\nexport interface EmptyStateDescriptionProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {}\r\n\r\nconst EmptyStateDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n EmptyStateDescriptionProps\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n data-slot=\"empty-state-description\"\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nEmptyStateDescription.displayName = \"EmptyStateDescription\";\r\n\r\nexport interface EmptyStateActionProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst EmptyStateAction = React.forwardRef<HTMLDivElement, EmptyStateActionProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"empty-state-action\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nEmptyStateAction.displayName = \"EmptyStateAction\";\r\n\r\nexport {\r\n EmptyState,\r\n EmptyStateIcon,\r\n EmptyStateTitle,\r\n EmptyStateDescription,\r\n EmptyStateAction,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { AvatarSize } from \"./avatar\";\r\n\r\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Maximum number of avatars to show before truncating */\r\n max?: number;\r\n /** Size applied to the overflow indicator */\r\n size?: AvatarSize;\r\n}\r\n\r\n/**\r\n * Groups multiple Avatar components with optional overflow.\r\n * @example\r\n * <AvatarGroup max={3}>\r\n * <Avatar src=\"...\" fallback=\"A\" />\r\n * <Avatar src=\"...\" fallback=\"B\" />\r\n * <Avatar src=\"...\" fallback=\"C\" />\r\n * <Avatar src=\"...\" fallback=\"D\" />\r\n * </AvatarGroup>\r\n */\r\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\r\n ({ max, size, children, className, ...props }, ref) => {\r\n const childArray = React.Children.toArray(children);\r\n const shown = max ? childArray.slice(0, max) : childArray;\r\n const overflow = max ? Math.max(0, childArray.length - max) : 0;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"avatar-group\"\r\n data-size={size}\r\n className={className}\r\n {...props}\r\n >\r\n {shown}\r\n {overflow > 0 && (\r\n <span data-slot=\"avatar-group-overflow\" data-size={size}>\r\n +{overflow}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\nAvatarGroup.displayName = \"AvatarGroup\";\r\n\r\nexport { AvatarGroup };\r\n","import * as React from \"react\";\r\n\r\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\n/**\r\n * Card component for displaying statistics.\r\n * @example\r\n * <StatCard>\r\n * <StatIcon><DollarSign /></StatIcon>\r\n * <StatLabel>Revenue</StatLabel>\r\n * <StatValue>$12,345</StatValue>\r\n * <StatTrend direction=\"up\">+12%</StatTrend>\r\n * </StatCard>\r\n */\r\nconst StatCard = React.forwardRef<HTMLDivElement, StatCardProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"stat-card\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nStatCard.displayName = \"StatCard\";\r\n\r\nexport interface StatValueProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst StatValue = React.forwardRef<HTMLDivElement, StatValueProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"stat-value\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nStatValue.displayName = \"StatValue\";\r\n\r\nexport interface StatLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst StatLabel = React.forwardRef<HTMLDivElement, StatLabelProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"stat-label\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nStatLabel.displayName = \"StatLabel\";\r\n\r\nexport type StatTrendDirection = \"up\" | \"down\" | \"neutral\";\r\n\r\nexport interface StatTrendProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n direction?: StatTrendDirection;\r\n}\r\n\r\nconst StatTrend = React.forwardRef<HTMLSpanElement, StatTrendProps>(\r\n ({ direction = \"neutral\", className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n data-slot=\"stat-trend\"\r\n data-direction={direction}\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nStatTrend.displayName = \"StatTrend\";\r\n\r\nexport interface StatIconProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst StatIcon = React.forwardRef<HTMLDivElement, StatIconProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"stat-icon\"\r\n className={className}\r\n {...props}\r\n />\r\n ),\r\n);\r\nStatIcon.displayName = \"StatIcon\";\r\n\r\nexport { StatCard, StatValue, StatLabel, StatTrend, StatIcon };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NumberInput Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface NumberInputContextValue {\r\n value: number;\r\n onChange: (value: number) => void;\r\n min: number;\r\n max: number;\r\n step: number;\r\n disabled: boolean;\r\n increment: () => void;\r\n decrement: () => void;\r\n}\r\n\r\nconst NumberInputContext = React.createContext<NumberInputContextValue | null>(\r\n null,\r\n);\r\n\r\nfunction useNumberInputContext() {\r\n const context = React.useContext(NumberInputContext);\r\n if (!context) {\r\n throw new Error(\r\n \"NumberInput sub-components must be used within a NumberInput\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NumberInput\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NumberInputProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\r\n value?: number;\r\n defaultValue?: number;\r\n onChange?: (value: number) => void;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Number input with increment/decrement buttons and keyboard support.\r\n * @example\r\n * <NumberInput value={count} onChange={setCount} min={0} max={100}>\r\n * <NumberInputDecrement>-</NumberInputDecrement>\r\n * <NumberInputField />\r\n * <NumberInputIncrement>+</NumberInputIncrement>\r\n * </NumberInput>\r\n */\r\nconst NumberInput = React.forwardRef<HTMLDivElement, NumberInputProps>(\r\n (\r\n {\r\n value: controlledValue,\r\n defaultValue = 0,\r\n onChange,\r\n min = -Infinity,\r\n max = Infinity,\r\n step = 1,\r\n disabled = false,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [uncontrolledValue, setUncontrolledValue] =\r\n React.useState(defaultValue);\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const clamp = React.useCallback(\r\n (v: number) => {\r\n if (!Number.isFinite(v)) return value;\r\n return Math.min(max, Math.max(min, v));\r\n },\r\n [min, max, value],\r\n );\r\n\r\n const handleChange = React.useCallback(\r\n (newValue: number) => {\r\n const clamped = clamp(newValue);\r\n if (!isControlled) setUncontrolledValue(clamped);\r\n onChange?.(clamped);\r\n },\r\n [clamp, isControlled, onChange],\r\n );\r\n\r\n const increment = React.useCallback(\r\n () => handleChange(value + step),\r\n [handleChange, value, step],\r\n );\r\n\r\n const decrement = React.useCallback(\r\n () => handleChange(value - step),\r\n [handleChange, value, step],\r\n );\r\n\r\n return (\r\n <NumberInputContext.Provider\r\n value={{\r\n value,\r\n onChange: handleChange,\r\n min,\r\n max,\r\n step,\r\n disabled,\r\n increment,\r\n decrement,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n data-slot=\"number-input\"\r\n data-disabled={disabled || undefined}\r\n className={className}\r\n {...props}\r\n />\r\n </NumberInputContext.Provider>\r\n );\r\n },\r\n);\r\nNumberInput.displayName = \"NumberInput\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NumberInputField\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NumberInputFieldProps\r\n extends Omit<\r\n React.InputHTMLAttributes<HTMLInputElement>,\r\n \"value\" | \"onChange\" | \"type\"\r\n > {}\r\n\r\nconst NumberInputField = React.forwardRef<\r\n HTMLInputElement,\r\n NumberInputFieldProps\r\n>(({ className, ...props }, ref) => {\r\n const { value, onChange, min, max, disabled, increment, decrement } =\r\n useNumberInputContext();\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const parsed = parseFloat(e.target.value);\r\n if (Number.isFinite(parsed)) {\r\n onChange(parsed);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n increment();\r\n } else if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n decrement();\r\n }\r\n };\r\n\r\n return (\r\n <input\r\n ref={ref}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n role=\"spinbutton\"\r\n aria-valuemin={Number.isFinite(min) ? min : undefined}\r\n aria-valuemax={Number.isFinite(max) ? max : undefined}\r\n aria-valuenow={value}\r\n data-slot=\"number-input-field\"\r\n value={value}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n disabled={disabled}\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n});\r\nNumberInputField.displayName = \"NumberInputField\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * NumberInputIncrement / Decrement\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface NumberInputIncrementProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\nconst NumberInputIncrement = React.forwardRef<\r\n HTMLButtonElement,\r\n NumberInputIncrementProps\r\n>(({ className, ...props }, ref) => {\r\n const { increment, disabled, value, max } = useNumberInputContext();\r\n const atMax = Number.isFinite(max) && value >= max;\r\n const handlers = useRepeatAction(increment);\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n tabIndex={-1}\r\n data-slot=\"number-input-increment\"\r\n disabled={disabled || atMax}\r\n aria-label=\"Increment\"\r\n className={className}\r\n {...handlers}\r\n {...props}\r\n />\r\n );\r\n});\r\nNumberInputIncrement.displayName = \"NumberInputIncrement\";\r\n\r\nexport interface NumberInputDecrementProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\nconst NumberInputDecrement = React.forwardRef<\r\n HTMLButtonElement,\r\n NumberInputDecrementProps\r\n>(({ className, ...props }, ref) => {\r\n const { decrement, disabled, value, min } = useNumberInputContext();\r\n const atMin = Number.isFinite(min) && value <= min;\r\n const handlers = useRepeatAction(decrement);\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n tabIndex={-1}\r\n data-slot=\"number-input-decrement\"\r\n disabled={disabled || atMin}\r\n aria-label=\"Decrement\"\r\n className={className}\r\n {...handlers}\r\n {...props}\r\n />\r\n );\r\n});\r\nNumberInputDecrement.displayName = \"NumberInputDecrement\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * useRepeatAction hook\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nfunction useRepeatAction(action: () => void, delay = 400, interval = 100) {\r\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n const intervalRef = React.useRef<ReturnType<typeof setInterval> | undefined>(undefined);\r\n\r\n const stop = React.useCallback(() => {\r\n clearTimeout(timeoutRef.current);\r\n clearInterval(intervalRef.current);\r\n }, []);\r\n\r\n const start = React.useCallback(() => {\r\n action();\r\n timeoutRef.current = setTimeout(() => {\r\n intervalRef.current = setInterval(action, interval);\r\n }, delay);\r\n }, [action, delay, interval]);\r\n\r\n React.useEffect(() => stop, [stop]);\r\n\r\n return {\r\n onPointerDown: start,\r\n onPointerUp: stop,\r\n onPointerLeave: stop,\r\n };\r\n}\r\n\r\nexport {\r\n NumberInput,\r\n NumberInputField,\r\n NumberInputIncrement,\r\n NumberInputDecrement,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { OTPInput, OTPInputContext } from \"input-otp\";\r\nimport type { OTPInputProps, SlotProps } from \"input-otp\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * InputOTP\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport type InputOTPProps = OTPInputProps;\r\n\r\n/**\r\n * OTP input component for verification codes.\r\n * @example\r\n * <InputOTP maxLength={6}>\r\n * <InputOTPGroup>\r\n * <InputOTPSlot index={0} />\r\n * <InputOTPSlot index={1} />\r\n * <InputOTPSlot index={2} />\r\n * </InputOTPGroup>\r\n * <InputOTPSeparator />\r\n * <InputOTPGroup>\r\n * <InputOTPSlot index={3} />\r\n * <InputOTPSlot index={4} />\r\n * <InputOTPSlot index={5} />\r\n * </InputOTPGroup>\r\n * </InputOTP>\r\n */\r\nconst InputOTP = React.forwardRef<HTMLInputElement, InputOTPProps>(\r\n ({ className, containerClassName, ...props }, ref) => (\r\n <OTPInput\r\n ref={ref}\r\n data-slot=\"input-otp\"\r\n containerClassName={cn(\"flex items-center gap-2\", containerClassName)}\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nInputOTP.displayName = \"InputOTP\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * InputOTPGroup\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface InputOTPGroupProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst InputOTPGroup = React.forwardRef<HTMLDivElement, InputOTPGroupProps>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-slot=\"input-otp-group\"\r\n className={cn(\"flex items-center\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nInputOTPGroup.displayName = \"InputOTPGroup\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * InputOTPSlot\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface InputOTPSlotProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n index: number;\r\n}\r\n\r\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\r\n ({ index, className, ...props }, ref) => {\r\n const inputOTPContext = React.useContext(OTPInputContext);\r\n const slot = inputOTPContext.slots[index] as SlotProps | undefined;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"input-otp-slot\"\r\n data-active={slot?.isActive || undefined}\r\n data-filled={slot?.char ? true : undefined}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {slot?.char}\r\n {slot?.hasFakeCaret && (\r\n <div data-slot=\"input-otp-caret\">\r\n <div />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\nInputOTPSlot.displayName = \"InputOTPSlot\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * InputOTPSeparator\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface InputOTPSeparatorProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst InputOTPSeparator = React.forwardRef<\r\n HTMLDivElement,\r\n InputOTPSeparatorProps\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"separator\"\r\n data-slot=\"input-otp-separator\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\r\n\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n} from \"./command\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Combobox Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface ComboboxContextValue {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n}\r\n\r\nconst ComboboxContext = React.createContext<ComboboxContextValue | null>(null);\r\n\r\nfunction useComboboxContext() {\r\n const context = React.useContext(ComboboxContext);\r\n if (!context) {\r\n throw new Error(\"Combobox sub-components must be used within a Combobox\");\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Combobox\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxProps {\r\n open?: boolean;\r\n defaultOpen?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n value?: string;\r\n defaultValue?: string;\r\n onValueChange?: (value: string) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Searchable dropdown built on Command + Popover.\r\n * @example\r\n * <Combobox value={value} onValueChange={setValue}>\r\n * <ComboboxTrigger>Select framework...</ComboboxTrigger>\r\n * <ComboboxContent>\r\n * <ComboboxInput placeholder=\"Search...\" />\r\n * <ComboboxEmpty>No results.</ComboboxEmpty>\r\n * <ComboboxList>\r\n * <ComboboxItem value=\"react\">React</ComboboxItem>\r\n * </ComboboxList>\r\n * </ComboboxContent>\r\n * </Combobox>\r\n */\r\nconst Combobox: React.FC<ComboboxProps> = ({\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n value: controlledValue,\r\n defaultValue = \"\",\r\n onValueChange,\r\n children,\r\n}) => {\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\r\n const [uncontrolledValue, setUncontrolledValue] =\r\n React.useState(defaultValue);\r\n\r\n const isOpenControlled = controlledOpen !== undefined;\r\n const isValueControlled = controlledValue !== undefined;\r\n const open = isOpenControlled ? controlledOpen : uncontrolledOpen;\r\n const value = isValueControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isOpenControlled) setUncontrolledOpen(newOpen);\r\n onOpenChange?.(newOpen);\r\n },\r\n [isOpenControlled, onOpenChange],\r\n );\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: string) => {\r\n if (!isValueControlled) setUncontrolledValue(newValue);\r\n onValueChange?.(newValue);\r\n },\r\n [isValueControlled, onValueChange],\r\n );\r\n\r\n return (\r\n <ComboboxContext.Provider\r\n value={{\r\n open,\r\n onOpenChange: handleOpenChange,\r\n value,\r\n onValueChange: handleValueChange,\r\n }}\r\n >\r\n <Popover open={open} onOpenChange={handleOpenChange}>\r\n {children}\r\n </Popover>\r\n </ComboboxContext.Provider>\r\n );\r\n};\r\nCombobox.displayName = \"Combobox\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\nconst ComboboxTrigger = React.forwardRef<HTMLButtonElement, ComboboxTriggerProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <PopoverTrigger\r\n ref={ref}\r\n data-slot=\"combobox-trigger\"\r\n role=\"combobox\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n </PopoverTrigger>\r\n ),\r\n);\r\nComboboxTrigger.displayName = \"ComboboxTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst ComboboxContent = React.forwardRef<HTMLDivElement, ComboboxContentProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <PopoverContent ref={ref} data-slot=\"combobox-content\" className={cn(className)} {...props}>\r\n <Command>{children}</Command>\r\n </PopoverContent>\r\n ),\r\n);\r\nComboboxContent.displayName = \"ComboboxContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxInput\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxInputProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandInput> {}\r\n\r\nconst ComboboxInput = React.forwardRef<\r\n React.ElementRef<typeof CommandInput>,\r\n ComboboxInputProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandInput\r\n ref={ref}\r\n data-slot=\"combobox-input\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nComboboxInput.displayName = \"ComboboxInput\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxEmpty\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxEmptyProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandEmpty> {}\r\n\r\nconst ComboboxEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandEmpty>,\r\n ComboboxEmptyProps\r\n>((props, ref) => (\r\n <CommandEmpty ref={ref} data-slot=\"combobox-empty\" {...props} />\r\n));\r\nComboboxEmpty.displayName = \"ComboboxEmpty\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxListProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandList> {}\r\n\r\nconst ComboboxList = React.forwardRef<\r\n React.ElementRef<typeof CommandList>,\r\n ComboboxListProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandList\r\n ref={ref}\r\n data-slot=\"combobox-list\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nComboboxList.displayName = \"ComboboxList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxItemProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandItem> {\r\n value: string;\r\n}\r\n\r\nconst ComboboxItem = React.forwardRef<\r\n React.ElementRef<typeof CommandItem>,\r\n ComboboxItemProps\r\n>(({ className, value: itemValue, children, ...props }, ref) => {\r\n const { value, onValueChange, onOpenChange } = useComboboxContext();\r\n const isSelected = value === itemValue;\r\n\r\n return (\r\n <CommandItem\r\n ref={ref}\r\n data-slot=\"combobox-item\"\r\n data-selected={isSelected || undefined}\r\n value={itemValue}\r\n onSelect={() => {\r\n onValueChange(isSelected ? \"\" : itemValue);\r\n onOpenChange(false);\r\n }}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n </CommandItem>\r\n );\r\n});\r\nComboboxItem.displayName = \"ComboboxItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * ComboboxGroup\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface ComboboxGroupProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandGroup> {}\r\n\r\nconst ComboboxGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandGroup>,\r\n ComboboxGroupProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandGroup\r\n ref={ref}\r\n data-slot=\"combobox-group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nComboboxGroup.displayName = \"ComboboxGroup\";\r\n\r\nexport {\r\n Combobox,\r\n ComboboxTrigger,\r\n ComboboxContent,\r\n ComboboxInput,\r\n ComboboxEmpty,\r\n ComboboxList,\r\n ComboboxItem,\r\n ComboboxGroup,\r\n};\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { format } from \"date-fns\";\r\nimport { CalendarIcon } from \"lucide-react\";\r\nimport { cn } from \"../utils/cn\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\r\nimport { Calendar } from \"./calendar\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * DatePicker Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface DatePickerContextValue {\r\n value: Date | undefined;\r\n onChange: (date: Date | undefined) => void;\r\n onOpenChange: (open: boolean) => void;\r\n}\r\n\r\nconst DatePickerContext = React.createContext<DatePickerContextValue | null>(\r\n null,\r\n);\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * DatePicker\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface DatePickerProps {\r\n value?: Date;\r\n onChange?: (date: Date | undefined) => void;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n /** date-fns format string for display */\r\n formatStr?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Date picker composing Calendar + Popover.\r\n * @example\r\n * <DatePicker value={date} onChange={setDate}>\r\n * <DatePickerTrigger />\r\n * <DatePickerContent />\r\n * </DatePicker>\r\n */\r\nconst DatePicker: React.FC<DatePickerProps> = ({\r\n value,\r\n onChange,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n formatStr = \"PPP\",\r\n children,\r\n}) => {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleChange = React.useCallback(\r\n (date: Date | undefined) => {\r\n onChange?.(date);\r\n setOpen(false);\r\n },\r\n [onChange],\r\n );\r\n\r\n return (\r\n <DatePickerContext.Provider\r\n value={{ value, onChange: handleChange, onOpenChange: setOpen }}\r\n >\r\n <Popover open={open} onOpenChange={setOpen}>\r\n {children ?? (\r\n <>\r\n <DatePickerTrigger disabled={disabled}>\r\n {value ? format(value, formatStr) : placeholder}\r\n </DatePickerTrigger>\r\n <DatePickerContent />\r\n </>\r\n )}\r\n </Popover>\r\n </DatePickerContext.Provider>\r\n );\r\n};\r\nDatePicker.displayName = \"DatePicker\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * DatePickerTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface DatePickerTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\r\n\r\nconst DatePickerTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n DatePickerTriggerProps\r\n>(({ className, children, ...props }, ref) => (\r\n <PopoverTrigger\r\n ref={ref}\r\n data-slot=\"date-picker-trigger\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <CalendarIcon data-slot=\"date-picker-icon\" />\r\n <span>{children}</span>\r\n </PopoverTrigger>\r\n));\r\nDatePickerTrigger.displayName = \"DatePickerTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * DatePickerContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface DatePickerContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst DatePickerContent = React.forwardRef<\r\n HTMLDivElement,\r\n DatePickerContentProps\r\n>(({ className, ...props }, ref) => {\r\n const context = React.useContext(DatePickerContext);\r\n if (!context) {\r\n throw new Error(\"DatePickerContent must be used within a DatePicker\");\r\n }\r\n\r\n return (\r\n <PopoverContent\r\n ref={ref}\r\n data-slot=\"date-picker-content\"\r\n align=\"start\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <Calendar\r\n mode=\"single\"\r\n selected={context.value}\r\n onSelect={context.onChange}\r\n />\r\n </PopoverContent>\r\n );\r\n});\r\nDatePickerContent.displayName = \"DatePickerContent\";\r\n\r\nexport { DatePicker, DatePickerTrigger, DatePickerContent };\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../utils/cn\";\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n} from \"./command\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelect Context\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface MultiSelectContextValue {\r\n value: string[];\r\n onValueChange: (value: string[]) => void;\r\n onOpenChange: (open: boolean) => void;\r\n max?: number;\r\n}\r\n\r\nconst MultiSelectContext =\r\n React.createContext<MultiSelectContextValue | null>(null);\r\n\r\nfunction useMultiSelectContext() {\r\n const context = React.useContext(MultiSelectContext);\r\n if (!context) {\r\n throw new Error(\r\n \"MultiSelect sub-components must be used within a MultiSelect\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelect\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectProps {\r\n value?: string[];\r\n defaultValue?: string[];\r\n onValueChange?: (value: string[]) => void;\r\n max?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Multi-value searchable select built on Command + Popover + Badge.\r\n * @example\r\n * <MultiSelect value={selected} onValueChange={setSelected}>\r\n * <MultiSelectTrigger placeholder=\"Select items...\" />\r\n * <MultiSelectContent>\r\n * <MultiSelectInput placeholder=\"Search...\" />\r\n * <MultiSelectEmpty>No results.</MultiSelectEmpty>\r\n * <MultiSelectList>\r\n * <MultiSelectItem value=\"react\">React</MultiSelectItem>\r\n * <MultiSelectItem value=\"vue\">Vue</MultiSelectItem>\r\n * </MultiSelectList>\r\n * </MultiSelectContent>\r\n * </MultiSelect>\r\n */\r\nconst MultiSelect: React.FC<MultiSelectProps> = ({\r\n value: controlledValue,\r\n defaultValue = [],\r\n onValueChange,\r\n max,\r\n children,\r\n}) => {\r\n const [open, setOpen] = React.useState(false);\r\n const [uncontrolledValue, setUncontrolledValue] =\r\n React.useState(defaultValue);\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : uncontrolledValue;\r\n\r\n const handleValueChange = React.useCallback(\r\n (newValue: string[]) => {\r\n if (!isControlled) setUncontrolledValue(newValue);\r\n onValueChange?.(newValue);\r\n },\r\n [isControlled, onValueChange],\r\n );\r\n\r\n return (\r\n <MultiSelectContext.Provider\r\n value={{\r\n value,\r\n onValueChange: handleValueChange,\r\n onOpenChange: setOpen,\r\n max,\r\n }}\r\n >\r\n <Popover open={open} onOpenChange={setOpen}>\r\n {children}\r\n </Popover>\r\n </MultiSelectContext.Provider>\r\n );\r\n};\r\nMultiSelect.displayName = \"MultiSelect\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectTrigger\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectTriggerProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n placeholder?: string;\r\n}\r\n\r\nconst MultiSelectTrigger = React.forwardRef<\r\n HTMLButtonElement,\r\n MultiSelectTriggerProps\r\n>(({ className, placeholder, ...props }, ref) => {\r\n const { value, onValueChange } = useMultiSelectContext();\r\n\r\n const handleRemove = (item: string, e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onValueChange(value.filter((v) => v !== item));\r\n };\r\n\r\n return (\r\n <PopoverTrigger\r\n ref={ref}\r\n data-slot=\"multi-select-trigger\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {value.length > 0 ? (\r\n <span data-slot=\"multi-select-badges\">\r\n {value.map((item) => (\r\n <span key={item} data-slot=\"multi-select-badge\">\r\n {item}\r\n <button\r\n type=\"button\"\r\n data-slot=\"multi-select-badge-remove\"\r\n onClick={(e) => handleRemove(item, e)}\r\n aria-label={`Remove ${item}`}\r\n >\r\n <X />\r\n </button>\r\n </span>\r\n ))}\r\n </span>\r\n ) : (\r\n <span data-slot=\"multi-select-placeholder\">{placeholder}</span>\r\n )}\r\n </PopoverTrigger>\r\n );\r\n});\r\nMultiSelectTrigger.displayName = \"MultiSelectTrigger\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectContent\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectContentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst MultiSelectContent = React.forwardRef<\r\n HTMLDivElement,\r\n MultiSelectContentProps\r\n>(({ className, children, ...props }, ref) => (\r\n <PopoverContent\r\n ref={ref}\r\n data-slot=\"multi-select-content\"\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <Command>{children}</Command>\r\n </PopoverContent>\r\n));\r\nMultiSelectContent.displayName = \"MultiSelectContent\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectInput\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectInputProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandInput> {}\r\n\r\nconst MultiSelectInput = React.forwardRef<\r\n React.ElementRef<typeof CommandInput>,\r\n MultiSelectInputProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandInput\r\n ref={ref}\r\n data-slot=\"multi-select-input\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMultiSelectInput.displayName = \"MultiSelectInput\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectEmpty\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectEmptyProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandEmpty> {}\r\n\r\nconst MultiSelectEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandEmpty>,\r\n MultiSelectEmptyProps\r\n>((props, ref) => (\r\n <CommandEmpty ref={ref} data-slot=\"multi-select-empty\" {...props} />\r\n));\r\nMultiSelectEmpty.displayName = \"MultiSelectEmpty\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectList\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectListProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandList> {}\r\n\r\nconst MultiSelectList = React.forwardRef<\r\n React.ElementRef<typeof CommandList>,\r\n MultiSelectListProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandList\r\n ref={ref}\r\n data-slot=\"multi-select-list\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMultiSelectList.displayName = \"MultiSelectList\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectItem\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectItemProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandItem> {\r\n value: string;\r\n}\r\n\r\nconst MultiSelectItem = React.forwardRef<\r\n React.ElementRef<typeof CommandItem>,\r\n MultiSelectItemProps\r\n>(({ className, value: itemValue, children, ...props }, ref) => {\r\n const { value, onValueChange, max } = useMultiSelectContext();\r\n const isSelected = value.includes(itemValue);\r\n const atMax = max !== undefined && value.length >= max && !isSelected;\r\n\r\n return (\r\n <CommandItem\r\n ref={ref}\r\n data-slot=\"multi-select-item\"\r\n data-selected={isSelected || undefined}\r\n disabled={atMax}\r\n value={itemValue}\r\n onSelect={() => {\r\n if (isSelected) {\r\n onValueChange(value.filter((v) => v !== itemValue));\r\n } else if (!atMax) {\r\n onValueChange([...value, itemValue]);\r\n }\r\n }}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n <span\r\n data-slot=\"multi-select-item-indicator\"\r\n data-checked={isSelected || undefined}\r\n />\r\n {children}\r\n </CommandItem>\r\n );\r\n});\r\nMultiSelectItem.displayName = \"MultiSelectItem\";\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * MultiSelectGroup\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nexport interface MultiSelectGroupProps\r\n extends React.ComponentPropsWithoutRef<typeof CommandGroup> {}\r\n\r\nconst MultiSelectGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandGroup>,\r\n MultiSelectGroupProps\r\n>(({ className, ...props }, ref) => (\r\n <CommandGroup\r\n ref={ref}\r\n data-slot=\"multi-select-group\"\r\n className={cn(className)}\r\n {...props}\r\n />\r\n));\r\nMultiSelectGroup.displayName = \"MultiSelectGroup\";\r\n\r\nexport {\r\n MultiSelect,\r\n MultiSelectTrigger,\r\n MultiSelectContent,\r\n MultiSelectInput,\r\n MultiSelectEmpty,\r\n MultiSelectList,\r\n MultiSelectItem,\r\n MultiSelectGroup,\r\n};\r\n"]}