@structyl/primitives 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.
- package/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/index.cjs +15615 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4416 -0
- package/dist/index.d.ts +4416 -0
- package/dist/index.mjs +15529 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/button/button.tsx","../src/rating/rating.tsx","../src/dialog/index.ts","../src/dialog/dialog.tsx","../src/avatar/index.ts","../src/avatar/avatar.tsx","../src/progress/index.ts","../src/progress/progress.tsx","../src/radio-group/index.ts","../src/radio-group/radio-group.tsx","../src/toggle-group/index.ts","../src/toggle/toggle.tsx","../src/toggle-group/toggle-group.tsx","../src/slider/index.ts","../src/slider/slider.tsx","../src/form/index.ts","../src/form/form.tsx","../src/collapsible/index.ts","../src/collapsible/collapsible.tsx","../src/accordion/index.ts","../src/accordion/accordion.tsx","../src/tabs/index.ts","../src/tabs/tabs.tsx","../src/alert-dialog/index.ts","../src/alert-dialog/alert-dialog.tsx","../src/popover/index.ts","../src/popover/popover.tsx","../src/tooltip/index.ts","../src/tooltip/tooltip.tsx","../src/hover-card/index.ts","../src/hover-card/hover-card.tsx","../src/toast/index.ts","../src/toast/toast.tsx","../src/menu/index.ts","../src/menu/menu.tsx","../src/dropdown-menu/index.ts","../src/dropdown-menu/dropdown-menu.tsx","../src/context-menu/index.ts","../src/context-menu/context-menu.tsx","../src/menubar/index.ts","../src/menubar/menubar.tsx","../src/navigation-menu/index.ts","../src/navigation-menu/navigation-menu.tsx","../src/breadcrumb/index.ts","../src/breadcrumb/breadcrumb.tsx","../src/pagination/index.tsx","../src/stepper/index.tsx","../src/select/index.ts","../src/select/select.tsx","../src/multi-select/index.ts","../src/multi-select/multi-select.tsx","../src/structyl/index.tsx","../src/combobox/index.ts","../src/combobox/combobox.tsx","../src/command/index.ts","../src/command/command.tsx","../src/one-time-password-field/index.ts","../src/one-time-password-field/one-time-password-field.tsx","../src/password-toggle-field/index.ts","../src/password-toggle-field/password-toggle-field.tsx","../src/number-field/index.ts","../src/number-field/number-field.tsx","../src/calendar/index.ts","../src/picker-utils.ts","../src/calendar/calendar.tsx","../src/date-picker/index.ts","../src/date-picker/date-picker.tsx","../src/time-picker/index.ts","../src/time-picker/time-picker.tsx","../src/date-range-picker/index.ts","../src/date-range-picker/date-range-picker.tsx","../src/date-time-picker/index.ts","../src/date-time-picker/date-time-picker.tsx","../src/color-picker/index.ts","../src/color-picker/color-picker.tsx","../src/file-upload/index.ts","../src/file-upload/file-upload.tsx","../src/scroll-area/index.ts","../src/scroll-area/scroll-area.tsx","../src/toolbar/index.ts","../src/toolbar/toolbar.tsx","../src/resizable/index.ts","../src/resizable/resizable.tsx","../src/carousel/index.ts","../src/carousel/carousel.tsx","../src/tree/index.ts","../src/tree/tree.tsx","../src/editable/index.ts","../src/editable/editable.tsx","../src/tags-input/index.ts","../src/tags-input/tags-input.tsx","../src/mentions/index.ts","../src/mentions/mentions.tsx","../src/card/index.ts","../src/card/card.tsx","../src/aspect-ratio/aspect-ratio.tsx","../src/switch/switch.tsx","../src/checkbox/checkbox.tsx","../src/label/label.tsx","../src/separator/separator.tsx","../src/skeleton/skeleton.tsx","../src/spinner/spinner.tsx","../src/badge/badge.tsx","../src/alert/alert.tsx","../src/input/input.tsx","../src/textarea/textarea.tsx","../src/chart/index.ts","../src/chart/scales.ts","../src/chart/paths.ts","../src/chart/layout.ts","../src/chart/chart.tsx"],"names":["React","React2","Primitive","createContext","React3","useId","useControllableState","composeEventHandlers","PortalPrimitive","Root","React4","React5","Indicator","React6","useComposedRefs","Presence","Item","React7","React8","RovingFocusGroup","RovingFocusItem","React9","value","React10","Content","Trigger","React11","ContentImpl","React12","React13","Description","Overlay","Portal","Title","React14","Close","React15","PortalContext","useScrollLock","FocusGuards","DismissableLayer","FocusScope","Arrow","React16","Popper","React17","Action","Provider","React18","VisuallyHidden","Anchor","Label","useDirection","React19","CheckboxItem","Group","ItemIndicator","RadioGroup","RadioItem","Separator","Sub","SubContent","SubTrigger","React20","React21","React22","List","Viewport","React23","React24","React25","React26","SELECTION_KEYS","React27","CreateItem","Icon","ItemText","Options","SearchInput","Value","OPEN_KEYS","defaultFilterOption","normalizeSearch","React28","BubbleSelect","getOptionTextValue","getTextContent","focusAdjacentOption","Link","Rating","React29","React30","PopperPrimitive","Empty","Input","React31","React32","Toggle","React33","clamp","React34","Grid","Header","React35","fmt","Loading","React36","React37","Calendar","React38","formatDate","SegmentField","React39","formatSegment","React40","React41","Thumb","React42","Button","React43","React44","Container","React45","React46","React47","React48","Items","React49","React50","React51","React52","React53","React54","React55","React56","React57","React58","React59","React60","Textarea","React61","Area","linearScale","dataKeys","stackIds","pad"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Primitive, Slot } from '@structyl/core';\n\nexport interface ButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n loading?: boolean;\n loadingText?: string;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>((props, forwardedRef) => {\n const { asChild = false, loading = false, loadingText, disabled, children, ...rest } = props;\n\n const isDisabled = disabled || loading;\n\n if (asChild) {\n return (\n <Slot\n ref={forwardedRef}\n data-loading={loading ? '' : undefined}\n aria-disabled={loading || undefined}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <Primitive.button\n ref={forwardedRef}\n type=\"button\"\n disabled={isDisabled}\n data-loading={loading ? '' : undefined}\n {...rest}\n >\n {loading && loadingText ? loadingText : children}\n </Primitive.button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport { Button };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport { useControllableState, useId } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nexport interface RatingProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange'> {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n max?: number;\n step?: number;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n}\n\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = 0,\n onChange,\n max = 5,\n step = 1,\n disabled = false,\n readOnly = false,\n required,\n name,\n id: idProp,\n onKeyDown,\n ...rest\n } = props;\n\n const id = useId(idProp);\n const [value = 0, setValue] = useControllableState<number>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n\n const items = Array.from({ length: Math.ceil(max / step) }, (_, i) => (i + 1) * step);\n const displayValue = hoverValue ?? value;\n\n const handleKeyDown = composeEventHandlers(onKeyDown, (e: React.KeyboardEvent) => {\n if (disabled || readOnly) return;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n setValue(Math.min(value + step, max));\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n setValue(Math.max(value - step, 0));\n } else if (e.key === 'Home') {\n e.preventDefault();\n setValue(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n setValue(max);\n }\n });\n\n return (\n <Primitive.div\n ref={forwardedRef}\n role=\"slider\"\n id={id}\n aria-label=\"Rating\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${value} out of ${max}`}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n aria-required={required}\n tabIndex={disabled ? -1 : 0}\n data-disabled={disabled ? '' : undefined}\n data-readonly={readOnly ? '' : undefined}\n onKeyDown={handleKeyDown}\n onMouseLeave={() => !readOnly && setHoverValue(null)}\n {...rest}\n >\n {items.map((itemValue) => (\n <span\n key={itemValue}\n data-value={itemValue}\n data-active={displayValue >= itemValue ? '' : undefined}\n data-hover={hoverValue !== null && hoverValue >= itemValue ? '' : undefined}\n onMouseEnter={() => !disabled && !readOnly && setHoverValue(itemValue)}\n onClick={() => !disabled && !readOnly && setValue(itemValue === value ? 0 : itemValue)}\n style={{ cursor: disabled || readOnly ? 'default' : 'pointer' }}\n />\n ))}\n {name && (\n <input type=\"hidden\" name={name} value={value} />\n )}\n </Primitive.div>\n );\n});\n\nRating.displayName = 'Rating';\n\nexport { Rating };\n","export {\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n} from './dialog';\nexport type {\n DialogRootProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n} from './dialog.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Portal as PortalPrimitive,\n Primitive,\n Presence,\n FocusScope,\n FocusGuards,\n DismissableLayer,\n useScrollLock,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n DialogRootProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n} from './dialog.types';\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\ninterface DialogContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onOpenToggle: () => void;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentRef: React.RefObject<HTMLDivElement | null>;\n contentId: string;\n titleId: string;\n descriptionId: string;\n modal: boolean;\n}\n\nconst [DialogProvider, useDialogContext] = createContext<DialogContextValue>('Dialog');\n\nconst Root: React.FC<DialogRootProps> = ({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n children,\n}) => {\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const contentId = useId('dialog-content');\n const titleId = useId('dialog-title');\n const descriptionId = useId('dialog-description');\n\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => setOpen(next),\n [setOpen],\n );\n const handleOpenToggle = React.useCallback(\n () => setOpen((p) => !p),\n [setOpen],\n );\n\n return (\n <DialogProvider\n open={open}\n onOpenChange={handleOpenChange}\n onOpenToggle={handleOpenToggle}\n triggerRef={triggerRef}\n contentRef={contentRef}\n contentId={contentId}\n titleId={titleId}\n descriptionId={descriptionId}\n modal={modal}\n >\n {children}\n </DialogProvider>\n );\n};\nRoot.displayName = 'Dialog.Root';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Trigger');\n const composedRef = useComposedRefs(forwardedRef, ctx.triggerRef);\n return (\n <Primitive.button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n aria-controls={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n {...props}\n ref={composedRef}\n onClick={composeEventHandlers(props.onClick, ctx.onOpenToggle)}\n />\n );\n },\n);\nTrigger.displayName = 'Dialog.Trigger';\n\n/* ─── Portal ───────────────────────────────────────────────────────── */\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nconst Portal: React.FC<DialogPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useDialogContext('Dialog.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Dialog.Portal';\n\nfunction usePortalContext() {\n return React.useContext(PortalContext);\n}\n\n/* ─── Overlay ──────────────────────────────────────────────────────── */\n\nconst Overlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(\n (props, forwardedRef) => {\n const portalCtx = usePortalContext();\n const ctx = useDialogContext('Dialog.Overlay');\n const { forceMount = portalCtx.forceMount, ...overlayProps } = props as DialogOverlayProps & {\n forceMount?: boolean;\n };\n if (!ctx.modal) return null;\n return (\n <Presence present={forceMount || ctx.open}>\n <Primitive.div\n data-state={ctx.open ? 'open' : 'closed'}\n {...overlayProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'auto', ...overlayProps.style }}\n />\n </Presence>\n );\n },\n);\nOverlay.displayName = 'Dialog.Overlay';\n\n/* ─── Content ──────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, DialogContentProps>(\n (props, forwardedRef) => {\n const portalCtx = usePortalContext();\n const ctx = useDialogContext('Dialog.Content');\n const {\n forceMount = portalCtx.forceMount,\n onEscapeKeyDown,\n onPointerDownOutside,\n onInteractOutside,\n onOpenAutoFocus,\n onCloseAutoFocus,\n ...contentProps\n } = props;\n\n return (\n <Presence present={forceMount || ctx.open}>\n {ctx.modal ? (\n <ModalContent\n {...contentProps}\n ref={forwardedRef}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onInteractOutside={onInteractOutside}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n />\n ) : (\n <NonModalContent\n {...contentProps}\n ref={forwardedRef}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onInteractOutside={onInteractOutside}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n />\n )}\n </Presence>\n );\n },\n);\nContent.displayName = 'Dialog.Content';\n\nconst ModalContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Content');\n useScrollLock(ctx.open);\n return (\n <ContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n ctx.triggerRef.current?.focus();\n })}\n />\n );\n },\n);\nModalContent.displayName = 'Dialog.ModalContent';\n\nconst NonModalContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Content');\n const hasInteractedOutsideRef = React.useRef(false);\n return (\n <ContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!event.defaultPrevented && !hasInteractedOutsideRef.current) {\n ctx.triggerRef.current?.focus();\n }\n event.preventDefault();\n })}\n onInteractOutside={composeEventHandlers(props.onInteractOutside, (event) => {\n if (!event.defaultPrevented) hasInteractedOutsideRef.current = true;\n })}\n />\n );\n },\n);\nNonModalContent.displayName = 'Dialog.NonModalContent';\n\ninterface ContentImplProps extends DialogContentProps {\n trapFocus?: boolean;\n disableOutsidePointerEvents?: boolean;\n}\n\nconst ContentImpl = React.forwardRef<HTMLDivElement, ContentImplProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Content');\n const composedRef = useComposedRefs(forwardedRef, ctx.contentRef);\n const {\n trapFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onInteractOutside,\n onOpenAutoFocus,\n onCloseAutoFocus,\n children,\n ...rest\n } = props;\n\n return (\n <>\n <FocusGuards />\n <DismissableLayer\n role=\"dialog\"\n id={ctx.contentId}\n aria-describedby={ctx.descriptionId}\n aria-labelledby={ctx.titleId}\n aria-modal={ctx.modal ? true : undefined}\n data-state={ctx.open ? 'open' : 'closed'}\n tabIndex={-1}\n disableOutsidePointerEvents={disableOutsidePointerEvents}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onInteractOutside={onInteractOutside}\n onDismiss={() => ctx.onOpenChange(false)}\n {...rest}\n ref={composedRef}\n >\n <FocusScopeChildren\n trapped={trapFocus}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n >\n {children}\n </FocusScopeChildren>\n </DismissableLayer>\n </>\n );\n },\n);\nContentImpl.displayName = 'Dialog.ContentImpl';\n\nconst FocusScopeChildren: React.FC<{\n children?: React.ReactNode;\n trapped?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n onCloseAutoFocus?: (event: Event) => void;\n}> = ({ children, trapped, onOpenAutoFocus, onCloseAutoFocus }) => (\n <FocusScope\n loop\n trapped={trapped}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n style={{ display: 'contents' }}\n >\n {children}\n </FocusScope>\n);\n\n/* ─── Title / Description / Close ──────────────────────────────────── */\n\nconst Title = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Title');\n return <Primitive.h2 id={ctx.titleId} {...props} ref={forwardedRef} />;\n },\n);\nTitle.displayName = 'Dialog.Title';\n\nconst Description = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Description');\n return <Primitive.p id={ctx.descriptionId} {...props} ref={forwardedRef} />;\n },\n);\nDescription.displayName = 'Dialog.Description';\n\nconst Close = React.forwardRef<HTMLButtonElement, DialogCloseProps>(\n (props, forwardedRef) => {\n const ctx = useDialogContext('Dialog.Close');\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.onOpenChange(false))}\n />\n );\n },\n);\nClose.displayName = 'Dialog.Close';\n\nexport {\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n};\n","export { Root, Image, Fallback } from './avatar';\nexport type {\n AvatarRootProps,\n AvatarImageProps,\n AvatarFallbackProps,\n ImageLoadingStatus,\n} from './avatar.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport type {\n AvatarRootProps,\n AvatarImageProps,\n AvatarFallbackProps,\n ImageLoadingStatus,\n} from './avatar.types';\n\ninterface AvatarContextValue {\n imageLoadingStatus: ImageLoadingStatus;\n onImageLoadingStatusChange: (status: ImageLoadingStatus) => void;\n}\n\nconst [AvatarProvider, useAvatarContext] = createContext<AvatarContextValue>('Avatar');\n\nconst Root = React.forwardRef<HTMLSpanElement, AvatarRootProps>(\n (props, forwardedRef) => {\n const [imageLoadingStatus, setImageLoadingStatus] =\n React.useState<ImageLoadingStatus>('idle');\n return (\n <AvatarProvider\n imageLoadingStatus={imageLoadingStatus}\n onImageLoadingStatusChange={setImageLoadingStatus}\n >\n <Primitive.span {...props} ref={forwardedRef} />\n </AvatarProvider>\n );\n },\n);\nRoot.displayName = 'Avatar.Root';\n\nconst Image = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n (props, forwardedRef) => {\n const { src, onLoadingStatusChange = () => {}, ...imageProps } = props;\n const ctx = useAvatarContext('Avatar.Image');\n const status = useImageLoadingStatus(src);\n\n const handleLoadingStatusChange = React.useCallback(\n (s: ImageLoadingStatus) => {\n onLoadingStatusChange(s);\n ctx.onImageLoadingStatusChange(s);\n },\n [onLoadingStatusChange, ctx],\n );\n\n React.useEffect(() => {\n if (status !== 'idle') handleLoadingStatusChange(status);\n }, [status, handleLoadingStatusChange]);\n\n return status === 'loaded' ? (\n <Primitive.img {...imageProps} ref={forwardedRef} src={src} />\n ) : null;\n },\n);\nImage.displayName = 'Avatar.Image';\n\nconst Fallback = React.forwardRef<HTMLSpanElement, AvatarFallbackProps>(\n (props, forwardedRef) => {\n const { delayMs, ...fallbackProps } = props;\n const ctx = useAvatarContext('Avatar.Fallback');\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\n\n React.useEffect(() => {\n if (delayMs === undefined) return undefined;\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }, [delayMs]);\n\n return canRender && ctx.imageLoadingStatus !== 'loaded' ? (\n <Primitive.span {...fallbackProps} ref={forwardedRef} />\n ) : null;\n },\n);\nFallback.displayName = 'Avatar.Fallback';\n\n/* ── helpers ─────────────────────────────────────────────────────────── */\n\nfunction useImageLoadingStatus(src?: string): ImageLoadingStatus {\n const [status, setStatus] = React.useState<ImageLoadingStatus>('idle');\n\n React.useEffect(() => {\n if (!src) {\n setStatus('error');\n return;\n }\n let cancelled = false;\n const img = new window.Image();\n setStatus('loading');\n img.onload = () => {\n if (!cancelled) setStatus('loaded');\n };\n img.onerror = () => {\n if (!cancelled) setStatus('error');\n };\n img.src = src;\n return () => {\n cancelled = true;\n };\n }, [src]);\n\n return status;\n}\n\nexport { Root, Image, Fallback };\n","export { Root, Indicator } from './progress';\nexport type {\n ProgressRootProps,\n ProgressIndicatorProps,\n ProgressState,\n} from './progress.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport type {\n ProgressRootProps,\n ProgressIndicatorProps,\n ProgressState,\n} from './progress.types';\n\nconst DEFAULT_MAX = 100;\n\ninterface ProgressContextValue {\n value: number | null;\n max: number;\n}\n\nconst [ProgressProvider, useProgressContext] =\n createContext<ProgressContextValue>('Progress');\n\nconst Root = React.forwardRef<HTMLDivElement, ProgressRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp = null,\n max: maxProp,\n getValueLabel = defaultGetValueLabel,\n ...rest\n } = props;\n\n const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;\n const value = isValidValueNumber(valueProp, max) ? valueProp : null;\n const valueLabel = isNumber(value) ? getValueLabel(value, max) : undefined;\n\n return (\n <ProgressProvider value={value} max={max}>\n <Primitive.div\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={isNumber(value) ? value : undefined}\n aria-valuetext={valueLabel}\n role=\"progressbar\"\n data-state={getProgressState(value, max)}\n data-value={value ?? undefined}\n data-max={max}\n {...rest}\n ref={forwardedRef}\n />\n </ProgressProvider>\n );\n },\n);\nRoot.displayName = 'Progress.Root';\n\nconst Indicator = React.forwardRef<HTMLDivElement, ProgressIndicatorProps>(\n (props, forwardedRef) => {\n const ctx = useProgressContext('Progress.Indicator');\n return (\n <Primitive.div\n data-state={getProgressState(ctx.value, ctx.max)}\n data-value={ctx.value ?? undefined}\n data-max={ctx.max}\n {...props}\n ref={forwardedRef}\n />\n );\n },\n);\nIndicator.displayName = 'Progress.Indicator';\n\n/* ── helpers ─────────────────────────────────────────────────────────── */\n\nfunction defaultGetValueLabel(value: number, max: number) {\n return `${Math.round((value / max) * 100)}%`;\n}\n\nfunction getProgressState(value: number | null, max: number): ProgressState {\n if (value == null) return 'indeterminate';\n if (value === max) return 'complete';\n return 'loading';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction isValidMaxNumber(max: unknown): max is number {\n return isNumber(max) && !isNaN(max) && max > 0;\n}\n\nfunction isValidValueNumber(value: unknown, max: number): value is number {\n return isNumber(value) && !isNaN(value) && value <= max && value >= 0;\n}\n\nexport { Root, Indicator };\n","export { Root, Item, Indicator } from './radio-group';\nexport type {\n RadioGroupRootProps,\n RadioGroupItemProps,\n RadioGroupIndicatorProps,\n} from './radio-group.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n Presence,\n} from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n RadioGroupRootProps,\n RadioGroupItemProps,\n RadioGroupIndicatorProps,\n} from './radio-group.types';\n\ninterface RadioGroupContextValue {\n name?: string;\n required: boolean;\n disabled: boolean;\n value?: string;\n onValueChange: (value: string) => void;\n}\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createContext<RadioGroupContextValue>('RadioGroup');\n\nconst Root = React.forwardRef<HTMLDivElement, RadioGroupRootProps>(\n (props, forwardedRef) => {\n const {\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation = 'vertical',\n dir,\n loop = true,\n onValueChange,\n ...rootProps\n } = props;\n\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n\n return (\n <RadioGroupProvider\n name={name}\n required={required}\n disabled={disabled}\n value={value}\n onValueChange={(v) => setValue(v)}\n >\n <RovingFocusGroup\n asChild\n orientation={orientation}\n dir={dir}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-required={required}\n aria-orientation={orientation}\n data-disabled={disabled ? '' : undefined}\n dir={dir}\n {...rootProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup>\n </RadioGroupProvider>\n );\n },\n);\nRoot.displayName = 'RadioGroup.Root';\n\n/* ─── Item ──────────────────────────────────────────────────────────── */\n\ninterface RadioItemContextValue {\n checked: boolean;\n disabled?: boolean;\n}\n\nconst [RadioItemProvider, useRadioItemContext] =\n createContext<RadioItemContextValue>('RadioGroupItem');\n\nconst Item = React.forwardRef<HTMLButtonElement, RadioGroupItemProps>(\n (props, forwardedRef) => {\n const { value, disabled, ...itemProps } = props;\n const ctx = useRadioGroupContext('RadioGroup.Item');\n const isDisabled = ctx.disabled || disabled;\n const checked = ctx.value === value;\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const composedRef = useComposedRefs(forwardedRef, buttonRef);\n\n return (\n <RadioItemProvider checked={checked} disabled={isDisabled}>\n <RovingFocusItem\n asChild\n focusable={!isDisabled}\n active={checked}\n >\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n data-state={checked ? 'checked' : 'unchecked'}\n data-disabled={isDisabled ? '' : undefined}\n disabled={isDisabled}\n value={value}\n {...itemProps}\n ref={composedRef}\n onClick={composeEventHandlers(itemProps.onClick, (event) => {\n if (checked) event.preventDefault();\n else ctx.onValueChange(value);\n })}\n onKeyDown={composeEventHandlers(itemProps.onKeyDown, (event) => {\n if (event.key === 'Enter') event.preventDefault();\n })}\n />\n </RovingFocusItem>\n {ctx.name ? (\n <input\n type=\"radio\"\n aria-hidden\n tabIndex={-1}\n name={ctx.name}\n value={value}\n checked={checked}\n required={ctx.required}\n disabled={isDisabled}\n readOnly\n style={{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n width: 0,\n height: 0,\n }}\n />\n ) : null}\n </RadioItemProvider>\n );\n },\n);\nItem.displayName = 'RadioGroup.Item';\n\n/* ─── Indicator ─────────────────────────────────────────────────────── */\n\nconst Indicator = React.forwardRef<HTMLSpanElement, RadioGroupIndicatorProps>(\n (props, forwardedRef) => {\n const { forceMount, ...indicatorProps } = props;\n const ctx = useRadioItemContext('RadioGroup.Indicator');\n return (\n <Presence present={forceMount || ctx.checked}>\n <Primitive.span\n data-state={ctx.checked ? 'checked' : 'unchecked'}\n data-disabled={ctx.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n },\n);\nIndicator.displayName = 'RadioGroup.Indicator';\n\nexport { Root, Item, Indicator };\n","export { Root, Item } from './toggle-group';\nexport type {\n ToggleGroupRootProps,\n ToggleGroupSingleProps,\n ToggleGroupMultipleProps,\n ToggleGroupItemProps,\n} from './toggle-group.types';\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nexport interface ToggleProps extends Omit<React.ComponentPropsWithoutRef<'button'>, 'value'> {\n pressed?: boolean;\n defaultPressed?: boolean;\n onPressedChange?: (pressed: boolean) => void;\n disabled?: boolean;\n asChild?: boolean;\n}\n\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>((props, forwardedRef) => {\n const {\n pressed: pressedProp,\n defaultPressed = false,\n onPressedChange,\n disabled,\n onClick,\n ...rest\n } = props;\n\n const [pressed = false, setPressed] = useControllableState<boolean>({\n prop: pressedProp,\n defaultProp: defaultPressed,\n onChange: onPressedChange,\n });\n\n return (\n <Primitive.button\n type=\"button\"\n aria-pressed={pressed}\n data-state={pressed ? 'on' : 'off'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...rest}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, () => {\n if (disabled) return;\n setPressed((prev) => !prev);\n })}\n />\n );\n});\nToggle.displayName = 'Toggle';\n\nexport { Toggle };\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n} from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport { Toggle as TogglePrimitive } from '../toggle';\nimport type {\n ToggleGroupRootProps,\n ToggleGroupSingleProps,\n ToggleGroupMultipleProps,\n ToggleGroupItemProps,\n} from './toggle-group.types';\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\ninterface ToggleGroupContextValue {\n rovingFocus: boolean;\n disabled: boolean;\n}\n\nconst [ToggleGroupProvider, useToggleGroupContext] =\n createContext<ToggleGroupContextValue>('ToggleGroup');\n\ninterface ValueContextValue {\n type: 'single' | 'multiple';\n value: string[];\n onItemActivate: (value: string) => void;\n onItemDeactivate: (value: string) => void;\n}\n\nconst [ToggleGroupValueProvider, useToggleGroupValueContext] =\n createContext<ValueContextValue>('ToggleGroup');\n\nconst Root = React.forwardRef<HTMLDivElement, ToggleGroupRootProps>(\n (props, forwardedRef) => {\n const { type, ...rest } = props;\n if (type === 'single') {\n return <ToggleGroupImplSingle {...(rest as ToggleGroupSingleProps)} ref={forwardedRef} />;\n }\n return <ToggleGroupImplMultiple {...(rest as ToggleGroupMultipleProps)} ref={forwardedRef} />;\n },\n) as React.ForwardRefExoticComponent<ToggleGroupRootProps & React.RefAttributes<HTMLDivElement>>;\nRoot.displayName = 'ToggleGroup.Root';\n\nconst ToggleGroupImplSingle = React.forwardRef<HTMLDivElement, Omit<ToggleGroupSingleProps, 'type'>>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n ...rootProps\n } = props;\n\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n\n return (\n <ToggleGroupValueProvider\n type=\"single\"\n value={value ? [value] : []}\n onItemActivate={(v) => setValue(v)}\n onItemDeactivate={() => setValue('')}\n >\n <ToggleGroupImpl {...rootProps} ref={forwardedRef} />\n </ToggleGroupValueProvider>\n );\n },\n);\nToggleGroupImplSingle.displayName = 'ToggleGroup.ImplSingle';\n\nconst ToggleGroupImplMultiple = React.forwardRef<\n HTMLDivElement,\n Omit<ToggleGroupMultipleProps, 'type'>\n>((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n ...rootProps\n } = props;\n\n const [value = [], setValue] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n const handleActivate = React.useCallback(\n (v: string) => setValue((prev = []) => [...prev, v]),\n [setValue],\n );\n const handleDeactivate = React.useCallback(\n (v: string) => setValue((prev = []) => prev.filter((x) => x !== v)),\n [setValue],\n );\n\n return (\n <ToggleGroupValueProvider\n type=\"multiple\"\n value={value}\n onItemActivate={handleActivate}\n onItemDeactivate={handleDeactivate}\n >\n <ToggleGroupImpl {...rootProps} ref={forwardedRef} />\n </ToggleGroupValueProvider>\n );\n});\nToggleGroupImplMultiple.displayName = 'ToggleGroup.ImplMultiple';\n\ninterface ToggleGroupImplProps extends React.ComponentPropsWithoutRef<'div'> {\n rovingFocus?: boolean;\n disabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n loop?: boolean;\n}\n\nconst ToggleGroupImpl = React.forwardRef<HTMLDivElement, ToggleGroupImplProps>(\n (props, forwardedRef) => {\n const {\n rovingFocus = true,\n disabled = false,\n orientation,\n dir,\n loop = true,\n ...rest\n } = props;\n\n const commonProps = {\n role: 'group',\n dir,\n ...rest,\n ref: forwardedRef,\n };\n\n return (\n <ToggleGroupProvider rovingFocus={rovingFocus} disabled={disabled}>\n {rovingFocus ? (\n <RovingFocusGroup asChild orientation={orientation} dir={dir} loop={loop}>\n <Primitive.div {...commonProps} />\n </RovingFocusGroup>\n ) : (\n <Primitive.div {...commonProps} />\n )}\n </ToggleGroupProvider>\n );\n },\n);\nToggleGroupImpl.displayName = 'ToggleGroup.Impl';\n\n/* ─── Item ──────────────────────────────────────────────────────────── */\n\nconst Item = React.forwardRef<HTMLButtonElement, ToggleGroupItemProps>(\n (props, forwardedRef) => {\n const { value, disabled, ...rest } = props;\n const groupCtx = useToggleGroupContext('ToggleGroup.Item');\n const valueCtx = useToggleGroupValueContext('ToggleGroup.Item');\n const pressed = valueCtx.value.includes(value);\n const isDisabled = groupCtx.disabled || disabled;\n\n const handlePressedChange = (next: boolean) => {\n if (next) valueCtx.onItemActivate(value);\n else valueCtx.onItemDeactivate(value);\n };\n\n const commonProps = {\n pressed,\n disabled: isDisabled,\n ...rest,\n } as React.ComponentPropsWithoutRef<typeof TogglePrimitive>;\n\n return groupCtx.rovingFocus ? (\n <RovingFocusItem asChild focusable={!isDisabled} active={pressed}>\n <TogglePrimitive\n {...commonProps}\n ref={forwardedRef}\n onPressedChange={composeEventHandlers(\n commonProps.onPressedChange,\n handlePressedChange,\n )}\n />\n </RovingFocusItem>\n ) : (\n <TogglePrimitive\n {...commonProps}\n ref={forwardedRef}\n onPressedChange={composeEventHandlers(\n commonProps.onPressedChange,\n handlePressedChange,\n )}\n />\n );\n },\n);\nItem.displayName = 'ToggleGroup.Item';\n\nexport { Root, Item };\n","export { Root, Track, Range, Thumb } from './slider';\nexport type {\n SliderRootProps,\n SliderTrackProps,\n SliderRangeProps,\n SliderThumbProps,\n} from './slider.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive, useDirection } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n SliderRootProps,\n SliderTrackProps,\n SliderRangeProps,\n SliderThumbProps,\n} from './slider.types';\n\nconst PAGE_KEYS = ['PageUp', 'PageDown'];\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\ninterface SliderOrientation {\n startEdge: Side;\n endEdge: Side;\n size: 'width' | 'height';\n direction: 1 | -1;\n}\n\ninterface SliderContextValue {\n disabled?: boolean;\n min: number;\n max: number;\n values: number[];\n valueIndexToChangeRef: React.RefObject<number>;\n thumbs: Set<HTMLSpanElement>;\n orientation: 'horizontal' | 'vertical';\n}\n\nconst [SliderProvider, useSliderContext] = createContext<SliderContextValue>('Slider');\n\ninterface OrientationContextValue extends SliderOrientation {}\nconst [OrientationProvider, useOrientationContext] =\n createContext<OrientationContextValue>('SliderOrientation');\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\nconst Root = React.forwardRef<HTMLSpanElement, SliderRootProps>(\n (props, forwardedRef) => {\n const {\n name,\n min = 0,\n max = 100,\n step = 1,\n orientation = 'horizontal',\n disabled = false,\n minStepsBetweenThumbs = 0,\n defaultValue = [min],\n value,\n onValueChange = () => {},\n onValueCommit = () => {},\n inverted = false,\n dir,\n ...rootProps\n } = props;\n\n const direction = useDirection(dir);\n const [thumbRefs] = React.useState(new Set<HTMLSpanElement>());\n const valueIndexToChangeRef = React.useRef<number>(0);\n const isHorizontal = orientation === 'horizontal';\n const sliderRef = React.useRef<HTMLSpanElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, sliderRef);\n\n const [values = defaultValue, setValues] = useControllableState<number[]>({\n prop: value,\n defaultProp: defaultValue,\n onChange: (v) => {\n const thumbs = [...thumbRefs];\n thumbs[valueIndexToChangeRef.current]?.focus();\n onValueChange(v);\n },\n });\n\n const valuesBeforeSlideStartRef = React.useRef(values);\n\n function handleSlideStart(value: number) {\n const closestIndex = getClosestValueIndex(values, value);\n updateValues(value, closestIndex);\n }\n\n function handleSlideMove(value: number) {\n updateValues(value, valueIndexToChangeRef.current);\n }\n\n function handleSlideEnd() {\n const prev = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const next = values[valueIndexToChangeRef.current];\n const hasChanged = next !== prev;\n if (hasChanged) onValueCommit(values);\n }\n\n function updateValues(value: number, atIndex: number, { commit = false } = {}) {\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value - min) / step) * step + min, decimalCount);\n const nextValue = clamp(snapToStep, min, max);\n setValues((prev = []) => {\n const nextValues = getNextSortedValues(prev, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prev);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prev;\n }\n return prev;\n });\n }\n\n return (\n <SliderProvider\n disabled={disabled}\n min={min}\n max={max}\n valueIndexToChangeRef={valueIndexToChangeRef}\n thumbs={thumbRefs}\n values={values}\n orientation={orientation}\n >\n <OrientationProvider\n startEdge={\n isHorizontal ? (direction === 'rtl' ? 'right' : 'left') : 'bottom'\n }\n endEdge={\n isHorizontal ? (direction === 'rtl' ? 'left' : 'right') : 'top'\n }\n direction={isHorizontal ? (direction === 'rtl' ? -1 : 1) : -1}\n size={isHorizontal ? 'width' : 'height'}\n >\n <SliderImpl\n aria-disabled={disabled}\n data-disabled={disabled ? '' : undefined}\n data-orientation={orientation}\n {...rootProps}\n ref={composedRefs}\n onPointerDown={composeEventHandlers(rootProps.onPointerDown, () => {\n if (!disabled) valuesBeforeSlideStartRef.current = values;\n })}\n min={min}\n max={max}\n inverted={inverted}\n onSlideStart={disabled ? undefined : handleSlideStart}\n onSlideMove={disabled ? undefined : handleSlideMove}\n onSlideEnd={disabled ? undefined : handleSlideEnd}\n onHomeKeyDown={() => !disabled && updateValues(min, 0, { commit: true })}\n onEndKeyDown={() =>\n !disabled && updateValues(max, values.length - 1, { commit: true })\n }\n onStepKeyDown={({ event, direction: stepDirection }) => {\n if (!disabled) {\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || (event.shiftKey && ARROW_KEYS.includes(event.key));\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const v = values[atIndex] ?? min;\n const stepInDirection = step * multiplier * stepDirection;\n updateValues(v + stepInDirection, atIndex, { commit: true });\n }\n }}\n />\n </OrientationProvider>\n {name &&\n values.map((v, index) => (\n <BubbleInput\n key={index}\n name={name + (values.length > 1 ? '[]' : '')}\n value={v}\n />\n ))}\n </SliderProvider>\n );\n },\n);\nRoot.displayName = 'Slider.Root';\n\n/* ─── SliderImpl: horizontal/vertical pointer handling ───────────────── */\n\ninterface SliderImplProps extends React.ComponentPropsWithoutRef<'span'> {\n min: number;\n max: number;\n inverted: boolean;\n onSlideStart?: (value: number) => void;\n onSlideMove?: (value: number) => void;\n onSlideEnd?: () => void;\n onHomeKeyDown: (event: React.KeyboardEvent) => void;\n onEndKeyDown: (event: React.KeyboardEvent) => void;\n onStepKeyDown: (args: { event: React.KeyboardEvent; direction: 1 | -1 }) => void;\n}\n\nconst SLIDER_KEYS: Record<Side, string[]> = {\n left: ['Home', 'End', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp'],\n right: ['Home', 'End', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp'],\n bottom: ['Home', 'End', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp'],\n top: ['Home', 'End', 'ArrowDown', 'ArrowUp', 'PageDown', 'PageUp'],\n};\n\nconst BACK_KEYS: Record<Side, string[]> = {\n left: ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n right: ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n bottom: ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n top: ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n};\n\nconst SliderImpl = React.forwardRef<HTMLSpanElement, SliderImplProps>(\n (props, forwardedRef) => {\n const {\n min,\n max,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...rest\n } = props;\n const orientation = useOrientationContext('Slider');\n const sliderRef = React.useRef<HTMLSpanElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, sliderRef);\n const rectRef = React.useRef<DOMRect | null>(null);\n\n function getValueFromPointer(pointerPosition: number): number {\n const rect = rectRef.current || sliderRef.current!.getBoundingClientRect();\n const input: [number, number] = [\n 0,\n orientation.size === 'width' ? rect.width : rect.height,\n ];\n const output: [number, number] = inverted ? [max, min] : [min, max];\n const value = linearScale(input, output);\n rectRef.current = rect;\n const start = orientation.size === 'width' ? rect.left : rect.bottom;\n const offset = pointerPosition - start;\n return value(orientation.direction === 1 ? offset : -offset);\n }\n\n return (\n <Primitive.span\n {...rest}\n ref={composedRefs}\n style={{\n ...rest.style,\n ['--structyl-slider-thumb-transform' as string]:\n orientation.size === 'width' ? 'translateX(-50%)' : 'translateY(50%)',\n }}\n onPointerDown={composeEventHandlers(rest.onPointerDown, (event) => {\n const target = event.target as HTMLElement;\n target.setPointerCapture(event.pointerId);\n event.preventDefault();\n const value = getValueFromPointer(\n orientation.size === 'width' ? event.clientX : event.clientY,\n );\n onSlideStart?.(value);\n })}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n const value = getValueFromPointer(\n orientation.size === 'width' ? event.clientX : event.clientY,\n );\n onSlideMove?.(value);\n }\n })}\n onPointerUp={composeEventHandlers(rest.onPointerUp, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n rectRef.current = null;\n onSlideEnd?.();\n }\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'Home') {\n onHomeKeyDown(event);\n event.preventDefault();\n } else if (event.key === 'End') {\n onEndKeyDown(event);\n event.preventDefault();\n } else if (SLIDER_KEYS[orientation.startEdge].includes(event.key)) {\n const isBackKey = BACK_KEYS[orientation.startEdge].includes(event.key);\n onStepKeyDown({ event, direction: isBackKey ? -1 : 1 });\n event.preventDefault();\n }\n })}\n />\n );\n },\n);\nSliderImpl.displayName = 'Slider.Impl';\n\n/* ─── Track / Range / Thumb ──────────────────────────────────────────── */\n\nconst Track = React.forwardRef<HTMLSpanElement, SliderTrackProps>(\n (props, forwardedRef) => {\n const ctx = useSliderContext('Slider.Track');\n return (\n <Primitive.span\n data-disabled={ctx.disabled ? '' : undefined}\n data-orientation={ctx.orientation}\n {...props}\n ref={forwardedRef}\n />\n );\n },\n);\nTrack.displayName = 'Slider.Track';\n\nconst Range = React.forwardRef<HTMLSpanElement, SliderRangeProps>(\n (props, forwardedRef) => {\n const ctx = useSliderContext('Slider.Range');\n const orientation = useOrientationContext('Slider.Range');\n const valueA = ctx.values.length > 1 ? Math.min(...ctx.values) : ctx.min;\n const valueB = ctx.values.length > 1 ? Math.max(...ctx.values) : ctx.values[0] ?? ctx.min;\n const offsetStart = 100 - convertValueToPercentage(valueA, ctx.min, ctx.max);\n const offsetEnd = 100 - convertValueToPercentage(valueB, ctx.min, ctx.max);\n\n return (\n <Primitive.span\n data-orientation={ctx.orientation}\n data-disabled={ctx.disabled ? '' : undefined}\n {...props}\n ref={forwardedRef}\n style={{\n ...props.style,\n [orientation.startEdge]: `${ctx.values.length === 1 ? 0 : offsetStart}%`,\n [orientation.endEdge]: `${offsetEnd}%`,\n }}\n />\n );\n },\n);\nRange.displayName = 'Slider.Range';\n\nconst Thumb = React.forwardRef<HTMLSpanElement, SliderThumbProps>(\n (props, forwardedRef) => {\n const { thumbs } = useSliderContext('Slider.Thumb');\n const [thumb, setThumb] = React.useState<HTMLSpanElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, setThumb);\n const index = React.useMemo(\n () => (thumb ? Array.from(thumbs).indexOf(thumb) : -1),\n [thumbs, thumb],\n );\n React.useEffect(() => {\n if (!thumb) return undefined;\n thumbs.add(thumb);\n return () => {\n thumbs.delete(thumb);\n };\n }, [thumb, thumbs]);\n return <SliderThumbImpl {...props} ref={composedRefs} index={index} />;\n },\n);\nThumb.displayName = 'Slider.Thumb';\n\nconst SliderThumbImpl = React.forwardRef<HTMLSpanElement, SliderThumbProps & { index: number }>(\n (props, forwardedRef) => {\n const { index, ...thumbProps } = props;\n const ctx = useSliderContext('Slider.Thumb');\n const orientation = useOrientationContext('Slider.Thumb');\n const value = ctx.values[index];\n const percent = value === undefined ? 0 : convertValueToPercentage(value, ctx.min, ctx.max);\n const label = getLabel(index, ctx.values.length);\n const orientationSize = orientation.size === 'width' ? 'width' : 'height';\n const ref = React.useRef<HTMLSpanElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n\n return (\n <span\n style={{\n transform: 'var(--structyl-slider-thumb-transform)',\n position: 'absolute',\n [orientation.startEdge]: `calc(${percent}% + ${0}px)`,\n }}\n >\n <Primitive.span\n role=\"slider\"\n aria-label={thumbProps['aria-label'] || label}\n aria-valuemin={ctx.min}\n aria-valuenow={value}\n aria-valuemax={ctx.max}\n aria-orientation={ctx.orientation}\n data-orientation={ctx.orientation}\n data-disabled={ctx.disabled ? '' : undefined}\n tabIndex={ctx.disabled ? undefined : 0}\n {...thumbProps}\n ref={composedRefs}\n style={{\n ...(value === undefined ? { display: 'none' } : {}),\n ...thumbProps.style,\n }}\n onFocus={composeEventHandlers(thumbProps.onFocus, () => {\n ctx.valueIndexToChangeRef.current = index;\n })}\n // disable double-percent transform for vertical\n aria-valuetext={String(value)}\n // Hint for vertical orientation\n {...(orientationSize ? {} : {})}\n />\n </span>\n );\n },\n);\nSliderThumbImpl.displayName = 'Slider.ThumbImpl';\n\n/* ─── BubbleInput (hidden form input) ────────────────────────────────── */\n\nconst BubbleInput: React.FC<{ name: string; value: number }> = ({ name, value }) => {\n return (\n <input\n type=\"number\"\n name={name}\n value={value}\n aria-hidden\n tabIndex={-1}\n readOnly\n style={{\n display: 'none',\n }}\n />\n );\n};\n\n/* ─── helpers ─────────────────────────────────────────────────────────── */\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.slice().sort((a, b) => a - b);\n}\n\nfunction convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, 0, 100);\n}\n\nfunction getLabel(index: number, totalValues: number): string | undefined {\n if (totalValues > 2) return `Value ${index + 1} of ${totalValues}`;\n if (totalValues === 2) return ['Minimum', 'Maximum'][index];\n return undefined;\n}\n\nfunction getClosestValueIndex(values: number[], nextValue: number) {\n const distances = values.map((v) => Math.abs(v - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\nfunction hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = values\n .slice()\n .sort((a, b) => a - b)\n .map((v, i, arr) => (i === 0 ? 0 : v - (arr[i - 1] ?? 0)));\n const actualMinSteps = Math.min(...stepsBetweenValues.slice(1));\n return actualMinSteps >= minStepsBetweenValues;\n }\n return true;\n}\n\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\nfunction getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nfunction roundValue(value: number, decimalCount: number) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\n\nexport { Root, Track, Range, Thumb };\n","export {\n Root,\n Field,\n Label,\n Control,\n Message,\n ValidityState,\n Submit,\n} from './form';\nexport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n Matcher,\n ValidityMatcher,\n CustomMatcher,\n} from './form.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n FormProps,\n FormFieldProps,\n FormLabelProps,\n FormControlProps,\n FormMessageProps,\n FormValidityStateProps,\n FormSubmitProps,\n Matcher,\n ValidityMatcher,\n} from './form.types';\n\nconst DEFAULT_INVALID_MESSAGE = 'This value is not valid';\nconst DEFAULT_BUILT_IN_MESSAGES: Record<ValidityMatcher, string | undefined> = {\n badInput: DEFAULT_INVALID_MESSAGE,\n patternMismatch: 'This value does not match the required pattern',\n rangeOverflow: 'This value is too large',\n rangeUnderflow: 'This value is too small',\n stepMismatch: 'This value is not a valid step',\n tooLong: 'This value is too long',\n tooShort: 'This value is too short',\n typeMismatch: 'This value does not match the required type',\n valid: undefined,\n valueMissing: 'This value is required',\n};\n\n/* ─── Form context ───────────────────────────────────────────────────── */\n\ninterface FormContextValue {\n getFieldValidity: (name: string) => ValidityState | undefined;\n onFieldValidityChange: (name: string, validity: ValidityState) => void;\n getFieldCustomMatcherEntries: (name: string) => CustomMatcherEntry[];\n onFieldCustomMatcherEntryAdd: (name: string, entry: CustomMatcherEntry) => void;\n onFieldCustomMatcherEntryRemove: (name: string, id: string) => void;\n getFieldCustomErrors: (name: string) => Record<string, boolean>;\n onFieldCustomErrorsChange: (name: string, errors: Record<string, boolean>) => void;\n}\n\nconst [FormProvider, useFormContext] = createContext<FormContextValue>('Form');\n\ninterface CustomMatcherEntry {\n id: string;\n match: Matcher | ((value: string, formData: FormData) => boolean | Promise<boolean>);\n}\n\n/* ─── Form Root ──────────────────────────────────────────────────────── */\n\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props, forwardedRef) => {\n const { onClearServerErrors = () => {}, ...rootProps } = props;\n const formRef = React.useRef<HTMLFormElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, formRef);\n const [validityByField, setValidityByField] = React.useState<\n Record<string, ValidityState | undefined>\n >({});\n const [customMatcherEntriesByField] = React.useState(\n new Map<string, CustomMatcherEntry[]>(),\n );\n const [customErrorsByField, setCustomErrorsByField] = React.useState<\n Record<string, Record<string, boolean>>\n >({});\n\n const ctx: FormContextValue = {\n getFieldValidity: (name) => validityByField[name],\n onFieldValidityChange: (name, validity) =>\n setValidityByField((prev) => ({ ...prev, [name]: validity })),\n getFieldCustomMatcherEntries: (name) =>\n customMatcherEntriesByField.get(name) ?? [],\n onFieldCustomMatcherEntryAdd: (name, entry) => {\n const list = customMatcherEntriesByField.get(name) ?? [];\n customMatcherEntriesByField.set(name, [...list, entry]);\n },\n onFieldCustomMatcherEntryRemove: (name, id) => {\n const list = customMatcherEntriesByField.get(name) ?? [];\n customMatcherEntriesByField.set(\n name,\n list.filter((entry) => entry.id !== id),\n );\n },\n getFieldCustomErrors: (name) => customErrorsByField[name] ?? {},\n onFieldCustomErrorsChange: (name, errors) =>\n setCustomErrorsByField((prev) => ({ ...prev, [name]: errors })),\n };\n\n return (\n <FormProvider {...ctx}>\n <Primitive.form\n {...rootProps}\n ref={composedRefs}\n onInvalid={composeEventHandlers(rootProps.onInvalid, (event) => {\n event.preventDefault();\n })}\n onChange={composeEventHandlers(rootProps.onChange, () => {\n onClearServerErrors();\n })}\n />\n </FormProvider>\n );\n },\n);\nForm.displayName = 'Form';\n\n/* ─── Field ──────────────────────────────────────────────────────────── */\n\ninterface FormFieldContextValue {\n id: string;\n name: string;\n serverInvalid: boolean;\n}\n\nconst [FormFieldProvider, useFormFieldContext] =\n createContext<FormFieldContextValue>('FormField');\n\nconst Field = React.forwardRef<HTMLDivElement, FormFieldProps>(\n (props, forwardedRef) => {\n const { name, serverInvalid = false, ...fieldProps } = props;\n const id = useId('form-field');\n return (\n <FormFieldProvider id={id} name={name} serverInvalid={serverInvalid}>\n <Primitive.div {...fieldProps} ref={forwardedRef} />\n </FormFieldProvider>\n );\n },\n);\nField.displayName = 'Form.Field';\n\n/* ─── Label ──────────────────────────────────────────────────────────── */\n\nconst Label = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n (props, forwardedRef) => {\n const fieldCtx = useFormFieldContext('Form.Label');\n return <Primitive.label htmlFor={fieldCtx.id} {...props} ref={forwardedRef} />;\n },\n);\nLabel.displayName = 'Form.Label';\n\n/* ─── Control ─────────────────────────────────────────────────────────── */\n\nconst Control = React.forwardRef<HTMLInputElement, FormControlProps>(\n (props, forwardedRef) => {\n const fieldCtx = useFormFieldContext('Form.Control');\n const formCtx = useFormContext('Form.Control');\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const name = fieldCtx.name;\n\n React.useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const handleInvalid = () => {\n formCtx.onFieldValidityChange(name, node.validity);\n };\n const handleChange = () => {\n formCtx.onFieldValidityChange(name, node.validity);\n };\n node.addEventListener('invalid', handleInvalid);\n node.addEventListener('change', handleChange);\n return () => {\n node.removeEventListener('invalid', handleInvalid);\n node.removeEventListener('change', handleChange);\n };\n }, [formCtx, name]);\n\n const validity = formCtx.getFieldValidity(name);\n const invalid = fieldCtx.serverInvalid || (validity ? !validity.valid : false);\n\n return (\n <Primitive.input\n id={fieldCtx.id}\n name={name}\n aria-invalid={invalid || undefined}\n aria-describedby={`${fieldCtx.id}-message`}\n {...props}\n ref={composedRef}\n />\n );\n },\n);\nControl.displayName = 'Form.Control';\n\n/* ─── Message ─────────────────────────────────────────────────────────── */\n\nconst Message = React.forwardRef<HTMLSpanElement, FormMessageProps>(\n (props, forwardedRef) => {\n const { match, forceMatch, children, ...rest } = props;\n const fieldCtx = useFormFieldContext('Form.Message');\n const formCtx = useFormContext('Form.Message');\n const validity = formCtx.getFieldValidity(fieldCtx.name);\n const matches = match\n ? typeof match === 'string'\n ? hasMatch(validity, match)\n : false\n : !validity?.valid;\n if (!matches && !forceMatch && !fieldCtx.serverInvalid) return null;\n const defaultLabel =\n typeof match === 'string'\n ? DEFAULT_BUILT_IN_MESSAGES[match as ValidityMatcher] ?? DEFAULT_INVALID_MESSAGE\n : DEFAULT_INVALID_MESSAGE;\n return (\n <Primitive.span\n id={`${fieldCtx.id}-message`}\n {...rest}\n ref={forwardedRef}\n >\n {children ?? defaultLabel}\n </Primitive.span>\n );\n },\n);\nMessage.displayName = 'Form.Message';\n\nfunction hasMatch(validity: ValidityState | undefined, match: Matcher): boolean {\n if (!validity) return false;\n if (match in validity) return (validity as unknown as Record<string, boolean>)[match] === true;\n return false;\n}\n\n/* ─── ValidityState ──────────────────────────────────────────────────── */\n\nconst ValidityState: React.FC<FormValidityStateProps> = ({ children }) => {\n const fieldCtx = useFormFieldContext('Form.ValidityState');\n const formCtx = useFormContext('Form.ValidityState');\n return <>{children(formCtx.getFieldValidity(fieldCtx.name))}</>;\n};\nValidityState.displayName = 'Form.ValidityState';\n\n/* ─── Submit ─────────────────────────────────────────────────────────── */\n\nconst Submit = React.forwardRef<HTMLButtonElement, FormSubmitProps>(\n (props, forwardedRef) => (\n <Primitive.button type=\"submit\" {...props} ref={forwardedRef} />\n ),\n);\nSubmit.displayName = 'Form.Submit';\n\nexport { Form as Root, Field, Label, Control, Message, ValidityState, Submit };\n","export { Root, Trigger, Content } from './collapsible';\nexport type {\n CollapsibleRootProps,\n CollapsibleTriggerProps,\n CollapsibleContentProps,\n} from './collapsible.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive, Presence } from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n CollapsibleRootProps,\n CollapsibleTriggerProps,\n CollapsibleContentProps,\n} from './collapsible.types';\n\ninterface CollapsibleContextValue {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle: () => void;\n}\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createContext<CollapsibleContextValue>('Collapsible');\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\nconst Root = React.forwardRef<HTMLDivElement, CollapsibleRootProps>(\n (props, forwardedRef) => {\n const {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled,\n ...rootProps\n } = props;\n\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n <CollapsibleProvider\n contentId={useId('collapsible-content')}\n disabled={disabled}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((p) => !p), [setOpen])}\n >\n <Primitive.div\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n {...rootProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n },\n);\nRoot.displayName = 'Collapsible.Root';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, CollapsibleTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useCollapsibleContext('Collapsible.Trigger');\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n data-disabled={ctx.disabled ? '' : undefined}\n disabled={ctx.disabled}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, ctx.onOpenToggle)}\n />\n );\n },\n);\nTrigger.displayName = 'Collapsible.Trigger';\n\n/* ─── Content ──────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, CollapsibleContentProps>(\n (props, forwardedRef) => {\n const { forceMount, children, ...contentProps } = props;\n const ctx = useCollapsibleContext('Collapsible.Content');\n return (\n <Presence present={forceMount || ctx.open}>\n <ContentImpl {...contentProps} ref={forwardedRef}>\n {children}\n </ContentImpl>\n </Presence>\n );\n },\n);\nContent.displayName = 'Collapsible.Content';\n\nconst ContentImpl = React.forwardRef<HTMLDivElement, CollapsibleContentProps>(\n (props, forwardedRef) => {\n const { children, style, ...rest } = props;\n const ctx = useCollapsibleContext('Collapsible.ContentImpl');\n const [isOpen, setIsOpen] = React.useState(ctx.open);\n const ref = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const widthRef = React.useRef(0);\n const isPresent = ctx.open;\n const isMountAnimationPreventedRef = React.useRef(isPresent);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined as never);\n\n React.useEffect(() => {\n const raf = requestAnimationFrame(() => {\n isMountAnimationPreventedRef.current = false;\n });\n return () => cancelAnimationFrame(raf);\n }, []);\n\n React.useLayoutEffect(() => {\n const node = ref.current;\n if (!node) return;\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // Block animation on mount so initial render doesn't animate\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration ?? '';\n node.style.animationName = originalStylesRef.current.animationName ?? '';\n }\n setIsOpen(isPresent);\n }, [ctx.open, isPresent]);\n\n return (\n <Primitive.div\n data-state={ctx.open ? 'open' : 'closed'}\n data-disabled={ctx.disabled ? '' : undefined}\n id={ctx.contentId}\n hidden={!isOpen}\n {...rest}\n ref={composedRef}\n style={{\n ['--structyl-collapsible-content-height' as string]: heightRef.current\n ? `${heightRef.current}px`\n : undefined,\n ['--structyl-collapsible-content-width' as string]: widthRef.current\n ? `${widthRef.current}px`\n : undefined,\n ...style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n },\n);\nContentImpl.displayName = 'Collapsible.ContentImpl';\n\nexport { Root, Trigger, Content };\n","export { Root, Item, Header, Trigger, Content } from './accordion';\nexport type {\n AccordionRootProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n} from './accordion.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n} from '@structyl/core';\nimport { useControllableState, useId } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as CollapsiblePrimitive from '../collapsible';\nimport type {\n AccordionRootProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n} from './accordion.types';\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\ninterface AccordionContextValue {\n disabled?: boolean;\n direction?: 'ltr' | 'rtl';\n orientation: 'horizontal' | 'vertical';\n}\n\nconst [AccordionProvider, useAccordionContext] =\n createContext<AccordionContextValue>('Accordion');\n\ninterface AccordionValueContextValue {\n value: string[];\n onItemOpen: (value: string) => void;\n onItemClose: (value: string) => void;\n}\n\nconst [AccordionValueProvider, useAccordionValueContext] =\n createContext<AccordionValueContextValue>('Accordion');\n\ninterface AccordionCollapsibleContextValue {\n collapsible: boolean;\n}\n\nconst [AccordionCollapsibleProvider, useAccordionCollapsibleContext] =\n createContext<AccordionCollapsibleContextValue>('Accordion');\n\nconst Root = React.forwardRef<HTMLDivElement, AccordionRootProps>(\n (props, forwardedRef) => {\n const { type, ...rest } = props;\n if (type === 'single') {\n return <AccordionImplSingle ref={forwardedRef} {...(rest as AccordionSingleProps)} />;\n }\n return <AccordionImplMultiple ref={forwardedRef} {...(rest as AccordionMultipleProps)} />;\n },\n) as React.ForwardRefExoticComponent<AccordionRootProps & React.RefAttributes<HTMLDivElement>>;\nRoot.displayName = 'Accordion.Root';\n\nconst AccordionImplSingle = React.forwardRef<HTMLDivElement, Omit<AccordionSingleProps, 'type'>>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n collapsible = false,\n ...rest\n } = props;\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n return (\n <AccordionValueProvider\n value={value ? [value] : []}\n onItemOpen={(v) => setValue(v)}\n onItemClose={React.useCallback(() => {\n if (collapsible) setValue('');\n }, [collapsible, setValue])}\n >\n <AccordionCollapsibleProvider collapsible={collapsible}>\n <AccordionImpl {...rest} ref={forwardedRef} />\n </AccordionCollapsibleProvider>\n </AccordionValueProvider>\n );\n },\n);\nAccordionImplSingle.displayName = 'Accordion.ImplSingle';\n\nconst AccordionImplMultiple = React.forwardRef<\n HTMLDivElement,\n Omit<AccordionMultipleProps, 'type'>\n>((props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n ...rest\n } = props;\n const [value = [], setValue] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n return (\n <AccordionValueProvider\n value={value}\n onItemOpen={React.useCallback(\n (v) => setValue((prev = []) => [...prev, v]),\n [setValue],\n )}\n onItemClose={React.useCallback(\n (v) => setValue((prev = []) => prev.filter((x) => x !== v)),\n [setValue],\n )}\n >\n <AccordionCollapsibleProvider collapsible>\n <AccordionImpl {...rest} ref={forwardedRef} />\n </AccordionCollapsibleProvider>\n </AccordionValueProvider>\n );\n});\nAccordionImplMultiple.displayName = 'Accordion.ImplMultiple';\n\ninterface AccordionImplProps extends React.ComponentPropsWithoutRef<'div'> {\n disabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}\n\nconst AccordionImpl = React.forwardRef<HTMLDivElement, AccordionImplProps>(\n (props, forwardedRef) => {\n const {\n disabled,\n orientation = 'vertical',\n dir,\n ...rest\n } = props;\n return (\n <AccordionProvider disabled={disabled} direction={dir} orientation={orientation}>\n <RovingFocusGroup\n asChild\n orientation={orientation}\n dir={dir}\n loop\n >\n <Primitive.div\n data-orientation={orientation}\n {...rest}\n ref={forwardedRef}\n />\n </RovingFocusGroup>\n </AccordionProvider>\n );\n },\n);\nAccordionImpl.displayName = 'Accordion.Impl';\n\n/* ─── Item ──────────────────────────────────────────────────────────── */\n\ninterface AccordionItemContextValue {\n open: boolean;\n disabled?: boolean;\n triggerId: string;\n}\n\nconst [AccordionItemProvider, useAccordionItemContext] =\n createContext<AccordionItemContextValue>('AccordionItem');\n\nconst Item = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n (props, forwardedRef) => {\n const { value, disabled, ...rest } = props;\n const accordionCtx = useAccordionContext('Accordion.Item');\n const valueCtx = useAccordionValueContext('Accordion.Item');\n const _collapsibleCtx = useAccordionCollapsibleContext('Accordion.Item');\n const open = (value && valueCtx.value.includes(value)) || false;\n const isDisabled = accordionCtx.disabled || disabled;\n const triggerId = useId('accordion-trigger');\n\n return (\n <AccordionItemProvider open={open} disabled={isDisabled} triggerId={triggerId}>\n <CollapsiblePrimitive.Root\n data-orientation={accordionCtx.orientation}\n data-state={open ? 'open' : 'closed'}\n {...rest}\n ref={forwardedRef}\n disabled={isDisabled}\n open={open}\n onOpenChange={(next) => {\n if (next) valueCtx.onItemOpen(value);\n else valueCtx.onItemClose(value);\n }}\n />\n </AccordionItemProvider>\n );\n },\n);\nItem.displayName = 'Accordion.Item';\n\n/* ─── Header ────────────────────────────────────────────────────────── */\n\nconst Header = React.forwardRef<HTMLHeadingElement, AccordionHeaderProps>(\n (props, forwardedRef) => {\n const accordionCtx = useAccordionContext('Accordion.Header');\n const itemCtx = useAccordionItemContext('Accordion.Header');\n return (\n <Primitive.h3\n data-orientation={accordionCtx.orientation}\n data-state={itemCtx.open ? 'open' : 'closed'}\n data-disabled={itemCtx.disabled ? '' : undefined}\n {...props}\n ref={forwardedRef}\n />\n );\n },\n);\nHeader.displayName = 'Accordion.Header';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n (props, forwardedRef) => {\n const accordionCtx = useAccordionContext('Accordion.Trigger');\n const itemCtx = useAccordionItemContext('Accordion.Trigger');\n const collapsibleCtx = useAccordionCollapsibleContext('Accordion.Trigger');\n return (\n <RovingFocusItem asChild focusable={!itemCtx.disabled}>\n <CollapsiblePrimitive.Trigger\n aria-disabled={(itemCtx.open && !collapsibleCtx.collapsible) || undefined}\n data-orientation={accordionCtx.orientation}\n id={itemCtx.triggerId}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, (event) => {\n if (itemCtx.open && !collapsibleCtx.collapsible) event.preventDefault();\n })}\n />\n </RovingFocusItem>\n );\n },\n);\nTrigger.displayName = 'Accordion.Trigger';\n\n/* ─── Content ──────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n (props, forwardedRef) => {\n const accordionCtx = useAccordionContext('Accordion.Content');\n const itemCtx = useAccordionItemContext('Accordion.Content');\n return (\n <CollapsiblePrimitive.Content\n role=\"region\"\n aria-labelledby={itemCtx.triggerId}\n data-orientation={accordionCtx.orientation}\n {...props}\n ref={forwardedRef}\n style={{\n ['--structyl-accordion-content-height' as string]:\n 'var(--structyl-collapsible-content-height)',\n ['--structyl-accordion-content-width' as string]:\n 'var(--structyl-collapsible-content-width)',\n ...props.style,\n }}\n />\n );\n },\n);\nContent.displayName = 'Accordion.Content';\n\nexport { Root, Item, Header, Trigger, Content };\n","export { Root, List, Trigger, Content } from './tabs';\nexport type {\n TabsRootProps,\n TabsListProps,\n TabsTriggerProps,\n TabsContentProps,\n} from './tabs.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n Presence,\n} from '@structyl/core';\nimport { useControllableState, useId } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n TabsRootProps,\n TabsListProps,\n TabsTriggerProps,\n TabsContentProps,\n} from './tabs.types';\n\ninterface TabsContextValue {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n activationMode: 'automatic' | 'manual';\n}\n\nconst [TabsProvider, useTabsContext] = createContext<TabsContextValue>('Tabs');\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\nconst Root = React.forwardRef<HTMLDivElement, TabsRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...rest\n } = props;\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n\n return (\n <TabsProvider\n baseId={useId('tabs')}\n value={value}\n onValueChange={(v) => setValue(v)}\n orientation={orientation}\n dir={dir}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={dir}\n data-orientation={orientation}\n {...rest}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n },\n);\nRoot.displayName = 'Tabs.Root';\n\n/* ─── List ─────────────────────────────────────────────────────────── */\n\nconst List = React.forwardRef<HTMLDivElement, TabsListProps>(\n (props, forwardedRef) => {\n const { loop = true, ...rest } = props;\n const ctx = useTabsContext('Tabs.List');\n return (\n <RovingFocusGroup\n asChild\n orientation={ctx.orientation}\n dir={ctx.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n {...rest}\n ref={forwardedRef}\n />\n </RovingFocusGroup>\n );\n },\n);\nList.displayName = 'Tabs.List';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (props, forwardedRef) => {\n const { value, disabled, ...rest } = props;\n const ctx = useTabsContext('Tabs.Trigger');\n const triggerId = makeTriggerId(ctx.baseId, value);\n const contentId = makeContentId(ctx.baseId, value);\n const isSelected = ctx.value === value;\n\n return (\n <RovingFocusItem asChild focusable={!disabled} active={isSelected}>\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...rest}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(rest.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n ctx.onValueChange(value);\n } else {\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) ctx.onValueChange(value);\n })}\n onFocus={composeEventHandlers(rest.onFocus, () => {\n const isAutomatic = ctx.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomatic) {\n ctx.onValueChange(value);\n }\n })}\n />\n </RovingFocusItem>\n );\n },\n);\nTrigger.displayName = 'Tabs.Trigger';\n\n/* ─── Content ──────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, TabsContentProps>(\n (props, forwardedRef) => {\n const { value, forceMount, children, ...rest } = props;\n const ctx = useTabsContext('Tabs.Content');\n const triggerId = makeTriggerId(ctx.baseId, value);\n const contentId = makeContentId(ctx.baseId, value);\n const isSelected = ctx.value === value;\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={ctx.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...rest}\n ref={forwardedRef}\n >\n {present ? children : null}\n </Primitive.div>\n )}\n </Presence>\n );\n },\n);\nContent.displayName = 'Tabs.Content';\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nexport { Root, List, Trigger, Content };\n","export {\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Action,\n Cancel,\n} from './alert-dialog';\nexport type {\n AlertDialogRootProps,\n AlertDialogTriggerProps,\n AlertDialogPortalProps,\n AlertDialogOverlayProps,\n AlertDialogContentProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n AlertDialogActionProps,\n AlertDialogCancelProps,\n} from './alert-dialog.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext } from '@structyl/core';\nimport { composeEventHandlers } from '@structyl/utils';\nimport { useComposedRefs } from '@structyl/hooks';\nimport * as DialogPrimitive from '../dialog';\nimport type {\n AlertDialogRootProps,\n AlertDialogTriggerProps,\n AlertDialogPortalProps,\n AlertDialogOverlayProps,\n AlertDialogContentProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n AlertDialogActionProps,\n AlertDialogCancelProps,\n} from './alert-dialog.types';\n\ninterface AlertDialogContextValue {\n cancelRef: React.RefObject<HTMLButtonElement | null>;\n}\n\nconst [AlertDialogProvider, useAlertDialogContext] =\n createContext<AlertDialogContextValue>('AlertDialog');\n\nconst Root: React.FC<AlertDialogRootProps> = (props) => {\n const cancelRef = React.useRef<HTMLButtonElement>(null);\n return (\n <AlertDialogProvider cancelRef={cancelRef}>\n <DialogPrimitive.Root {...props} modal={true} />\n </AlertDialogProvider>\n );\n};\nRoot.displayName = 'AlertDialog.Root';\n\nconst Trigger = React.forwardRef<HTMLButtonElement, AlertDialogTriggerProps>(\n (props, forwardedRef) => <DialogPrimitive.Trigger {...props} ref={forwardedRef} />,\n);\nTrigger.displayName = 'AlertDialog.Trigger';\n\nconst Portal: React.FC<AlertDialogPortalProps> = (props) => (\n <DialogPrimitive.Portal {...props} />\n);\nPortal.displayName = 'AlertDialog.Portal';\n\nconst Overlay = React.forwardRef<HTMLDivElement, AlertDialogOverlayProps>(\n (props, forwardedRef) => <DialogPrimitive.Overlay {...props} ref={forwardedRef} />,\n);\nOverlay.displayName = 'AlertDialog.Overlay';\n\nconst Content = React.forwardRef<HTMLDivElement, AlertDialogContentProps>(\n (props, forwardedRef) => {\n const ctx = useAlertDialogContext('AlertDialog.Content');\n return (\n <DialogPrimitive.Content\n role=\"alertdialog\"\n {...props}\n ref={forwardedRef}\n onOpenAutoFocus={composeEventHandlers(props.onOpenAutoFocus, (event) => {\n event.preventDefault();\n ctx.cancelRef.current?.focus({ preventScroll: true });\n })}\n onPointerDownOutside={(event) => event.preventDefault()}\n onInteractOutside={(event) => event.preventDefault()}\n />\n );\n },\n);\nContent.displayName = 'AlertDialog.Content';\n\nconst Title = React.forwardRef<HTMLHeadingElement, AlertDialogTitleProps>(\n (props, forwardedRef) => <DialogPrimitive.Title {...props} ref={forwardedRef} />,\n);\nTitle.displayName = 'AlertDialog.Title';\n\nconst Description = React.forwardRef<HTMLParagraphElement, AlertDialogDescriptionProps>(\n (props, forwardedRef) => <DialogPrimitive.Description {...props} ref={forwardedRef} />,\n);\nDescription.displayName = 'AlertDialog.Description';\n\nconst Action = React.forwardRef<HTMLButtonElement, AlertDialogActionProps>(\n (props, forwardedRef) => <DialogPrimitive.Close {...props} ref={forwardedRef} />,\n);\nAction.displayName = 'AlertDialog.Action';\n\nconst Cancel = React.forwardRef<HTMLButtonElement, AlertDialogCancelProps>(\n (props, forwardedRef) => {\n const ctx = useAlertDialogContext('AlertDialog.Cancel');\n const composedRef = useComposedRefs(forwardedRef, ctx.cancelRef);\n return <DialogPrimitive.Close {...props} ref={composedRef} />;\n },\n);\nCancel.displayName = 'AlertDialog.Cancel';\n\nexport {\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Action,\n Cancel,\n};\n","export { Root, Trigger, Anchor, Portal, Content, Close, Arrow } from './popover';\nexport type {\n PopoverRootProps,\n PopoverTriggerProps,\n PopoverAnchorProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n} from './popover.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n FocusScope,\n FocusGuards,\n DismissableLayer,\n useScrollLock,\n Popper,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n PopoverRootProps,\n PopoverTriggerProps,\n PopoverAnchorProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n} from './popover.types';\n\ninterface PopoverContextValue {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentId: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onOpenToggle: () => void;\n hasCustomAnchor: boolean;\n onCustomAnchorAdd: () => void;\n onCustomAnchorRemove: () => void;\n modal: boolean;\n}\n\nconst [PopoverProvider, usePopoverContext] = createContext<PopoverContextValue>('Popover');\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\nconst Root: React.FC<PopoverRootProps> = ({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n modal = false,\n children,\n}) => {\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n return (\n <Popper.Root>\n <PopoverProvider\n triggerRef={triggerRef}\n contentId={useId('popover-content')}\n open={open}\n onOpenChange={React.useCallback((v: boolean) => setOpen(v), [setOpen])}\n onOpenToggle={React.useCallback(() => setOpen((p) => !p), [setOpen])}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n modal={modal}\n >\n {children}\n </PopoverProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'Popover.Root';\n\n/* ─── Anchor ──────────────────────────────────────────────────────── */\n\nconst Anchor = React.forwardRef<HTMLDivElement, PopoverAnchorProps>((props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Anchor');\n const { onCustomAnchorAdd, onCustomAnchorRemove } = ctx;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return <Popper.Anchor {...props} ref={forwardedRef} />;\n});\nAnchor.displayName = 'Popover.Anchor';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>((props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Trigger');\n const composedRef = useComposedRefs(forwardedRef, ctx.triggerRef);\n const trigger = (\n <Primitive.button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n aria-controls={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n {...props}\n ref={composedRef}\n onClick={composeEventHandlers(props.onClick, ctx.onOpenToggle)}\n />\n );\n return ctx.hasCustomAnchor ? trigger : <Popper.Anchor asChild>{trigger}</Popper.Anchor>;\n});\nTrigger.displayName = 'Popover.Trigger';\n\n/* ─── Portal ──────────────────────────────────────────────────────── */\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nconst Portal: React.FC<PopoverPortalProps> = ({ children, container, forceMount }) => {\n const ctx = usePopoverContext('Popover.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Popover.Portal';\n\n/* ─── Content ─────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, PopoverContentProps>((props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = usePopoverContext('Popover.Content');\n const {\n forceMount = portalCtx.forceMount,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...rest\n } = props;\n\n return (\n <Presence present={forceMount || ctx.open}>\n {ctx.modal ? (\n <ContentModal\n {...rest}\n ref={forwardedRef}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onInteractOutside={onInteractOutside}\n />\n ) : (\n <ContentNonModal\n {...rest}\n ref={forwardedRef}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onInteractOutside={onInteractOutside}\n />\n )}\n </Presence>\n );\n});\nContent.displayName = 'Popover.Content';\n\nconst ContentModal = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Content');\n useScrollLock(ctx.open);\n return (\n <ContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n ctx.triggerRef.current?.focus();\n })}\n />\n );\n },\n);\nContentModal.displayName = 'Popover.ContentModal';\n\nconst ContentNonModal = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Content');\n const hasInteractedOutsideRef = React.useRef(false);\n return (\n <ContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!event.defaultPrevented && !hasInteractedOutsideRef.current) {\n ctx.triggerRef.current?.focus();\n }\n event.preventDefault();\n })}\n onInteractOutside={composeEventHandlers(props.onInteractOutside, (event) => {\n if (!event.defaultPrevented) hasInteractedOutsideRef.current = true;\n const target = event.target as HTMLElement;\n if (ctx.triggerRef.current?.contains(target)) {\n event.preventDefault();\n }\n })}\n />\n );\n },\n);\nContentNonModal.displayName = 'Popover.ContentNonModal';\n\ninterface ContentImplProps extends PopoverContentProps {\n trapFocus?: boolean;\n disableOutsidePointerEvents?: boolean;\n}\n\nconst ContentImpl = React.forwardRef<HTMLDivElement, ContentImplProps>((props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Content');\n const {\n trapFocus,\n disableOutsidePointerEvents,\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n strategy,\n sticky,\n hideWhenDetached,\n updatePositionStrategy,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n children,\n ...rest\n } = props;\n\n return (\n <>\n <FocusGuards />\n <Popper.Content\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n arrowPadding={arrowPadding}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n strategy={strategy}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n updatePositionStrategy={updatePositionStrategy}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={disableOutsidePointerEvents}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onInteractOutside={onInteractOutside}\n onDismiss={() => ctx.onOpenChange(false)}\n >\n <FocusScope\n loop\n trapped={trapFocus}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n style={{ display: 'contents' }}\n >\n <Primitive.div\n role=\"dialog\"\n id={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n tabIndex={-1}\n {...rest}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n </FocusScope>\n </DismissableLayer>\n </Popper.Content>\n </>\n );\n});\nContentImpl.displayName = 'Popover.ContentImpl';\n\n/* ─── Close ────────────────────────────────────────────────────────── */\n\nconst Close = React.forwardRef<HTMLButtonElement, PopoverCloseProps>((props, forwardedRef) => {\n const ctx = usePopoverContext('Popover.Close');\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.onOpenChange(false))}\n />\n );\n});\nClose.displayName = 'Popover.Close';\n\n/* ─── Arrow ────────────────────────────────────────────────────────── */\n\nconst Arrow = React.forwardRef<SVGSVGElement, PopoverArrowProps>((props, forwardedRef) => (\n <Popper.Arrow {...props} ref={forwardedRef} />\n));\nArrow.displayName = 'Popover.Arrow';\n\nexport { Root, Trigger, Anchor, Portal, Content, Close, Arrow };\n","export { Provider, Root, Trigger, Portal, Content, Arrow } from './tooltip';\nexport type {\n TooltipProviderProps,\n TooltipRootProps,\n TooltipTriggerProps,\n TooltipPortalProps,\n TooltipContentProps,\n TooltipArrowProps,\n} from './tooltip.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n Popper,\n VisuallyHidden,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n TooltipProviderProps,\n TooltipRootProps,\n TooltipTriggerProps,\n TooltipPortalProps,\n TooltipContentProps,\n TooltipArrowProps,\n} from './tooltip.types';\n\nconst DEFAULT_DELAY_DURATION = 700;\nconst DEFAULT_SKIP_DELAY_DURATION = 300;\nconst TOOLTIP_OPEN = 'tooltip.open';\n\n/* ─── Provider (shared timing) ───────────────────────────────────────── */\n\ninterface TooltipProviderContextValue {\n isOpenDelayed: boolean;\n delayDuration: number;\n onOpen: () => void;\n onClose: () => void;\n onPointerInTransitChange: (inTransit: boolean) => void;\n isPointerInTransitRef: React.RefObject<boolean>;\n disableHoverableContent: boolean;\n}\n\nconst [TooltipProviderContextProvider, useTooltipProviderContext] =\n createContext<TooltipProviderContextValue>('TooltipProvider', {\n isOpenDelayed: true,\n delayDuration: DEFAULT_DELAY_DURATION,\n onOpen: () => {},\n onClose: () => {},\n onPointerInTransitChange: () => {},\n isPointerInTransitRef: { current: false },\n disableHoverableContent: false,\n });\n\nconst Provider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = DEFAULT_SKIP_DELAY_DURATION,\n disableHoverableContent = false,\n}) => {\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef<number>(0);\n\n React.useEffect(() => {\n const t = skipDelayTimerRef.current;\n return () => window.clearTimeout(t);\n }, []);\n\n return (\n <TooltipProviderContextProvider\n isOpenDelayed={isOpenDelayed}\n delayDuration={delayDuration}\n onOpen={React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, [])}\n onClose={React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration,\n );\n }, [skipDelayDuration])}\n onPointerInTransitChange={React.useCallback((inTransit: boolean) => {\n isPointerInTransitRef.current = inTransit;\n }, [])}\n isPointerInTransitRef={isPointerInTransitRef}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n </TooltipProviderContextProvider>\n );\n};\nProvider.displayName = 'Tooltip.Provider';\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\ninterface TooltipContextValue {\n contentId: string;\n open: boolean;\n stateAttribute: 'closed' | 'delayed-open' | 'instant-open';\n trigger: HTMLButtonElement | null;\n onTriggerChange: (trigger: HTMLButtonElement | null) => void;\n onTriggerEnter: () => void;\n onTriggerLeave: () => void;\n onOpen: () => void;\n onClose: () => void;\n disableHoverableContent: boolean;\n}\n\nconst [TooltipContextProvider, useTooltipContext] = createContext<TooltipContextValue>('Tooltip');\n\nconst Root: React.FC<TooltipRootProps> = ({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n delayDuration,\n disableHoverableContent: disableHoverableContentProp,\n children,\n}) => {\n const providerContext = useTooltipProviderContext('Tooltip.Root');\n const disableHoverableContent =\n disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const _delayDuration = delayDuration ?? providerContext.delayDuration;\n const [trigger, setTrigger] = React.useState<HTMLButtonElement | null>(null);\n const contentId = useId('tooltip-content');\n const openTimerRef = React.useRef(0);\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (isOpen) => {\n if (isOpen) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(isOpen);\n },\n });\n\n const stateAttribute = React.useMemo(() => {\n return open\n ? wasOpenDelayedRef.current\n ? 'delayed-open'\n : 'instant-open'\n : 'closed';\n }, [open]);\n\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, _delayDuration);\n }, [_delayDuration, setOpen]);\n\n React.useEffect(() => () => window.clearTimeout(openTimerRef.current), []);\n\n return (\n <Popper.Root>\n <TooltipContextProvider\n contentId={contentId}\n open={open}\n stateAttribute={stateAttribute}\n trigger={trigger}\n onTriggerChange={setTrigger}\n onTriggerEnter={React.useCallback(() => {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen])}\n onTriggerLeave={React.useCallback(() => {\n if (disableHoverableContent) handleClose();\n else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [disableHoverableContent, handleClose])}\n onOpen={handleOpen}\n onClose={handleClose}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n </TooltipContextProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'Tooltip.Root';\n\n/* ─── Trigger ──────────────────────────────────────────────────────── */\n\nconst Trigger = React.forwardRef<HTMLButtonElement, TooltipTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useTooltipContext('Tooltip.Trigger');\n const providerCtx = useTooltipProviderContext('Tooltip.Trigger');\n const composedRefs = useComposedRefs(forwardedRef, ctx.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n\n const handlePointerUp = React.useCallback(() => {\n isPointerDownRef.current = false;\n }, []);\n\n React.useEffect(() => {\n return () => document.removeEventListener('pointerup', handlePointerUp);\n }, [handlePointerUp]);\n\n return (\n <Popper.Anchor asChild>\n <Primitive.button\n type=\"button\"\n aria-describedby={ctx.open ? ctx.contentId : undefined}\n data-state={ctx.stateAttribute}\n {...props}\n ref={composedRefs}\n onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === 'touch') return;\n if (!isPointerDownRef.current && !providerCtx.isPointerInTransitRef.current) {\n ctx.onTriggerEnter();\n }\n })}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, () => ctx.onTriggerLeave())}\n onPointerDown={composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener('pointerup', handlePointerUp, { once: true });\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) ctx.onOpen();\n })}\n onBlur={composeEventHandlers(props.onBlur, ctx.onClose)}\n onClick={composeEventHandlers(props.onClick, ctx.onClose)}\n />\n </Popper.Anchor>\n );\n },\n);\nTrigger.displayName = 'Tooltip.Trigger';\n\n/* ─── Portal ───────────────────────────────────────────────────────── */\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nconst Portal: React.FC<TooltipPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useTooltipContext('Tooltip.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Tooltip.Portal';\n\n/* ─── Content ──────────────────────────────────────────────────────── */\n\nconst Content = React.forwardRef<HTMLDivElement, TooltipContentProps>(\n (props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useTooltipContext('Tooltip.Content');\n const {\n forceMount = portalCtx.forceMount,\n side = 'top',\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n avoidCollisions,\n collisionPadding,\n onEscapeKeyDown,\n onPointerDownOutside,\n children,\n ...rest\n } = props;\n\n return (\n <Presence present={forceMount || ctx.open}>\n <Popper.Content\n data-state={ctx.stateAttribute}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n arrowPadding={arrowPadding}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={(event) => {\n if (ctx.disableHoverableContent) {\n event.preventDefault();\n }\n onPointerDownOutside?.(event.detail.originalEvent);\n }}\n onFocusOutside={(event) => event.preventDefault()}\n onDismiss={() => ctx.onClose()}\n >\n <Primitive.div\n data-state={ctx.stateAttribute}\n role=\"tooltip\"\n id={ctx.contentId}\n {...rest}\n ref={forwardedRef}\n style={{ ...rest.style, pointerEvents: 'auto' }}\n >\n {children}\n <VisuallyHidden>{children}</VisuallyHidden>\n </Primitive.div>\n </DismissableLayer>\n </Popper.Content>\n </Presence>\n );\n },\n);\nContent.displayName = 'Tooltip.Content';\n\n/* ─── Arrow ────────────────────────────────────────────────────────── */\n\nconst Arrow = React.forwardRef<SVGSVGElement, TooltipArrowProps>((props, forwardedRef) => (\n <Popper.Arrow {...props} ref={forwardedRef} />\n));\nArrow.displayName = 'Tooltip.Arrow';\n\nexport { Provider, Root, Trigger, Portal, Content, Arrow };\n","export { Root, Trigger, Portal, Content, Arrow } from './hover-card';\nexport type {\n HoverCardRootProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './hover-card.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n Popper,\n} from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n HoverCardRootProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './hover-card.types';\n\nconst DEFAULT_OPEN_DELAY = 700;\nconst DEFAULT_CLOSE_DELAY = 300;\n\ninterface HoverCardContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onOpen: () => void;\n onClose: () => void;\n onDismiss: () => void;\n hasSelectionRef: React.RefObject<boolean>;\n isPointerDownOnContentRef: React.RefObject<boolean>;\n}\n\nconst [HoverCardProvider, useHoverCardContext] = createContext<HoverCardContextValue>('HoverCard');\n\nconst Root: React.FC<HoverCardRootProps> = ({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n openDelay = DEFAULT_OPEN_DELAY,\n closeDelay = DEFAULT_CLOSE_DELAY,\n children,\n}) => {\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n React.useEffect(() => {\n return () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <Popper.Root>\n <HoverCardProvider\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n hasSelectionRef={hasSelectionRef}\n isPointerDownOnContentRef={isPointerDownOnContentRef}\n >\n {children}\n </HoverCardProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'HoverCard.Root';\n\nconst Trigger = React.forwardRef<HTMLAnchorElement, HoverCardTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useHoverCardContext('HoverCard.Trigger');\n return (\n <Popper.Anchor asChild>\n <Primitive.a\n data-state={ctx.open ? 'open' : 'closed'}\n {...props}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, (event) => {\n if (event.pointerType === 'touch') return;\n ctx.onOpen();\n })}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, (event) => {\n if (event.pointerType === 'touch') return;\n ctx.onClose();\n })}\n onFocus={composeEventHandlers(props.onFocus, ctx.onOpen)}\n onBlur={composeEventHandlers(props.onBlur, ctx.onClose)}\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </Popper.Anchor>\n );\n },\n);\nTrigger.displayName = 'HoverCard.Trigger';\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nconst Portal: React.FC<HoverCardPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useHoverCardContext('HoverCard.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'HoverCard.Portal';\n\nconst Content = React.forwardRef<HTMLDivElement, HoverCardContentProps>(\n (props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useHoverCardContext('HoverCard.Content');\n const {\n forceMount = portalCtx.forceMount,\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n avoidCollisions,\n collisionPadding,\n children,\n ...rest\n } = props;\n\n return (\n <Presence present={forceMount || ctx.open}>\n <Popper.Content\n data-state={ctx.open ? 'open' : 'closed'}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n arrowPadding={arrowPadding}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onEscapeKeyDown={() => ctx.onDismiss()}\n onPointerDownOutside={() => ctx.onDismiss()}\n onFocusOutside={(event) => event.preventDefault()}\n onDismiss={ctx.onDismiss}\n >\n <Primitive.div\n {...rest}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(rest.onPointerEnter, (event) => {\n if (event.pointerType === 'touch') return;\n ctx.onOpen();\n })}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, (event) => {\n if (event.pointerType === 'touch') return;\n ctx.onClose();\n })}\n >\n {children}\n </Primitive.div>\n </DismissableLayer>\n </Popper.Content>\n </Presence>\n );\n },\n);\nContent.displayName = 'HoverCard.Content';\n\nconst Arrow = React.forwardRef<SVGSVGElement, HoverCardArrowProps>((props, forwardedRef) => (\n <Popper.Arrow {...props} ref={forwardedRef} />\n));\nArrow.displayName = 'HoverCard.Arrow';\n\nexport { Root, Trigger, Portal, Content, Arrow };\n","export {\n Provider,\n Viewport,\n Root,\n Title,\n Description,\n Action,\n Close,\n Portal,\n} from './toast';\nexport type {\n ToastProviderProps,\n ToastViewportProps,\n ToastRootProps,\n ToastTitleProps,\n ToastDescriptionProps,\n ToastActionProps,\n ToastCloseProps,\n SwipeDirection,\n} from './toast.types';\n","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n VisuallyHidden,\n} from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n ToastProviderProps,\n ToastViewportProps,\n ToastRootProps,\n ToastTitleProps,\n ToastDescriptionProps,\n ToastActionProps,\n ToastCloseProps,\n SwipeDirection,\n} from './toast.types';\n\nconst DEFAULT_DURATION = 5000;\nconst DEFAULT_SWIPE_THRESHOLD = 50;\nconst VIEWPORT_NAME = 'ToastViewport';\n\n/* ─── Provider ───────────────────────────────────────────────────────── */\n\ninterface ToastProviderContextValue {\n label: string;\n duration: number;\n swipeDirection: SwipeDirection;\n swipeThreshold: number;\n toastCount: number;\n viewport: HTMLOListElement | null;\n onViewportChange: (viewport: HTMLOListElement | null) => void;\n onToastAdd: () => void;\n onToastRemove: () => void;\n isFocusedToastEscapeKeyDownRef: React.RefObject<boolean>;\n isClosePausedRef: React.RefObject<boolean>;\n}\n\nconst [ToastProviderContextProvider, useToastProviderContext] =\n createContext<ToastProviderContextValue>('ToastProvider');\n\nconst Provider: React.FC<ToastProviderProps> = ({\n children,\n label = 'Notifications',\n duration = DEFAULT_DURATION,\n swipeDirection = 'right',\n swipeThreshold = DEFAULT_SWIPE_THRESHOLD,\n}) => {\n const [viewport, setViewport] = React.useState<HTMLOListElement | null>(null);\n const [toastCount, setToastCount] = React.useState(0);\n const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n const isClosePausedRef = React.useRef(false);\n return (\n <ToastProviderContextProvider\n label={label}\n duration={duration}\n swipeDirection={swipeDirection}\n swipeThreshold={swipeThreshold}\n toastCount={toastCount}\n viewport={viewport}\n onViewportChange={setViewport}\n onToastAdd={React.useCallback(() => setToastCount((c) => c + 1), [])}\n onToastRemove={React.useCallback(() => setToastCount((c) => c - 1), [])}\n isFocusedToastEscapeKeyDownRef={isFocusedToastEscapeKeyDownRef}\n isClosePausedRef={isClosePausedRef}\n >\n {children}\n </ToastProviderContextProvider>\n );\n};\nProvider.displayName = 'Toast.Provider';\n\n/* ─── Viewport ───────────────────────────────────────────────────────── */\n\nconst Viewport = React.forwardRef<HTMLOListElement, ToastViewportProps>(\n (props, forwardedRef) => {\n const { hotkey = ['F8'], label = '{hotkey} hotkey to focus toasts', ...viewportProps } = props;\n const ctx = useToastProviderContext(VIEWPORT_NAME);\n const ref = React.useRef<HTMLOListElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, ctx.onViewportChange);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const hasToasts = ctx.toastCount > 0;\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = hotkey.every((k) =>\n (event as unknown as Record<string, boolean>)[k] || event.code === k,\n );\n if (isHotkeyPressed) ref.current?.focus();\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkey]);\n\n return (\n <DismissableLayer\n asChild\n onFocusOutside={(event) => event.preventDefault()}\n onDismiss={() => {}}\n >\n <Primitive.ol\n tabIndex={-1}\n aria-label={label.replace('{hotkey}', hotkeyLabel)}\n {...viewportProps}\n ref={composedRefs}\n // Hide when empty so it doesn't obstruct clicks\n style={{\n pointerEvents: hasToasts ? undefined : 'none',\n ...viewportProps.style,\n }}\n />\n </DismissableLayer>\n );\n },\n);\nViewport.displayName = VIEWPORT_NAME;\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\ninterface ToastContextValue {\n onClose: () => void;\n}\n\nconst [ToastContextProvider, useToastContext] = createContext<ToastContextValue>('Toast');\n\nconst Root = React.forwardRef<HTMLLIElement, ToastRootProps>((props, forwardedRef) => {\n const {\n type = 'foreground',\n duration: durationProp,\n open: openProp,\n defaultOpen = true,\n onOpenChange,\n forceMount,\n onEscapeKeyDown,\n onPause,\n onResume,\n onSwipeStart,\n onSwipeMove,\n onSwipeEnd,\n onSwipeCancel,\n ...rest\n } = props;\n\n const ctx = useToastProviderContext('Toast.Root');\n const duration = durationProp ?? ctx.duration;\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const closeTimerStartTimeRef = React.useRef(0);\n const closeTimerRemainingTimeRef = React.useRef(duration);\n const closeTimerRef = React.useRef(0);\n\n const handleClose = React.useCallback(() => setOpen(false), [setOpen]);\n\n const startTimer = React.useCallback(\n (remaining: number) => {\n if (!remaining || remaining === Infinity) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerStartTimeRef.current = new Date().getTime();\n closeTimerRef.current = window.setTimeout(handleClose, remaining);\n },\n [handleClose],\n );\n\n React.useEffect(() => {\n const viewport = ctx.viewport;\n if (!viewport) return;\n const handlePause = () => {\n const elapsed = new Date().getTime() - closeTimerStartTimeRef.current;\n closeTimerRemainingTimeRef.current -= elapsed;\n window.clearTimeout(closeTimerRef.current);\n onPause?.();\n };\n const handleResume = () => {\n startTimer(closeTimerRemainingTimeRef.current);\n onResume?.();\n };\n viewport.addEventListener('pointerenter', handlePause);\n viewport.addEventListener('pointerleave', handleResume);\n viewport.addEventListener('focusin', handlePause);\n viewport.addEventListener('focusout', handleResume);\n return () => {\n viewport.removeEventListener('pointerenter', handlePause);\n viewport.removeEventListener('pointerleave', handleResume);\n viewport.removeEventListener('focusin', handlePause);\n viewport.removeEventListener('focusout', handleResume);\n };\n }, [ctx.viewport, onPause, onResume, startTimer]);\n\n React.useEffect(() => {\n if (open && !ctx.isClosePausedRef.current) {\n closeTimerRemainingTimeRef.current = duration;\n startTimer(duration);\n }\n return () => window.clearTimeout(closeTimerRef.current);\n }, [open, duration, ctx.isClosePausedRef, startTimer]);\n\n const { onToastAdd, onToastRemove } = ctx;\n React.useEffect(() => {\n onToastAdd();\n return () => onToastRemove();\n }, [onToastAdd, onToastRemove]);\n\n const swipeStartPointRef = React.useRef<{ x: number; y: number } | null>(null);\n const swipeDeltaRef = React.useRef<{ x: number; y: number } | null>(null);\n\n const toast = (\n <Primitive.li\n aria-live={type === 'foreground' ? 'assertive' : 'polite'}\n aria-atomic\n data-state={open ? 'open' : 'closed'}\n data-swipe-direction={ctx.swipeDirection}\n tabIndex={0}\n {...rest}\n ref={forwardedRef}\n style={{\n userSelect: 'none',\n touchAction: 'none',\n ...rest.style,\n }}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key !== 'Escape') return;\n onEscapeKeyDown?.(event.nativeEvent);\n if (!event.nativeEvent.defaultPrevented) {\n ctx.isFocusedToastEscapeKeyDownRef.current = true;\n handleClose();\n }\n })}\n onPointerDown={composeEventHandlers(rest.onPointerDown, (event) => {\n if (event.button !== 0) return;\n swipeStartPointRef.current = { x: event.clientX, y: event.clientY };\n })}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n if (!swipeStartPointRef.current) return;\n const x = event.clientX - swipeStartPointRef.current.x;\n const y = event.clientY - swipeStartPointRef.current.y;\n const hasMoved = swipeDeltaRef.current !== null;\n const isHorizontal =\n ctx.swipeDirection === 'left' || ctx.swipeDirection === 'right';\n const clampedX = ['left', 'up'].includes(ctx.swipeDirection)\n ? Math.min(0, x)\n : Math.max(0, x);\n const clampedY = ['up', 'left'].includes(ctx.swipeDirection)\n ? Math.min(0, y)\n : Math.max(0, y);\n const moveStarted = Math.abs(isHorizontal ? clampedX : clampedY) > 10;\n const target = event.currentTarget as HTMLElement;\n if (hasMoved || moveStarted) {\n swipeDeltaRef.current = { x: clampedX, y: clampedY };\n const move = isHorizontal ? clampedX : clampedY;\n target.setAttribute('data-swipe', 'move');\n target.style.setProperty(\n '--structyl-toast-swipe-move-x',\n `${clampedX}px`,\n );\n target.style.setProperty(\n '--structyl-toast-swipe-move-y',\n `${clampedY}px`,\n );\n if (!hasMoved) onSwipeStart?.(event);\n onSwipeMove?.(event);\n if (Math.abs(move) > ctx.swipeThreshold) {\n target.setAttribute('data-swipe', 'end');\n target.style.setProperty(\n '--structyl-toast-swipe-end-x',\n `${clampedX}px`,\n );\n target.style.setProperty(\n '--structyl-toast-swipe-end-y',\n `${clampedY}px`,\n );\n onSwipeEnd?.(event);\n handleClose();\n swipeStartPointRef.current = null;\n swipeDeltaRef.current = null;\n }\n }\n })}\n onPointerUp={composeEventHandlers(rest.onPointerUp, (event) => {\n const target = event.currentTarget as HTMLElement;\n if (swipeDeltaRef.current) {\n target.setAttribute('data-swipe', 'cancel');\n target.style.removeProperty('--structyl-toast-swipe-move-x');\n target.style.removeProperty('--structyl-toast-swipe-move-y');\n onSwipeCancel?.(event);\n }\n swipeStartPointRef.current = null;\n swipeDeltaRef.current = null;\n })}\n />\n );\n\n const content = <Presence present={forceMount || open}>{toast}</Presence>;\n\n return (\n <ToastContextProvider onClose={handleClose}>\n {ctx.viewport ? ReactDOM.createPortal(content, ctx.viewport) : content}\n </ToastContextProvider>\n );\n});\nRoot.displayName = 'Toast.Root';\n\n/* ─── Title / Description / Action / Close ───────────────────────────── */\n\nconst Title = React.forwardRef<HTMLDivElement, ToastTitleProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} />\n));\nTitle.displayName = 'Toast.Title';\n\nconst Description = React.forwardRef<HTMLDivElement, ToastDescriptionProps>(\n (props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />,\n);\nDescription.displayName = 'Toast.Description';\n\nconst Action = React.forwardRef<HTMLButtonElement, ToastActionProps>(\n (props, forwardedRef) => {\n const { altText, children, ...rest } = props;\n const ctx = useToastContext('Toast.Action');\n return (\n <>\n <Primitive.button\n type=\"button\"\n {...rest}\n ref={forwardedRef}\n onClick={composeEventHandlers(rest.onClick, ctx.onClose)}\n >\n {children}\n </Primitive.button>\n <VisuallyHidden>{altText}</VisuallyHidden>\n </>\n );\n },\n);\nAction.displayName = 'Toast.Action';\n\nconst Close = React.forwardRef<HTMLButtonElement, ToastCloseProps>((props, forwardedRef) => {\n const ctx = useToastContext('Toast.Close');\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, ctx.onClose)}\n />\n );\n});\nClose.displayName = 'Toast.Close';\n\n/* ─── Portal helper ──────────────────────────────────────────────────── */\n\nconst Portal: React.FC<{\n children?: React.ReactNode;\n container?: Element | DocumentFragment | null;\n}> = ({ children, container }) => (\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n);\nPortal.displayName = 'Toast.Portal';\n\nexport { Provider, Viewport, Root, Title, Description, Action, Close, Portal };\n","export {\n Root,\n Anchor,\n Portal,\n Content,\n Item,\n Group,\n Label,\n Separator,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Sub,\n SubTrigger,\n SubContent,\n} from './menu';\nexport type {\n MenuRootProps,\n MenuAnchorProps,\n MenuPortalProps,\n MenuContentProps,\n MenuItemProps,\n MenuGroupProps,\n MenuLabelProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuItemIndicatorProps,\n MenuSeparatorProps,\n} from './menu.types';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n FocusScope,\n FocusGuards,\n DismissableLayer,\n RovingFocusGroup,\n RovingFocusItem,\n useScrollLock,\n Popper,\n useDirection,\n} from '@structyl/core';\nimport { useId, useComposedRefs, useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type {\n MenuRootProps,\n MenuAnchorProps,\n MenuPortalProps,\n MenuContentProps,\n MenuItemProps,\n MenuGroupProps,\n MenuLabelProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuItemIndicatorProps,\n MenuSeparatorProps,\n} from './menu.types';\n\nconst SELECTION_KEYS = ['Enter', ' '];\nconst FIRST_KEYS = ['ArrowDown', 'PageUp', 'Home'];\nconst LAST_KEYS = ['ArrowUp', 'PageDown', 'End'];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS: Record<'ltr' | 'rtl', string[]> = {\n ltr: [...SELECTION_KEYS, 'ArrowRight'],\n rtl: [...SELECTION_KEYS, 'ArrowLeft'],\n};\nconst SUB_CLOSE_KEYS: Record<'ltr' | 'rtl', string[]> = {\n ltr: ['ArrowLeft'],\n rtl: ['ArrowRight'],\n};\n\ninterface MenuContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n content: HTMLDivElement | null;\n onContentChange: (content: HTMLDivElement | null) => void;\n}\n\nconst [MenuProvider, useMenuContext] = createContext<MenuContextValue>('Menu');\n\ninterface MenuRootContextValue {\n onClose: () => void;\n isUsingKeyboardRef: React.RefObject<boolean>;\n dir: 'ltr' | 'rtl';\n modal: boolean;\n}\n\nconst [MenuRootContextProvider, useMenuRootContext] =\n createContext<MenuRootContextValue>('MenuRoot');\n\n/* ─── Root ─────────────────────────────────────────────────────────── */\n\nconst Root: React.FC<MenuRootProps> = ({\n open: openProp = false,\n onOpenChange,\n modal = true,\n dir,\n children,\n}) => {\n const direction = useDirection(dir);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const isUsingKeyboardRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener('pointerdown', handlePointer, { capture: true, once: true });\n document.addEventListener('pointermove', handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => (isUsingKeyboardRef.current = false);\n document.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener('keydown', handleKeyDown, { capture: true });\n document.removeEventListener('pointerdown', handlePointer, { capture: true });\n document.removeEventListener('pointermove', handlePointer, { capture: true });\n };\n }, []);\n\n return (\n <Popper.Root>\n <MenuProvider\n open={openProp}\n onOpenChange={(v) => onOpenChange?.(v)}\n content={content}\n onContentChange={setContent}\n >\n <MenuRootContextProvider\n onClose={React.useCallback(() => onOpenChange?.(false), [onOpenChange])}\n isUsingKeyboardRef={isUsingKeyboardRef}\n dir={direction}\n modal={modal}\n >\n {children}\n </MenuRootContextProvider>\n </MenuProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'Menu.Root';\n\n/* ─── Anchor ──────────────────────────────────────────────────────── */\n\nconst Anchor = React.forwardRef<HTMLDivElement, MenuAnchorProps>((props, forwardedRef) => (\n <Popper.Anchor {...props} ref={forwardedRef} />\n));\nAnchor.displayName = 'Menu.Anchor';\n\n/* ─── Portal ──────────────────────────────────────────────────────── */\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nconst Portal: React.FC<MenuPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useMenuContext('Menu.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Menu.Portal';\n\n/* ─── Content ─────────────────────────────────────────────────────── */\n\ninterface MenuContentContextValue {\n onItemEnter: (event: React.PointerEvent) => void;\n onItemLeave: (event: React.PointerEvent) => void;\n onTriggerLeave: (event: React.PointerEvent) => void;\n searchRef: React.RefObject<string>;\n pointerGraceTimerRef: React.RefObject<number>;\n onPointerGraceIntentChange: (intent: GraceIntent | null) => void;\n}\n\nconst [MenuContentContextProvider, useMenuContentContext] =\n createContext<MenuContentContextValue>('MenuContent');\n\ntype GraceIntent = { area: Point[]; side: 'top' | 'right' | 'bottom' | 'left' };\ntype Point = { x: number; y: number };\n\nconst Content = React.forwardRef<HTMLDivElement, MenuContentProps>((props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useMenuContext('Menu.Content');\n const rootCtx = useMenuRootContext('Menu.Content');\n const {\n forceMount = portalCtx.forceMount,\n loop = false,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n side,\n sideOffset,\n align,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n strategy,\n sticky,\n hideWhenDetached,\n updatePositionStrategy,\n ...contentProps\n } = props;\n\n const [currentItemId, setCurrentItemId] = React.useState<string | null>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedAllRefs = useComposedRefs(forwardedRef, contentRef, ctx.onContentChange);\n const searchRef = React.useRef('');\n const timerRef = React.useRef(0);\n const pointerDirRef = React.useRef<'right' | 'left'>('right');\n const lastPointerXRef = React.useRef(0);\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef<GraceIntent | null>(null);\n\n useScrollLock(rootCtx.modal && ctx.open);\n\n const handleTypeaheadSearch = (key: string) => {\n const search = searchRef.current + key;\n const items = getOpenItems(contentRef.current);\n const focusedItem = document.activeElement as HTMLElement | null;\n const currentMatch = items.find((i) => i === focusedItem)?.textContent ?? '';\n const values = items.map((i) => i.textContent || '');\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((i) => i.textContent === nextMatch);\n function updateSearch(s: string) {\n searchRef.current = s;\n window.clearTimeout(timerRef.current);\n if (s !== '') timerRef.current = window.setTimeout(() => updateSearch(''), 1000);\n }\n if (newItem) newItem.focus();\n updateSearch(search);\n };\n\n React.useEffect(() => () => window.clearTimeout(timerRef.current), []);\n\n return (\n <MenuContentContextProvider\n searchRef={searchRef}\n onItemEnter={React.useCallback((event) => {\n if (isPointerMovingToSubmenu(event, pointerGraceIntentRef.current)) {\n event.preventDefault();\n }\n }, [])}\n onItemLeave={React.useCallback((event) => {\n if (isPointerMovingToSubmenu(event, pointerGraceIntentRef.current)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n }, [])}\n onTriggerLeave={React.useCallback((event) => {\n if (isPointerMovingToSubmenu(event, pointerGraceIntentRef.current)) {\n event.preventDefault();\n }\n }, [])}\n pointerGraceTimerRef={pointerGraceTimerRef}\n onPointerGraceIntentChange={React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, [])}\n >\n <Presence present={forceMount || ctx.open}>\n <Popper.Content\n data-state={ctx.open ? 'open' : 'closed'}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n strategy={strategy}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n updatePositionStrategy={updatePositionStrategy}\n >\n <FocusGuards />\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={rootCtx.modal && ctx.open}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onInteractOutside={onInteractOutside}\n onDismiss={() => rootCtx.onClose()}\n >\n <FocusScope\n loop\n trapped={rootCtx.modal}\n onMountAutoFocus={(event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }}\n onUnmountAutoFocus={onCloseAutoFocus}\n style={{ display: 'contents' }}\n >\n <RovingFocusGroup\n asChild\n dir={rootCtx.dir}\n orientation=\"vertical\"\n loop={loop}\n currentTabStopId={currentItemId}\n onCurrentTabStopIdChange={setCurrentItemId}\n >\n <Primitive.div\n role=\"menu\"\n aria-orientation=\"vertical\"\n data-state={ctx.open ? 'open' : 'closed'}\n dir={rootCtx.dir}\n tabIndex={-1}\n {...contentProps}\n ref={composedAllRefs}\n onKeyDown={composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target as HTMLElement;\n const isKeyDownInside = target.closest('[role=\"menu\"]') === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === 'Tab') event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n if (event.target !== event.currentTarget) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getOpenItems(event.currentTarget);\n if (LAST_KEYS.includes(event.key)) items.reverse();\n focusFirst(items);\n })}\n onBlur={composeEventHandlers(contentProps.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = '';\n }\n })}\n onPointerMove={composeEventHandlers(\n contentProps.onPointerMove,\n whenMouse((event) => {\n const target = event.target as HTMLElement;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? 'right' : 'left';\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n }),\n )}\n />\n </RovingFocusGroup>\n </FocusScope>\n </DismissableLayer>\n </Popper.Content>\n </Presence>\n </MenuContentContextProvider>\n );\n});\nContent.displayName = 'Menu.Content';\n\n/* ─── Item ────────────────────────────────────────────────────────── */\n\nconst Item = React.forwardRef<HTMLDivElement, MenuItemProps>((props, forwardedRef) => {\n const { disabled = false, onSelect, ...rest } = props;\n const itemRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, itemRef);\n const rootCtx = useMenuRootContext('Menu.Item');\n const contentCtx = useMenuContentContext('Menu.Item');\n const isFocused = React.useRef(false);\n const handleSelect = () => {\n const menuItem = itemRef.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent('menu.itemSelect', {\n bubbles: true,\n cancelable: true,\n });\n menuItem.addEventListener('menu.itemSelect', (e) => onSelect?.(e as unknown as Event), {\n once: true,\n });\n menuItem.dispatchEvent(itemSelectEvent);\n if (!itemSelectEvent.defaultPrevented) rootCtx.onClose();\n }\n };\n return (\n <RovingFocusItem asChild focusable={!disabled}>\n <Primitive.div\n role=\"menuitem\"\n data-highlighted={undefined}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? undefined : -1}\n {...rest}\n ref={composedRefs}\n onPointerMove={composeEventHandlers(\n rest.onPointerMove,\n whenMouse((event) => {\n if (disabled) contentCtx.onItemLeave(event);\n else {\n contentCtx.onItemEnter(event);\n if (!event.defaultPrevented) {\n const target = event.currentTarget as HTMLElement;\n target.focus({ preventScroll: true });\n }\n }\n }),\n )}\n onPointerLeave={composeEventHandlers(\n rest.onPointerLeave,\n whenMouse((event) => contentCtx.onItemLeave(event)),\n )}\n onClick={composeEventHandlers(rest.onClick, () => {\n if (!disabled) handleSelect();\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (disabled) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.preventDefault();\n handleSelect();\n }\n })}\n onFocus={composeEventHandlers(rest.onFocus, () => {\n isFocused.current = true;\n })}\n onBlur={composeEventHandlers(rest.onBlur, () => {\n isFocused.current = false;\n })}\n />\n </RovingFocusItem>\n );\n});\nItem.displayName = 'Menu.Item';\n\n/* ─── Group / Label / Separator ────────────────────────────────────── */\n\nconst Group = React.forwardRef<HTMLDivElement, MenuGroupProps>((props, forwardedRef) => (\n <Primitive.div role=\"group\" {...props} ref={forwardedRef} />\n));\nGroup.displayName = 'Menu.Group';\n\nconst Label = React.forwardRef<HTMLDivElement, MenuLabelProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} />\n));\nLabel.displayName = 'Menu.Label';\n\nconst Separator = React.forwardRef<HTMLDivElement, MenuSeparatorProps>((props, forwardedRef) => (\n <Primitive.div role=\"separator\" aria-orientation=\"horizontal\" {...props} ref={forwardedRef} />\n));\nSeparator.displayName = 'Menu.Separator';\n\n/* ─── CheckboxItem / RadioGroup / RadioItem / ItemIndicator ─────────── */\n\ninterface ItemIndicatorContextValue {\n checked: boolean | 'indeterminate';\n}\n\nconst [ItemIndicatorContextProvider, useItemIndicatorContext] =\n createContext<ItemIndicatorContextValue>('MenuItemIndicator', { checked: false });\n\nconst CheckboxItem = React.forwardRef<HTMLDivElement, MenuCheckboxItemProps>(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, onSelect, ...itemProps } = props;\n return (\n <ItemIndicatorContextProvider checked={checked}>\n <Item\n role=\"menuitemcheckbox\"\n aria-checked={checked === 'indeterminate' ? 'mixed' : checked}\n data-state={getCheckedState(checked)}\n {...itemProps}\n ref={forwardedRef}\n onSelect={composeEventHandlers(\n onSelect,\n () => onCheckedChange?.(checked === 'indeterminate' ? true : !checked),\n { checkForDefaultPrevented: false },\n )}\n />\n </ItemIndicatorContextProvider>\n );\n },\n);\nCheckboxItem.displayName = 'Menu.CheckboxItem';\n\ninterface RadioGroupContextValue {\n value?: string;\n onValueChange: (v: string) => void;\n}\n\nconst [MenuRadioGroupContextProvider, useMenuRadioGroupContext] =\n createContext<RadioGroupContextValue>('MenuRadioGroup', {\n value: undefined,\n onValueChange: () => {},\n });\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, MenuRadioGroupProps>((props, forwardedRef) => {\n const { value, onValueChange = () => {}, ...rest } = props;\n return (\n <MenuRadioGroupContextProvider value={value} onValueChange={onValueChange}>\n <Group {...rest} ref={forwardedRef} />\n </MenuRadioGroupContextProvider>\n );\n});\nRadioGroup.displayName = 'Menu.RadioGroup';\n\nconst RadioItem = React.forwardRef<HTMLDivElement, MenuRadioItemProps>((props, forwardedRef) => {\n const { value, onSelect, ...rest } = props;\n const rg = useMenuRadioGroupContext('Menu.RadioItem');\n const checked = value === rg.value;\n return (\n <ItemIndicatorContextProvider checked={checked}>\n <Item\n role=\"menuitemradio\"\n aria-checked={checked}\n data-state={getCheckedState(checked)}\n {...rest}\n ref={forwardedRef}\n onSelect={composeEventHandlers(onSelect, () => rg.onValueChange(value), {\n checkForDefaultPrevented: false,\n })}\n />\n </ItemIndicatorContextProvider>\n );\n});\nRadioItem.displayName = 'Menu.RadioItem';\n\nconst ItemIndicator = React.forwardRef<HTMLSpanElement, MenuItemIndicatorProps>(\n (props, forwardedRef) => {\n const { forceMount, ...rest } = props;\n const ctx = useItemIndicatorContext('Menu.ItemIndicator');\n return (\n <Presence present={forceMount || ctx.checked === 'indeterminate' || ctx.checked === true}>\n <Primitive.span data-state={getCheckedState(ctx.checked)} {...rest} ref={forwardedRef} />\n </Presence>\n );\n },\n);\nItemIndicator.displayName = 'Menu.ItemIndicator';\n\n/* ─── Sub / SubTrigger / SubContent ─────────────────────────────────── */\n\ninterface MenuSubContextValue {\n triggerId: string;\n triggerRef: React.RefObject<HTMLDivElement | null>;\n contentId: string;\n parentMenuContent: HTMLDivElement | null;\n}\n\nconst [MenuSubProvider, useMenuSubContext] = createContext<MenuSubContextValue>('MenuSub');\n\nconst Sub: React.FC<{\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}> = ({ children, open: openProp, defaultOpen, onOpenChange }) => {\n const parentMenu = useMenuContext('Menu.Sub');\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n return (\n <Popper.Root>\n <MenuProvider\n open={open}\n onOpenChange={(v) => setOpen(v)}\n content={content}\n onContentChange={setContent}\n >\n <MenuSubProvider\n triggerId={useId('menu-sub-trigger')}\n triggerRef={triggerRef}\n contentId={useId('menu-sub-content')}\n parentMenuContent={parentMenu.content}\n >\n {children}\n </MenuSubProvider>\n </MenuProvider>\n </Popper.Root>\n );\n};\nSub.displayName = 'Menu.Sub';\n\nconst SubTrigger = React.forwardRef<HTMLDivElement, MenuItemProps>((props, forwardedRef) => {\n const ctx = useMenuContext('Menu.SubTrigger');\n const rootCtx = useMenuRootContext('Menu.SubTrigger');\n const subCtx = useMenuSubContext('Menu.SubTrigger');\n const contentCtx = useMenuContentContext('Menu.SubTrigger');\n const composedRef = useComposedRefs(forwardedRef, subCtx.triggerRef);\n const openTimerRef = React.useRef(0);\n const clearOpenTimer = () => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n };\n React.useEffect(() => clearOpenTimer, []);\n return (\n <Popper.Anchor asChild>\n <Item\n id={subCtx.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n aria-controls={subCtx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n {...props}\n ref={composedRef}\n onClick={(event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!ctx.open) ctx.onOpenChange(true);\n }}\n onPointerMove={composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentCtx.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !ctx.open && !openTimerRef.current) {\n openTimerRef.current = window.setTimeout(() => {\n ctx.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n }),\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = ctx.content?.getBoundingClientRect();\n if (contentRect) {\n const side = ctx.content!.dataset.side as 'top' | 'right' | 'bottom' | 'left';\n contentCtx.onPointerGraceIntentChange({\n area: [\n { x: event.clientX + 1, y: event.clientY },\n { x: contentRect.left, y: contentRect.top },\n { x: contentRect.right, y: contentRect.top },\n { x: contentRect.right, y: contentRect.bottom },\n { x: contentRect.left, y: contentRect.bottom },\n ],\n side: side ?? 'right',\n });\n window.clearTimeout(contentCtx.pointerGraceTimerRef.current as unknown as number);\n } else {\n contentCtx.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentCtx.onPointerGraceIntentChange(null);\n }\n }),\n )}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentCtx.searchRef.current !== '';\n if (props.disabled || (isTypingAhead && event.key === ' ')) return;\n if (SUB_OPEN_KEYS[rootCtx.dir].includes(event.key)) {\n ctx.onOpenChange(true);\n ctx.content?.focus();\n event.preventDefault();\n }\n })}\n />\n </Popper.Anchor>\n );\n});\nSubTrigger.displayName = 'Menu.SubTrigger';\n\nconst SubContent = React.forwardRef<HTMLDivElement, Omit<MenuContentProps, 'side' | 'align'>>(\n (props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useMenuContext('Menu.SubContent');\n const rootCtx = useMenuRootContext('Menu.SubContent');\n const subCtx = useMenuSubContext('Menu.SubContent');\n const { forceMount = portalCtx.forceMount, ...rest } = props;\n return (\n <Content\n id={subCtx.contentId}\n aria-labelledby={subCtx.triggerId}\n align=\"start\"\n side={rootCtx.dir === 'rtl' ? 'left' : 'right'}\n forceMount={forceMount}\n {...rest}\n ref={forwardedRef}\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n }}\n onFocusOutside={composeEventHandlers(rest.onFocusOutside, (event) => {\n const target = event.target as HTMLElement;\n if (target !== subCtx.triggerRef.current) ctx.onOpenChange(false);\n })}\n onEscapeKeyDown={composeEventHandlers(rest.onEscapeKeyDown, (event) => {\n rootCtx.onClose();\n event.preventDefault();\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target as HTMLElement);\n const isCloseKey = SUB_CLOSE_KEYS[rootCtx.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n ctx.onOpenChange(false);\n subCtx.triggerRef.current?.focus();\n event.preventDefault();\n }\n })}\n />\n );\n },\n);\nSubContent.displayName = 'Menu.SubContent';\n\n/* ─── helpers ─────────────────────────────────────────────────────────── */\n\nfunction getCheckedState(checked: boolean | 'indeterminate') {\n return checked === 'indeterminate' ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nfunction getOpenItems(content: HTMLDivElement | null): HTMLElement[] {\n if (!content) return [];\n return Array.from(\n content.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([data-disabled]), [role=\"menuitemcheckbox\"]:not([data-disabled]), [role=\"menuitemradio\"]:not([data-disabled])',\n ),\n );\n}\n\nfunction focusFirst(items: HTMLElement[]) {\n const prev = document.activeElement;\n for (const item of items) {\n if (item === prev) return;\n item.focus();\n if (document.activeElement !== prev) return;\n }\n}\n\nfunction getNextMatch(values: string[], search: string, currentMatch?: string) {\n const isRepeated = search.length > 1 && Array.from(search).every((c) => c === search[0]);\n const normalized = isRepeated ? (search[0] ?? '') : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrapped = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalized.length === 1;\n if (excludeCurrentMatch) wrapped = wrapped.filter((v) => v !== currentMatch);\n const nextMatch = wrapped.find((v) => v.toLowerCase().startsWith(normalized.toLowerCase()));\n return nextMatch !== currentMatch ? nextMatch : undefined;\n}\n\nfunction wrapArray<T>(arr: T[], startIdx: number): T[] {\n return arr.map((_, i) => arr[(startIdx + i) % arr.length] as T);\n}\n\nfunction whenMouse<E extends React.PointerEvent>(handler: (e: E) => void) {\n return (event: E) => (event.pointerType === 'mouse' ? handler(event) : undefined);\n}\n\nfunction isPointerMovingToSubmenu(event: React.PointerEvent, intent: GraceIntent | null): boolean {\n if (!intent) return false;\n const cursor = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursor, intent.area);\n}\n\nfunction isPointInPolygon(point: Point, polygon: Point[]) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i]?.x ?? 0;\n const yi = polygon[i]?.y ?? 0;\n const xj = polygon[j]?.x ?? 0;\n const yj = polygon[j]?.y ?? 0;\n const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\n\nexport {\n Root,\n Anchor,\n Portal,\n Content,\n Item,\n Group,\n Label,\n Separator,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Sub,\n SubTrigger,\n SubContent,\n};\n","export * from './dropdown-menu';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as MenuPrimitive from '../menu';\n\ninterface DropdownMenuContextValue {\n triggerId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentId: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onOpenToggle: () => void;\n modal: boolean;\n}\n\nconst [DropdownMenuProvider, useDropdownMenuContext] =\n createContext<DropdownMenuContextValue>('DropdownMenu');\n\nexport interface DropdownMenuRootProps {\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nconst Root: React.FC<DropdownMenuRootProps> = ({\n children,\n dir,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n}) => {\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n return (\n <DropdownMenuProvider\n triggerId={useId('dropdown-trigger')}\n triggerRef={triggerRef}\n contentId={useId('dropdown-content')}\n open={open}\n onOpenChange={setOpen as (v: boolean) => void}\n onOpenToggle={React.useCallback(() => setOpen((p) => !p), [setOpen])}\n modal={modal}\n >\n <MenuPrimitive.Root open={open} onOpenChange={setOpen as (v: boolean) => void} dir={dir} modal={modal}>\n {children}\n </MenuPrimitive.Root>\n </DropdownMenuProvider>\n );\n};\nRoot.displayName = 'DropdownMenu.Root';\n\nexport interface DropdownMenuTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useDropdownMenuContext('DropdownMenu.Trigger');\n const composedRef = useComposedRefs(forwardedRef, ctx.triggerRef);\n return (\n <MenuPrimitive.Anchor asChild>\n <Primitive.button\n type=\"button\"\n id={ctx.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n aria-controls={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n {...props}\n ref={composedRef}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n if (!props.disabled && event.button === 0 && event.ctrlKey === false) {\n ctx.onOpenToggle();\n if (!ctx.open) event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (props.disabled) return;\n if (['Enter', ' '].includes(event.key)) ctx.onOpenToggle();\n if (event.key === 'ArrowDown') ctx.onOpenChange(true);\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) event.preventDefault();\n })}\n />\n </MenuPrimitive.Anchor>\n );\n },\n);\nTrigger.displayName = 'DropdownMenu.Trigger';\n\nconst Portal = MenuPrimitive.Portal;\n\nconst Content = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>\n>(({ ...props }, ref) => {\n const ctx = useDropdownMenuContext('DropdownMenu.Content');\n return (\n <MenuPrimitive.Content\n id={ctx.contentId}\n aria-labelledby={ctx.triggerId}\n {...props}\n ref={ref}\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!event.defaultPrevented) ctx.triggerRef.current?.focus();\n event.preventDefault();\n })}\n />\n );\n});\nContent.displayName = 'DropdownMenu.Content';\n\nconst Item = MenuPrimitive.Item;\nconst Group = MenuPrimitive.Group;\nconst Label = MenuPrimitive.Label;\nconst CheckboxItem = MenuPrimitive.CheckboxItem;\nconst RadioGroup = MenuPrimitive.RadioGroup;\nconst RadioItem = MenuPrimitive.RadioItem;\nconst ItemIndicator = MenuPrimitive.ItemIndicator;\nconst Separator = MenuPrimitive.Separator;\nconst Sub = MenuPrimitive.Sub;\nconst SubTrigger = MenuPrimitive.SubTrigger;\nconst SubContent = MenuPrimitive.SubContent;\n\nexport {\n Root,\n Trigger,\n Portal,\n Content,\n Item,\n Group,\n Label,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Sub,\n SubTrigger,\n SubContent,\n};\n","export * from './context-menu';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as MenuPrimitive from '../menu';\n\ninterface ContextMenuContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n modal: boolean;\n}\n\nconst [ContextMenuProvider, useContextMenuContext] =\n createContext<ContextMenuContextValue>('ContextMenu');\n\nexport interface ContextMenuRootProps {\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nconst Root: React.FC<ContextMenuRootProps> = ({\n children,\n dir,\n onOpenChange,\n modal = true,\n}) => {\n const [open, setOpen] = useControllableState<boolean>({\n defaultProp: false,\n onChange: onOpenChange,\n });\n return (\n <ContextMenuProvider\n open={open ?? false}\n onOpenChange={setOpen as (v: boolean) => void}\n modal={modal}\n >\n <MenuPrimitive.Root\n dir={dir}\n modal={modal}\n open={open ?? false}\n onOpenChange={setOpen as (v: boolean) => void}\n >\n {children}\n </MenuPrimitive.Root>\n </ContextMenuProvider>\n );\n};\nRoot.displayName = 'ContextMenu.Root';\n\nexport interface ContextMenuTriggerProps extends React.ComponentPropsWithoutRef<'span'> {\n asChild?: boolean;\n disabled?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLSpanElement, ContextMenuTriggerProps>(\n (props, forwardedRef) => {\n const { disabled, ...rest } = props;\n const ctx = useContextMenuContext('ContextMenu.Trigger');\n const pointRef = React.useRef({ x: 0, y: 0 });\n const virtualRef = React.useRef({\n getBoundingClientRect: () =>\n new DOMRect(pointRef.current.x, pointRef.current.y, 0, 0),\n });\n const longPressTimerRef = React.useRef(0);\n const clearLongPress = () => window.clearTimeout(longPressTimerRef.current);\n const handleOpen = (event: { clientX: number; clientY: number }) => {\n pointRef.current = { x: event.clientX, y: event.clientY };\n ctx.onOpenChange(true);\n };\n return (\n <>\n <MenuPrimitive.Anchor virtualRef={virtualRef as never} />\n <Primitive.span\n data-state={ctx.open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n {...rest}\n ref={forwardedRef}\n style={{ WebkitTouchCallout: 'none', ...rest.style }}\n onContextMenu={composeEventHandlers(rest.onContextMenu, (event) => {\n clearLongPress();\n handleOpen(event);\n event.preventDefault();\n })}\n onPointerDown={composeEventHandlers(rest.onPointerDown, whenTouchOrPen((event) => {\n clearLongPress();\n longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);\n }))}\n onPointerMove={composeEventHandlers(rest.onPointerMove, whenTouchOrPen(() => clearLongPress()))}\n onPointerCancel={composeEventHandlers(rest.onPointerCancel, whenTouchOrPen(() => clearLongPress()))}\n onPointerUp={composeEventHandlers(rest.onPointerUp, whenTouchOrPen(() => clearLongPress()))}\n />\n </>\n );\n },\n);\nTrigger.displayName = 'ContextMenu.Trigger';\n\nfunction whenTouchOrPen<E extends React.PointerEvent>(handler: (e: E) => void) {\n return (e: E) => (e.pointerType !== 'mouse' ? handler(e) : undefined);\n}\n\nconst Portal = MenuPrimitive.Portal;\n\nconst Content = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Content>,\n Omit<React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>, 'side' | 'sideOffset' | 'align'>\n>((props, ref) => (\n <MenuPrimitive.Content\n {...props}\n ref={ref}\n side=\"bottom\"\n align=\"start\"\n sideOffset={2}\n />\n));\nContent.displayName = 'ContextMenu.Content';\n\nconst Item = MenuPrimitive.Item;\nconst Group = MenuPrimitive.Group;\nconst Label = MenuPrimitive.Label;\nconst CheckboxItem = MenuPrimitive.CheckboxItem;\nconst RadioGroup = MenuPrimitive.RadioGroup;\nconst RadioItem = MenuPrimitive.RadioItem;\nconst ItemIndicator = MenuPrimitive.ItemIndicator;\nconst Separator = MenuPrimitive.Separator;\nconst Sub = MenuPrimitive.Sub;\nconst SubTrigger = MenuPrimitive.SubTrigger;\nconst SubContent = MenuPrimitive.SubContent;\n\nexport {\n Root,\n Trigger,\n Portal,\n Content,\n Item,\n Group,\n Label,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Sub,\n SubTrigger,\n SubContent,\n};\n","export * from './menubar';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n useDirection,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as MenuPrimitive from '../menu';\n\ninterface MenubarContextValue {\n value: string;\n dir: 'ltr' | 'rtl';\n loop: boolean;\n onMenuOpen: (value: string) => void;\n onMenuClose: () => void;\n onMenuToggle: (value: string) => void;\n}\n\nconst [MenubarProvider, useMenubarContext] = createContext<MenubarContextValue>('Menubar');\n\nexport interface MenubarRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n dir?: 'ltr' | 'rtl';\n loop?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, MenubarRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n dir: dirProp,\n loop = true,\n ...rootProps\n } = props;\n const dir = useDirection(dirProp);\n const [value = '', setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [currentTabStopId, setCurrentTabStopId] = React.useState<string | null>(null);\n return (\n <MenubarProvider\n value={value}\n dir={dir}\n loop={loop}\n onMenuOpen={React.useCallback(\n (v: string) => {\n setValue(v);\n setCurrentTabStopId(v);\n },\n [setValue],\n )}\n onMenuClose={React.useCallback(() => setValue(''), [setValue])}\n onMenuToggle={React.useCallback(\n (v: string) => setValue((prev) => (prev ? '' : v)),\n [setValue],\n )}\n >\n <RovingFocusGroup\n asChild\n orientation=\"horizontal\"\n dir={dir}\n loop={loop}\n currentTabStopId={currentTabStopId}\n onCurrentTabStopIdChange={setCurrentTabStopId}\n >\n <Primitive.div role=\"menubar\" {...rootProps} ref={forwardedRef} />\n </RovingFocusGroup>\n </MenubarProvider>\n );\n },\n);\nRoot.displayName = 'Menubar.Root';\n\ninterface MenubarMenuContextValue {\n value: string;\n triggerId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentId: string;\n wasKeyboardTriggerOpenRef: React.RefObject<boolean>;\n}\n\nconst [MenubarMenuProvider, useMenubarMenuContext] =\n createContext<MenubarMenuContextValue>('MenubarMenu');\n\nconst Menu: React.FC<{ children?: React.ReactNode; value?: string }> = ({ children, value: valueProp }) => {\n const autoValue = useId('menubar-menu');\n const value = valueProp || autoValue;\n const ctx = useMenubarContext('Menubar.Menu');\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const wasKeyboardTriggerOpenRef = React.useRef(false);\n const open = ctx.value === value;\n return (\n <MenubarMenuProvider\n value={value}\n triggerId={useId('menubar-menu-trigger')}\n triggerRef={triggerRef}\n contentId={useId('menubar-menu-content')}\n wasKeyboardTriggerOpenRef={wasKeyboardTriggerOpenRef}\n >\n <MenuPrimitive.Root\n open={open}\n onOpenChange={(o) => {\n if (!o) ctx.onMenuClose();\n }}\n modal={false}\n dir={ctx.dir}\n >\n {children}\n </MenuPrimitive.Root>\n </MenubarMenuProvider>\n );\n};\nMenu.displayName = 'Menubar.Menu';\n\nexport interface MenubarTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n disabled?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, MenubarTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useMenubarContext('Menubar.Trigger');\n const menuCtx = useMenubarMenuContext('Menubar.Trigger');\n const composedRef = useComposedRefs(forwardedRef, menuCtx.triggerRef);\n const open = ctx.value === menuCtx.value;\n return (\n <MenuPrimitive.Anchor asChild>\n <RovingFocusItem\n asChild\n focusable={!props.disabled}\n tabStopId={menuCtx.value}\n >\n <Primitive.button\n type=\"button\"\n role=\"menuitem\"\n id={menuCtx.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuCtx.contentId : undefined}\n data-highlighted={undefined}\n data-state={open ? 'open' : 'closed'}\n data-disabled={props.disabled ? '' : undefined}\n disabled={props.disabled}\n {...props}\n ref={composedRef}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n if (!props.disabled && event.button === 0 && event.ctrlKey === false) {\n ctx.onMenuOpen(menuCtx.value);\n if (!open) event.preventDefault();\n }\n })}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, () => {\n const menubarOpen = Boolean(ctx.value);\n if (menubarOpen && !open) ctx.onMenuOpen(menuCtx.value);\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (props.disabled) return;\n if (['Enter', ' '].includes(event.key)) ctx.onMenuToggle(menuCtx.value);\n if (event.key === 'ArrowDown') ctx.onMenuOpen(menuCtx.value);\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) {\n menuCtx.wasKeyboardTriggerOpenRef.current = true;\n event.preventDefault();\n }\n })}\n />\n </RovingFocusItem>\n </MenuPrimitive.Anchor>\n );\n },\n);\nTrigger.displayName = 'Menubar.Trigger';\n\nconst Portal = MenuPrimitive.Portal;\n\nconst Content = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>\n>(({ ...props }, ref) => {\n const ctx = useMenubarContext('Menubar.Content');\n const menuCtx = useMenubarMenuContext('Menubar.Content');\n return (\n <MenuPrimitive.Content\n id={menuCtx.contentId}\n aria-labelledby={menuCtx.triggerId}\n align=\"start\"\n {...props}\n ref={ref}\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n const isKeyboard = menuCtx.wasKeyboardTriggerOpenRef.current;\n if (!isKeyboard) event.preventDefault();\n menuCtx.wasKeyboardTriggerOpenRef.current = false;\n })}\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) => {\n const content = event.target as HTMLElement;\n const hasInteractedOutsideMenubar = !content.closest('[role=\"menubar\"]');\n if (hasInteractedOutsideMenubar) ctx.onMenuClose();\n })}\n />\n );\n});\nContent.displayName = 'Menubar.Content';\n\nconst Item = MenuPrimitive.Item;\nconst Group = MenuPrimitive.Group;\nconst Label = MenuPrimitive.Label;\nconst CheckboxItem = MenuPrimitive.CheckboxItem;\nconst RadioGroup = MenuPrimitive.RadioGroup;\nconst RadioItem = MenuPrimitive.RadioItem;\nconst ItemIndicator = MenuPrimitive.ItemIndicator;\nconst Separator = MenuPrimitive.Separator;\nconst Sub = MenuPrimitive.Sub;\nconst SubTrigger = MenuPrimitive.SubTrigger;\nconst SubContent = MenuPrimitive.SubContent;\n\nexport {\n Root,\n Menu,\n Trigger,\n Portal,\n Content,\n Item,\n Group,\n Label,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Sub,\n SubTrigger,\n SubContent,\n};\n","export * from './navigation-menu';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Presence,\n DismissableLayer,\n useDirection,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface NavigationMenuContextValue {\n isRootMenu: boolean;\n value: string;\n baseId: string;\n dir: 'ltr' | 'rtl';\n orientation: 'horizontal' | 'vertical';\n rootNavigationMenu: HTMLElement | null;\n indicatorTrack: HTMLElement | null;\n onIndicatorTrackChange: (track: HTMLElement | null) => void;\n onTriggerEnter: (value: string) => void;\n onTriggerLeave: () => void;\n onContentEnter: () => void;\n onContentLeave: () => void;\n onItemSelect: (value: string) => void;\n onItemDismiss: () => void;\n}\n\nconst [NavigationMenuProvider, useNavigationMenuContext] =\n createContext<NavigationMenuContextValue>('NavigationMenu');\n\nexport interface NavigationMenuRootProps extends React.ComponentPropsWithoutRef<'nav'> {\n asChild?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n dir?: 'ltr' | 'rtl';\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst Root = React.forwardRef<HTMLElement, NavigationMenuRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n delayDuration = 200,\n skipDelayDuration = 300,\n dir,\n orientation = 'horizontal',\n ...rootProps\n } = props;\n const [navigationMenu, setNavigationMenu] = React.useState<HTMLElement | null>(null);\n const composedRef = useComposedRefs(forwardedRef, setNavigationMenu);\n const direction = useDirection(dir);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const skipDelayTimerRef = React.useRef(0);\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const [value = '', setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => {\n const isClose = v === '';\n if (isClose) {\n window.clearTimeout(skipDelayTimerRef.current);\n if (skipDelayDuration > 0)\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration,\n );\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }\n onValueChange?.(v);\n },\n });\n const startCloseTimer = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setValue(''), 150);\n }, [setValue]);\n const handleOpen = React.useCallback((v: string) => {\n window.clearTimeout(closeTimerRef.current);\n setValue(v);\n }, [setValue]);\n const handleDelayedOpen = React.useCallback((v: string) => {\n const isOpenValue = value === v;\n if (isOpenValue) {\n window.clearTimeout(closeTimerRef.current);\n } else {\n openTimerRef.current = window.setTimeout(() => {\n window.clearTimeout(closeTimerRef.current);\n setValue(v);\n }, delayDuration);\n }\n }, [value, setValue, delayDuration]);\n React.useEffect(() => () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n window.clearTimeout(skipDelayTimerRef.current);\n }, []);\n return (\n <NavigationMenuProvider\n isRootMenu\n value={value}\n baseId={useId('navigation-menu')}\n dir={direction}\n orientation={orientation}\n rootNavigationMenu={navigationMenu}\n indicatorTrack={null}\n onIndicatorTrackChange={() => {}}\n onTriggerEnter={React.useCallback(\n (v: string) => {\n window.clearTimeout(openTimerRef.current);\n if (isOpenDelayed) handleDelayedOpen(v);\n else handleOpen(v);\n },\n [isOpenDelayed, handleDelayedOpen, handleOpen],\n )}\n onTriggerLeave={React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n startCloseTimer();\n }, [startCloseTimer])}\n onContentEnter={React.useCallback(() => window.clearTimeout(closeTimerRef.current), [])}\n onContentLeave={React.useCallback(() => startCloseTimer(), [startCloseTimer])}\n onItemSelect={React.useCallback((v: string) => setValue(v), [setValue])}\n onItemDismiss={React.useCallback(() => setValue(''), [setValue])}\n >\n <Primitive.nav\n aria-label=\"Main\"\n data-orientation={orientation}\n dir={direction}\n {...rootProps}\n ref={composedRef as React.Ref<HTMLElement>}\n />\n </NavigationMenuProvider>\n );\n },\n);\nRoot.displayName = 'NavigationMenu.Root';\n\nconst List = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, forwardedRef) => {\n const ctx = useNavigationMenuContext('NavigationMenu.List');\n return (\n <Primitive.ul\n data-orientation={ctx.orientation}\n {...props}\n ref={forwardedRef as React.Ref<HTMLUListElement>}\n />\n );\n },\n);\nList.displayName = 'NavigationMenu.List';\n\ninterface NavigationMenuItemContextValue {\n value: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentRef: React.RefObject<HTMLDivElement | null>;\n focusProxyRef: React.RefObject<HTMLSpanElement | null>;\n wasEscapeCloseRef: React.RefObject<boolean>;\n onEntryKeyDown: () => void;\n onRootContentClose: () => void;\n}\n\nconst [NavigationMenuItemProvider, useNavigationMenuItemContext] =\n createContext<NavigationMenuItemContextValue>('NavigationMenuItem');\n\nexport interface NavigationMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {\n asChild?: boolean;\n value?: string;\n}\n\nconst Item = React.forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n (props, forwardedRef) => {\n const { value: valueProp, ...itemProps } = props;\n const autoValue = useId('nav-item');\n const value = valueProp ?? autoValue;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const focusProxyRef = React.useRef<HTMLSpanElement>(null);\n const wasEscapeCloseRef = React.useRef(false);\n return (\n <NavigationMenuItemProvider\n value={value}\n triggerRef={triggerRef}\n contentRef={contentRef}\n focusProxyRef={focusProxyRef}\n wasEscapeCloseRef={wasEscapeCloseRef}\n onEntryKeyDown={React.useCallback(() => {\n contentRef.current?.focus();\n }, [])}\n onRootContentClose={React.useCallback(() => {\n /* placeholder */\n }, [])}\n >\n <Primitive.li {...itemProps} ref={forwardedRef as React.Ref<HTMLLIElement>} />\n </NavigationMenuItemProvider>\n );\n },\n);\nItem.displayName = 'NavigationMenu.Item';\n\nconst Trigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'> & { asChild?: boolean }\n>((props, forwardedRef) => {\n const ctx = useNavigationMenuContext('NavigationMenu.Trigger');\n const item = useNavigationMenuItemContext('NavigationMenu.Trigger');\n const open = ctx.value === item.value;\n const composedRef = useComposedRefs(forwardedRef, item.triggerRef);\n return (\n <Primitive.button\n type=\"button\"\n data-state={open ? 'open' : 'closed'}\n aria-expanded={open}\n aria-controls={`${ctx.baseId}-content-${item.value}`}\n id={`${ctx.baseId}-trigger-${item.value}`}\n {...props}\n ref={composedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, () => ctx.onTriggerEnter(item.value))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, () => ctx.onTriggerLeave())}\n onPointerMove={composeEventHandlers(props.onPointerMove, () => ctx.onTriggerEnter(item.value))}\n onClick={composeEventHandlers(props.onClick, () => {\n if (open) ctx.onItemDismiss();\n else ctx.onItemSelect(item.value);\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (['Enter', ' '].includes(event.key)) {\n event.preventDefault();\n if (open) ctx.onItemDismiss();\n else ctx.onItemSelect(item.value);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n ctx.onItemSelect(item.value);\n }\n })}\n />\n );\n});\nTrigger.displayName = 'NavigationMenu.Trigger';\n\nexport interface NavigationMenuLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n asChild?: boolean;\n active?: boolean;\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n (props, forwardedRef) => {\n const { active, ...rest } = props;\n return (\n <Primitive.a\n data-active={active ? '' : undefined}\n aria-current={active ? 'page' : undefined}\n {...rest}\n ref={forwardedRef as React.Ref<HTMLAnchorElement>}\n />\n );\n },\n);\nLink.displayName = 'NavigationMenu.Link';\n\nconst Content = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean; forceMount?: boolean }\n>((props, forwardedRef) => {\n const { forceMount, ...rest } = props;\n const ctx = useNavigationMenuContext('NavigationMenu.Content');\n const item = useNavigationMenuItemContext('NavigationMenu.Content');\n const composedRef = useComposedRefs(forwardedRef, item.contentRef);\n const open = ctx.value === item.value;\n return (\n <Presence present={forceMount || open}>\n <DismissableLayer\n asChild\n onEscapeKeyDown={() => ctx.onItemDismiss()}\n onPointerDownOutside={() => ctx.onItemDismiss()}\n onFocusOutside={(event) => {\n const target = event.target as HTMLElement;\n const isInside = ctx.rootNavigationMenu?.contains(target);\n if (!isInside) ctx.onItemDismiss();\n }}\n onDismiss={() => ctx.onItemDismiss()}\n >\n <Primitive.div\n data-state={open ? 'open' : 'closed'}\n data-orientation={ctx.orientation}\n id={`${ctx.baseId}-content-${item.value}`}\n aria-labelledby={`${ctx.baseId}-trigger-${item.value}`}\n {...rest}\n ref={composedRef as React.Ref<HTMLDivElement>}\n onPointerEnter={composeEventHandlers(rest.onPointerEnter, () => ctx.onContentEnter())}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, () => ctx.onContentLeave())}\n />\n </DismissableLayer>\n </Presence>\n );\n});\nContent.displayName = 'NavigationMenu.Content';\n\nconst Indicator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { forceMount?: boolean }\n>((props, forwardedRef) => {\n const { forceMount, ...rest } = props;\n const ctx = useNavigationMenuContext('NavigationMenu.Indicator');\n const isVisible = Boolean(ctx.value);\n return (\n <Presence present={forceMount || isVisible}>\n <Primitive.div\n data-state={isVisible ? 'visible' : 'hidden'}\n data-orientation={ctx.orientation}\n {...rest}\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n />\n </Presence>\n );\n});\nIndicator.displayName = 'NavigationMenu.Indicator';\n\nconst Viewport = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { forceMount?: boolean }\n>((props, forwardedRef) => {\n const { forceMount, ...rest } = props;\n const ctx = useNavigationMenuContext('NavigationMenu.Viewport');\n const open = Boolean(ctx.value);\n return (\n <Presence present={forceMount || open}>\n <Primitive.div data-state={open ? 'open' : 'closed'} {...rest} ref={forwardedRef as React.Ref<HTMLDivElement>} />\n </Presence>\n );\n});\nViewport.displayName = 'NavigationMenu.Viewport';\n\nexport { Root, List, Item, Trigger, Link, Content, Indicator, Viewport };\n","export * from './breadcrumb';\n","import * as React from 'react';\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\n label?: string;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ children, label = 'Breadcrumb', ...props }, ref) => (\n <nav aria-label={label} ref={ref} {...props}>\n <ol>{children}</ol>\n </nav>\n ),\n);\nBreadcrumb.displayName = 'Breadcrumb';\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.LiHTMLAttributes<HTMLLIElement>>(\n ({ children, ...props }, ref) => (\n <li ref={ref} {...props}>\n {children}\n </li>\n ),\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n>(({ children, ...props }, ref) => (\n <a ref={ref} {...props}>\n {children}\n </a>\n));\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\nexport { Breadcrumb, BreadcrumbItem, BreadcrumbLink };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport type { PaginationProps } from './pagination.types';\n\nconst Root = React.forwardRef<HTMLDivElement, PaginationProps>(\n ({ className, current = 1, total = 1, onChange, ...props }, ref) => {\n const pages = Math.max(1, Math.ceil(total));\n const handleClick = (page: number) => {\n if (page === current) return;\n onChange?.(page);\n };\n return (\n <Primitive.nav aria-label=\"Pagination\" ref={ref} {...props}>\n <div className={className}>\n <button\n type=\"button\"\n onClick={() => handleClick(Math.max(1, current - 1))}\n aria-label=\"Previous\"\n >\n Prev\n </button>\n {Array.from({ length: pages }).map((_, i) => {\n const page = i + 1;\n return (\n <button\n key={page}\n type=\"button\"\n aria-current={page === current ? 'page' : undefined}\n onClick={() => handleClick(page)}\n >\n {page}\n </button>\n );\n })}\n <button\n type=\"button\"\n onClick={() => handleClick(Math.min(pages, current + 1))}\n aria-label=\"Next\"\n >\n Next\n </button>\n </div>\n </Primitive.nav>\n );\n },\n);\nRoot.displayName = 'Pagination.Root';\n\nexport { Root };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport type { StepperProps } from './stepper.types';\n\nconst Root = React.forwardRef<HTMLDivElement, StepperProps>((props, ref) => {\n const {\n value: valueProp,\n defaultValue = 0,\n onChange,\n min = 0,\n max = Infinity,\n step = 1,\n ...rest\n } = props;\n const [value, setValue] = useControllableState<number>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n const increment = () => setValue((v = 0) => Math.min(max, v + step));\n const decrement = () => setValue((v = 0) => Math.max(min, v - step));\n\n return (\n <Primitive.div ref={ref} role=\"group\" aria-label=\"Stepper\" {...rest}>\n <button type=\"button\" aria-label=\"Decrement\" onClick={decrement}>\n -\n </button>\n <span aria-live=\"polite\">{value}</span>\n <button type=\"button\" aria-label=\"Increment\" onClick={increment}>\n +\n </button>\n </Primitive.div>\n );\n});\nRoot.displayName = 'Stepper.Root';\n\nexport { Root };\n","export * from './select';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n FocusScope,\n Popper,\n useScrollLock,\n useDirection,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nconst OPEN_KEYS = ['ArrowUp', 'ArrowDown', 'Enter', ' '];\nconst SELECTION_KEYS = ['Enter', ' '];\n\nexport interface SelectFilterOption {\n value: string;\n textValue: string;\n}\n\nexport interface SelectOption {\n value: string;\n label: React.ReactNode;\n textValue?: string;\n disabled?: boolean;\n}\n\ninterface SelectContextValue {\n trigger: HTMLButtonElement | null;\n onTriggerChange: (node: HTMLButtonElement | null) => void;\n searchInput: HTMLInputElement | null;\n onSearchInputChange: (node: HTMLInputElement | null) => void;\n valueNode: HTMLSpanElement | null;\n onValueNodeChange: (node: HTMLSpanElement | null) => void;\n valueNodeHasChildren: boolean;\n onValueNodeHasChildrenChange: (has: boolean) => void;\n contentId: string;\n value?: string;\n onValueChange: (value: string) => void;\n open: boolean;\n required: boolean;\n onOpenChange: (open: boolean) => void;\n dir: 'ltr' | 'rtl';\n triggerPointerDownPosRef: React.RefObject<{ x: number; y: number } | null>;\n disabled?: boolean;\n searchable: boolean;\n searchValue: string;\n onSearchValueChange: (value: string) => void;\n filterOption: (option: SelectFilterOption, searchValue: string) => boolean;\n onCreateOption?: (value: string) => void;\n createOptionLabel?: React.ReactNode | ((value: string) => React.ReactNode);\n}\n\nconst [SelectProvider, useSelectContext] = createContext<SelectContextValue>('Select');\n\nconst defaultFilterOption = (option: SelectFilterOption, searchValue: string) => {\n const query = normalizeSearch(searchValue);\n if (!query) return true;\n return (\n normalizeSearch(option.textValue).includes(query) ||\n normalizeSearch(option.value).includes(query)\n );\n};\n\nexport interface SelectRootProps {\n children?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n dir?: 'ltr' | 'rtl';\n name?: string;\n autoComplete?: string;\n disabled?: boolean;\n required?: boolean;\n searchable?: boolean;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n filterOption?: (option: SelectFilterOption, searchValue: string) => boolean;\n onCreateOption?: (value: string) => void;\n createOptionLabel?: React.ReactNode | ((value: string) => React.ReactNode);\n resetSearchOnClose?: boolean;\n}\n\nconst Root: React.FC<SelectRootProps> = ({\n children,\n value: valueProp,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n dir,\n name,\n autoComplete,\n disabled,\n required = false,\n searchable = false,\n searchValue: searchValueProp,\n defaultSearchValue = '',\n onSearchValueChange,\n filterOption = defaultFilterOption,\n onCreateOption,\n createOptionLabel,\n resetSearchOnClose = true,\n}) => {\n const [trigger, setTrigger] = React.useState<HTMLButtonElement | null>(null);\n const [searchInput, setSearchInput] = React.useState<HTMLInputElement | null>(null);\n const [valueNode, setValueNode] = React.useState<HTMLSpanElement | null>(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n const [searchValue = '', setSearchValue] = useControllableState<string>({\n prop: searchValueProp,\n defaultProp: defaultSearchValue,\n onChange: onSearchValueChange,\n });\n const triggerPointerDownPosRef = React.useRef<{ x: number; y: number } | null>(null);\n\n React.useEffect(() => {\n if (!open && resetSearchOnClose) setSearchValue('');\n }, [open, resetSearchOnClose, setSearchValue]);\n\n return (\n <Popper.Root>\n <SelectProvider\n trigger={trigger}\n onTriggerChange={setTrigger}\n searchInput={searchInput}\n onSearchInputChange={setSearchInput}\n valueNode={valueNode}\n onValueNodeChange={setValueNode}\n valueNodeHasChildren={valueNodeHasChildren}\n onValueNodeHasChildrenChange={setValueNodeHasChildren}\n contentId={useId('select-content')}\n value={value}\n onValueChange={React.useCallback((v: string) => setValue(v), [setValue])}\n open={open}\n required={required}\n onOpenChange={React.useCallback((v: boolean) => setOpen(v), [setOpen])}\n dir={direction}\n triggerPointerDownPosRef={triggerPointerDownPosRef}\n disabled={disabled}\n searchable={searchable}\n searchValue={searchValue}\n onSearchValueChange={React.useCallback((v: string) => setSearchValue(v), [setSearchValue])}\n filterOption={filterOption}\n onCreateOption={onCreateOption}\n createOptionLabel={createOptionLabel}\n >\n {children}\n {name ? (\n <BubbleSelect\n aria-hidden\n tabIndex={-1}\n name={name}\n autoComplete={autoComplete}\n value={value ?? ''}\n disabled={disabled}\n required={required}\n />\n ) : null}\n </SelectProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'Select.Root';\n\nconst BubbleSelect: React.FC<React.SelectHTMLAttributes<HTMLSelectElement>> = (props) => (\n <select\n {...props}\n style={{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n >\n <option value={props.value as string} />\n </select>\n);\n\nexport interface SelectTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>((props, forwardedRef) => {\n const ctx = useSelectContext('Select.Trigger');\n const isDisabled = ctx.disabled || props.disabled;\n const composedRef = useComposedRefs(forwardedRef, ctx.onTriggerChange);\n\n const handleOpen = (pointerEvent?: React.MouseEvent | React.PointerEvent) => {\n if (!isDisabled) {\n ctx.onOpenChange(true);\n if (pointerEvent)\n ctx.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY),\n };\n }\n };\n\n return (\n <Popper.Anchor asChild>\n <Primitive.button\n type=\"button\"\n role=\"combobox\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open}\n aria-required={ctx.required}\n aria-autocomplete={ctx.searchable ? 'list' : 'none'}\n dir={ctx.dir}\n data-state={ctx.open ? 'open' : 'closed'}\n disabled={isDisabled}\n data-disabled={isDisabled ? '' : undefined}\n data-placeholder={ctx.value === undefined ? '' : undefined}\n {...props}\n ref={composedRef}\n onClick={composeEventHandlers(props.onClick, (event) => {\n event.currentTarget.focus();\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target as HTMLElement;\n if (\n typeof target.hasPointerCapture === 'function' &&\n target.hasPointerCapture(event.pointerId)\n ) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false) {\n handleOpen(event);\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isTypeahead =\n event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey;\n if (isTypeahead) {\n if (ctx.searchable) ctx.onSearchValueChange(event.key);\n handleOpen();\n event.preventDefault();\n return;\n }\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })}\n />\n </Popper.Anchor>\n );\n});\nTrigger.displayName = 'Select.Trigger';\n\nexport interface SelectValueProps extends React.ComponentPropsWithoutRef<'span'> {\n asChild?: boolean;\n placeholder?: React.ReactNode;\n}\n\nconst Value = React.forwardRef<HTMLSpanElement, SelectValueProps>((props, forwardedRef) => {\n const { placeholder, children, ...rest } = props;\n const ctx = useSelectContext('Select.Value');\n const composedRef = useComposedRefs(forwardedRef, ctx.onValueNodeChange);\n const hasValue = ctx.value !== undefined && ctx.value !== '';\n React.useEffect(() => {\n ctx.onValueNodeHasChildrenChange(Boolean(children));\n }, [ctx, children]);\n return (\n <Primitive.span style={{ pointerEvents: 'none' }} {...rest} ref={composedRef}>\n {hasValue ? (children ?? ctx.value) : placeholder}\n </Primitive.span>\n );\n});\nValue.displayName = 'Select.Value';\n\nconst Icon = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.span aria-hidden {...props} ref={forwardedRef}>\n {props.children ?? '▼'}\n </Primitive.span>\n));\nIcon.displayName = 'Select.Icon';\n\nexport interface SelectSearchInputProps extends React.ComponentPropsWithoutRef<'input'> {\n asChild?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SelectSearchInputProps>(\n (props, forwardedRef) => {\n const ctx = useSelectContext('Select.SearchInput');\n const composedRef = useComposedRefs(forwardedRef, ctx.onSearchInputChange);\n\n if (!ctx.searchable) return null;\n\n const focusFirstItem = () => {\n const firstItem = document.querySelector<HTMLElement>(\n `[data-select-content=\"${ctx.contentId}\"] [role=\"option\"]:not([data-disabled]):not([hidden])`,\n );\n firstItem?.focus({ preventScroll: true });\n };\n\n const createSearchValue = () => {\n const value = ctx.searchValue.trim();\n if (!value || !ctx.onCreateOption) return false;\n ctx.onCreateOption(value);\n ctx.onValueChange(value);\n ctx.onOpenChange(false);\n ctx.trigger?.focus({ preventScroll: true });\n return true;\n };\n\n return (\n <Primitive.input\n type=\"search\"\n role=\"searchbox\"\n aria-controls={ctx.contentId}\n autoComplete=\"off\"\n spellCheck={false}\n {...props}\n ref={composedRef}\n value={ctx.searchValue}\n onChange={composeEventHandlers(props.onChange, (event) => {\n ctx.onSearchValueChange(event.currentTarget.value);\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusFirstItem();\n } else if (event.key === 'Enter') {\n const firstItem = document.querySelector<HTMLElement>(\n `[data-select-content=\"${ctx.contentId}\"] [role=\"option\"]:not([data-disabled]):not([hidden])`,\n );\n if (!firstItem || firstItem.hasAttribute('data-select-create-option')) {\n if (createSearchValue()) event.preventDefault();\n }\n }\n })}\n />\n );\n },\n);\nSearchInput.displayName = 'Select.SearchInput';\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nexport interface SelectPortalProps {\n children?: React.ReactNode;\n container?: Element | DocumentFragment | null;\n forceMount?: boolean;\n}\n\nconst Portal: React.FC<SelectPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useSelectContext('Select.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Select.Portal';\n\ninterface SelectContentContextValue {\n contentRef: React.RefObject<HTMLDivElement | null>;\n isPositioned: boolean;\n itemRefCallback: (node: HTMLDivElement | null, value: string, disabled?: boolean) => void;\n selectedItem: HTMLDivElement | null;\n selectedItemText: HTMLSpanElement | null;\n onItemLeave?: () => void;\n itemTextRefCallback: (node: HTMLSpanElement | null, value: string, disabled?: boolean) => void;\n focusSelectedItem: () => void;\n onScrollButtonChange: (button: HTMLElement | null) => void;\n}\n\nconst [SelectContentContextProvider, useSelectContentContext] =\n createContext<SelectContentContextValue>('SelectContent');\n\nexport interface SelectContentProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n forceMount?: boolean;\n position?: 'item-aligned' | 'popper';\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | Element[] | null;\n collisionPadding?: number;\n strategy?: 'fixed' | 'absolute';\n sticky?: 'partial' | 'always';\n hideWhenDetached?: boolean;\n updatePositionStrategy?: 'always' | 'optimized';\n onCloseAutoFocus?: (event: Event) => void;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: Event) => void;\n}\n\nconst Content = React.forwardRef<HTMLDivElement, SelectContentProps>((props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useSelectContext('Select.Content');\n const {\n forceMount = portalCtx.forceMount,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n alignOffset,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding,\n strategy,\n sticky,\n hideWhenDetached,\n updatePositionStrategy,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...rest\n } = props;\n const contentRef = React.useRef<HTMLDivElement>(null);\n const [selectedItem, setSelectedItem] = React.useState<HTMLDivElement | null>(null);\n const [selectedItemText, setSelectedItemText] = React.useState<HTMLSpanElement | null>(null);\n const composedRef = useComposedRefs(forwardedRef, contentRef);\n\n useScrollLock(ctx.open);\n\n const itemRefCallback = React.useCallback(\n (node: HTMLDivElement | null, value: string, disabled?: boolean) => {\n if (!disabled && node && value === ctx.value) setSelectedItem(node);\n },\n [ctx.value],\n );\n\n const itemTextRefCallback = React.useCallback(\n (node: HTMLSpanElement | null, value: string, disabled?: boolean) => {\n if (!disabled && node && value === ctx.value) setSelectedItemText(node);\n },\n [ctx.value],\n );\n\n return (\n <Presence present={forceMount || ctx.open}>\n <SelectContentContextProvider\n contentRef={contentRef}\n isPositioned\n itemRefCallback={itemRefCallback}\n selectedItem={selectedItem}\n selectedItemText={selectedItemText}\n itemTextRefCallback={itemTextRefCallback}\n focusSelectedItem={() => {\n if (selectedItem) selectedItem.focus({ preventScroll: true });\n else contentRef.current?.focus({ preventScroll: true });\n }}\n onScrollButtonChange={() => {}}\n >\n <Popper.Content\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n strategy={strategy}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n updatePositionStrategy={updatePositionStrategy}\n >\n <DismissableLayer\n asChild\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={(event) => {\n onPointerDownOutside?.(event);\n }}\n onDismiss={() => ctx.onOpenChange(false)}\n >\n <FocusScope\n loop\n trapped\n onMountAutoFocus={(event) => {\n event.preventDefault();\n if (ctx.searchable) ctx.searchInput?.focus({ preventScroll: true });\n else if (selectedItem) selectedItem.focus({ preventScroll: true });\n else contentRef.current?.focus({ preventScroll: true });\n }}\n onUnmountAutoFocus={composeEventHandlers(onCloseAutoFocus, (event) => {\n event.preventDefault();\n ctx.trigger?.focus({ preventScroll: true });\n })}\n style={{ display: 'contents' }}\n >\n <Primitive.div\n role=\"listbox\"\n id={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n data-position={position}\n dir={ctx.dir}\n tabIndex={-1}\n data-select-content={ctx.contentId}\n {...rest}\n ref={composedRef}\n onContextMenu={(event) => event.preventDefault()}\n />\n </FocusScope>\n </DismissableLayer>\n </Popper.Content>\n </SelectContentContextProvider>\n </Presence>\n );\n});\nContent.displayName = 'Select.Content';\n\nconst Viewport = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => {\n return (\n <Primitive.div\n data-structyl-select-viewport\n role=\"presentation\"\n {...props}\n ref={forwardedRef}\n style={{ position: 'relative', flex: 1, overflow: 'auto', ...props.style }}\n />\n );\n});\nViewport.displayName = 'Select.Viewport';\n\ninterface SelectItemContextValue {\n value: string;\n textId: string;\n isSelected: boolean;\n onItemTextChange: (node: HTMLSpanElement | null) => void;\n}\n\nconst [SelectItemContextProvider, useSelectItemContext] =\n createContext<SelectItemContextValue>('SelectItem');\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value: string;\n disabled?: boolean;\n textValue?: string;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, SelectItemProps>((props, forwardedRef) => {\n const { value, disabled, textValue, children, ...rest } = props;\n const ctx = useSelectContext('Select.Item');\n const contentCtx = useSelectContentContext('Select.Item');\n const isSelected = ctx.value === value;\n const textId = useId('select-item-text');\n const itemRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, itemRef, (node) =>\n contentCtx.itemRefCallback(node, value, disabled),\n );\n const resolvedTextValue = textValue ?? getTextContent(children) ?? value;\n const isVisible =\n !ctx.searchable ||\n !ctx.searchValue.trim() ||\n ctx.filterOption({ value, textValue: resolvedTextValue }, ctx.searchValue);\n const handleItemTextChange = React.useCallback(() => {}, []);\n\n const handleSelect = () => {\n if (!disabled) {\n ctx.onValueChange(value);\n ctx.onOpenChange(false);\n }\n };\n\n if (!isVisible) return null;\n\n return (\n <SelectItemContextProvider\n value={value}\n textId={textId}\n isSelected={isSelected}\n onItemTextChange={handleItemTextChange}\n >\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n aria-selected={isSelected && !disabled}\n data-value={value}\n data-highlighted={undefined}\n data-state={isSelected ? 'checked' : 'unchecked'}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? undefined : -1}\n {...rest}\n ref={composedRef}\n onFocus={composeEventHandlers(rest.onFocus, () => {\n /* highlighted */\n })}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n if (disabled) return;\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n })}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, (event) => {\n if ((event.currentTarget as HTMLElement) === document.activeElement) {\n contentCtx.contentRef.current?.focus({ preventScroll: true });\n }\n })}\n onClick={composeEventHandlers(rest.onClick, (event) => {\n if (!disabled) {\n (event.currentTarget as HTMLElement).focus();\n handleSelect();\n }\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n focusAdjacentOption(event.currentTarget, event.key === 'ArrowDown' ? 1 : -1);\n }\n if (SELECTION_KEYS.includes(event.key)) {\n event.preventDefault();\n handleSelect();\n }\n })}\n >\n {children}\n </Primitive.div>\n </SelectItemContextProvider>\n );\n});\nItem.displayName = 'Select.Item';\n\nexport interface SelectCreateItemProps extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'children'\n> {\n asChild?: boolean;\n value?: string;\n children?: React.ReactNode | ((value: string) => React.ReactNode);\n}\n\nconst CreateItem = React.forwardRef<HTMLDivElement, SelectCreateItemProps>(\n (props, forwardedRef) => {\n const { value: valueProp, children, ...rest } = props;\n const ctx = useSelectContext('Select.CreateItem');\n const contentCtx = useSelectContentContext('Select.CreateItem');\n const textId = useId('select-create-item-text');\n const value = (valueProp ?? ctx.searchValue).trim();\n\n if (!ctx.searchable || !ctx.onCreateOption || !value) return null;\n\n const label =\n typeof children === 'function'\n ? children(value)\n : (children ??\n (typeof ctx.createOptionLabel === 'function'\n ? ctx.createOptionLabel(value)\n : (ctx.createOptionLabel ?? `Create \"${value}\"`)));\n\n const handleCreate = () => {\n ctx.onCreateOption?.(value);\n ctx.onValueChange(value);\n ctx.onOpenChange(false);\n ctx.trigger?.focus({ preventScroll: true });\n };\n\n return (\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n aria-selected={false}\n data-select-create-option=\"\"\n data-state=\"unchecked\"\n tabIndex={-1}\n {...rest}\n ref={forwardedRef}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n })}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, (event) => {\n if ((event.currentTarget as HTMLElement) === document.activeElement) {\n contentCtx.contentRef.current?.focus({ preventScroll: true });\n }\n })}\n onClick={composeEventHandlers(rest.onClick, (event) => {\n (event.currentTarget as HTMLElement).focus();\n handleCreate();\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n focusAdjacentOption(event.currentTarget, event.key === 'ArrowDown' ? 1 : -1);\n }\n if (SELECTION_KEYS.includes(event.key)) {\n event.preventDefault();\n handleCreate();\n }\n })}\n >\n <Primitive.span id={textId}>{label}</Primitive.span>\n </Primitive.div>\n );\n },\n);\nCreateItem.displayName = 'Select.CreateItem';\n\nexport interface SelectItemTextProps extends React.ComponentPropsWithoutRef<'span'> {\n asChild?: boolean;\n}\n\nconst ItemText = React.forwardRef<HTMLSpanElement, SelectItemTextProps>((props, forwardedRef) => {\n const ctx = useSelectContext('Select.ItemText');\n const itemCtx = useSelectItemContext('Select.ItemText');\n const contentCtx = useSelectContentContext('Select.ItemText');\n const ref = React.useRef<HTMLSpanElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref, itemCtx.onItemTextChange, (node) =>\n contentCtx.itemTextRefCallback(node, itemCtx.value),\n );\n return (\n <>\n <Primitive.span id={itemCtx.textId} {...props} ref={composedRef} />\n {itemCtx.isSelected && ctx.valueNode && !ctx.valueNodeHasChildren\n ? // SSR safe portal\n null\n : null}\n </>\n );\n});\nItemText.displayName = 'Select.ItemText';\n\nconst ItemIndicator = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & { asChild?: boolean }\n>((props, forwardedRef) => {\n const itemCtx = useSelectItemContext('Select.ItemIndicator');\n return itemCtx.isSelected ? <Primitive.span aria-hidden {...props} ref={forwardedRef} /> : null;\n});\nItemIndicator.displayName = 'Select.ItemIndicator';\n\nexport interface SelectOptionsProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n options: SelectOption[];\n itemHeight?: number;\n overscan?: number;\n visibleItemCount?: number;\n emptyMessage?: React.ReactNode;\n itemClassName?: string;\n itemTextClassName?: string;\n itemIndicatorClassName?: string;\n renderOption?: (option: SelectOption) => React.ReactNode;\n renderItemIndicator?: (option: SelectOption) => React.ReactNode;\n}\n\nconst Options = React.forwardRef<HTMLDivElement, SelectOptionsProps>((props, forwardedRef) => {\n const {\n options,\n itemHeight = 36,\n overscan = 6,\n visibleItemCount = 8,\n emptyMessage = 'No options found.',\n itemClassName,\n itemTextClassName,\n itemIndicatorClassName,\n renderOption,\n renderItemIndicator,\n style,\n ...rest\n } = props;\n const ctx = useSelectContext('Select.Options');\n const { filterOption, open, searchable, searchValue, value } = ctx;\n const listRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, listRef);\n const fallbackViewportHeight = itemHeight * visibleItemCount;\n const [viewportState, setViewportState] = React.useState({\n scrollTop: 0,\n height: fallbackViewportHeight,\n });\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue.trim()) return options;\n return options.filter((option) =>\n filterOption(\n {\n value: option.value,\n textValue: getOptionTextValue(option),\n },\n searchValue,\n ),\n );\n }, [filterOption, options, searchable, searchValue]);\n\n React.useLayoutEffect(() => {\n const node = listRef.current;\n const scrollNode = node?.parentElement;\n if (!scrollNode) return;\n\n const updateViewportState = () => {\n setViewportState({\n scrollTop: scrollNode.scrollTop,\n height: scrollNode.clientHeight || fallbackViewportHeight,\n });\n };\n\n updateViewportState();\n scrollNode.addEventListener('scroll', updateViewportState, { passive: true });\n\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(updateViewportState);\n resizeObserver.observe(scrollNode);\n }\n\n return () => {\n scrollNode.removeEventListener('scroll', updateViewportState);\n resizeObserver?.disconnect();\n };\n }, [fallbackViewportHeight]);\n\n React.useLayoutEffect(() => {\n if (!open || !value) return;\n const node = listRef.current;\n const scrollNode = node?.parentElement;\n if (!scrollNode) return;\n const selectedIndex = filteredOptions.findIndex((option) => option.value === value);\n if (selectedIndex >= 0) scrollNode.scrollTop = selectedIndex * itemHeight;\n }, [open, value, filteredOptions, itemHeight]);\n\n if (filteredOptions.length === 0) {\n return (\n <Primitive.div role=\"presentation\" {...rest} ref={composedRef} style={style}>\n {emptyMessage}\n </Primitive.div>\n );\n }\n\n const startIndex = Math.max(0, Math.floor(viewportState.scrollTop / itemHeight) - overscan);\n const endIndex = Math.min(\n filteredOptions.length,\n Math.ceil((viewportState.scrollTop + viewportState.height) / itemHeight) + overscan,\n );\n const visibleOptions = filteredOptions.slice(startIndex, endIndex);\n const totalHeight = filteredOptions.length * itemHeight;\n\n return (\n <Primitive.div\n role=\"presentation\"\n {...rest}\n ref={composedRef}\n style={{ position: 'relative', height: totalHeight, ...style }}\n >\n {visibleOptions.map((option, index) => {\n const top = (startIndex + index) * itemHeight;\n return (\n <Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n textValue={getOptionTextValue(option)}\n className={itemClassName}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: itemHeight,\n transform: `translateY(${top}px)`,\n }}\n >\n {renderItemIndicator ? (\n <Primitive.span className={itemIndicatorClassName}>\n <ItemIndicator>{renderItemIndicator(option)}</ItemIndicator>\n </Primitive.span>\n ) : null}\n <ItemText className={itemTextClassName}>\n {renderOption ? renderOption(option) : option.label}\n </ItemText>\n </Item>\n );\n })}\n </Primitive.div>\n );\n});\nOptions.displayName = 'Select.Options';\n\nconst Group = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => <Primitive.div role=\"group\" {...props} ref={forwardedRef} />);\nGroup.displayName = 'Select.Group';\n\nconst Label = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />);\nLabel.displayName = 'Select.Label';\n\nconst Separator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div role=\"separator\" aria-orientation=\"horizontal\" {...props} ref={forwardedRef} />\n));\nSeparator.displayName = 'Select.Separator';\n\nfunction normalizeSearch(value: string) {\n return value.trim().toLocaleLowerCase();\n}\n\nfunction getTextContent(node: React.ReactNode): string | undefined {\n if (node == null || typeof node === 'boolean') return undefined;\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) {\n const text = node\n .map((child) => getTextContent(child))\n .filter((child): child is string => Boolean(child))\n .join(' ')\n .trim();\n return text || undefined;\n }\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getTextContent(node.props.children);\n }\n return undefined;\n}\n\nfunction getOptionTextValue(option: SelectOption) {\n return option.textValue ?? getTextContent(option.label) ?? option.value;\n}\n\nfunction focusAdjacentOption(currentItem: HTMLElement, direction: 1 | -1) {\n const content = currentItem.closest('[data-select-content]');\n const items = Array.from(\n content?.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled]):not([hidden])') ??\n [],\n );\n if (!items.length) return;\n\n const currentIndex = items.indexOf(currentItem);\n const nextIndex =\n currentIndex === -1\n ? direction === 1\n ? 0\n : items.length - 1\n : (currentIndex + direction + items.length) % items.length;\n items[nextIndex]?.focus({ preventScroll: true });\n}\n\nexport {\n Root,\n Trigger,\n Value,\n Icon,\n SearchInput,\n Portal,\n Content,\n Viewport,\n Item,\n CreateItem,\n ItemText,\n ItemIndicator,\n Options,\n Group,\n Label,\n Separator,\n};\n","export * from './multi-select';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n FocusScope,\n Popper,\n useScrollLock,\n useDirection,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nconst OPEN_KEYS = ['ArrowUp', 'ArrowDown', 'Enter', ' '];\nconst SELECTION_KEYS = ['Enter', ' '];\n\nexport interface MultiSelectFilterOption {\n value: string;\n textValue: string;\n}\n\nexport interface MultiSelectOption {\n value: string;\n label: React.ReactNode;\n textValue?: string;\n disabled?: boolean;\n}\n\nexport interface MultiSelectSelectedOption extends MultiSelectOption {\n textValue: string;\n}\n\ninterface MultiSelectContextValue {\n trigger: HTMLButtonElement | null;\n onTriggerChange: (node: HTMLButtonElement | null) => void;\n searchInput: HTMLInputElement | null;\n onSearchInputChange: (node: HTMLInputElement | null) => void;\n contentId: string;\n value: string[];\n onValueChange: (value: string[]) => void;\n onValueAdd: (value: string) => void;\n onValueToggle: (value: string) => void;\n open: boolean;\n required: boolean;\n onOpenChange: (open: boolean) => void;\n dir: 'ltr' | 'rtl';\n triggerPointerDownPosRef: React.RefObject<{ x: number; y: number } | null>;\n disabled?: boolean;\n searchable: boolean;\n searchValue: string;\n onSearchValueChange: (value: string) => void;\n filterOption: (option: MultiSelectFilterOption, searchValue: string) => boolean;\n onCreateOption?: (value: string) => void;\n createOptionLabel?: React.ReactNode | ((value: string) => React.ReactNode);\n}\n\nconst [MultiSelectProvider, useMultiSelectContext] =\n createContext<MultiSelectContextValue>('MultiSelect');\n\nconst defaultFilterOption = (option: MultiSelectFilterOption, searchValue: string) => {\n const query = normalizeSearch(searchValue);\n if (!query) return true;\n return (\n normalizeSearch(option.textValue).includes(query) ||\n normalizeSearch(option.value).includes(query)\n );\n};\n\nexport interface MultiSelectRootProps {\n children?: React.ReactNode;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n dir?: 'ltr' | 'rtl';\n name?: string;\n autoComplete?: string;\n disabled?: boolean;\n required?: boolean;\n searchable?: boolean;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n filterOption?: (option: MultiSelectFilterOption, searchValue: string) => boolean;\n onCreateOption?: (value: string) => void;\n createOptionLabel?: React.ReactNode | ((value: string) => React.ReactNode);\n resetSearchOnClose?: boolean;\n}\n\nconst Root: React.FC<MultiSelectRootProps> = ({\n children,\n value: valueProp,\n defaultValue = [],\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n dir,\n name,\n autoComplete,\n disabled,\n required = false,\n searchable = false,\n searchValue: searchValueProp,\n defaultSearchValue = '',\n onSearchValueChange,\n filterOption = defaultFilterOption,\n onCreateOption,\n createOptionLabel,\n resetSearchOnClose = true,\n}) => {\n const [trigger, setTrigger] = React.useState<HTMLButtonElement | null>(null);\n const [searchInput, setSearchInput] = React.useState<HTMLInputElement | null>(null);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [value = [], setValue] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [searchValue = '', setSearchValue] = useControllableState<string>({\n prop: searchValueProp,\n defaultProp: defaultSearchValue,\n onChange: onSearchValueChange,\n });\n const triggerPointerDownPosRef = React.useRef<{ x: number; y: number } | null>(null);\n\n React.useEffect(() => {\n if (!open && resetSearchOnClose) setSearchValue('');\n }, [open, resetSearchOnClose, setSearchValue]);\n\n const handleValueAdd = React.useCallback(\n (nextValue: string) => {\n setValue((current = []) =>\n current.includes(nextValue) ? current : [...current, nextValue],\n );\n },\n [setValue],\n );\n\n const handleValueToggle = React.useCallback(\n (nextValue: string) => {\n setValue((current = []) =>\n current.includes(nextValue)\n ? current.filter((itemValue) => itemValue !== nextValue)\n : [...current, nextValue],\n );\n },\n [setValue],\n );\n\n return (\n <Popper.Root>\n <MultiSelectProvider\n trigger={trigger}\n onTriggerChange={setTrigger}\n searchInput={searchInput}\n onSearchInputChange={setSearchInput}\n contentId={useId('multi-select-content')}\n value={value}\n onValueChange={React.useCallback((nextValue: string[]) => setValue(nextValue), [setValue])}\n onValueAdd={handleValueAdd}\n onValueToggle={handleValueToggle}\n open={open}\n required={required}\n onOpenChange={React.useCallback((nextOpen: boolean) => setOpen(nextOpen), [setOpen])}\n dir={direction}\n triggerPointerDownPosRef={triggerPointerDownPosRef}\n disabled={disabled}\n searchable={searchable}\n searchValue={searchValue}\n onSearchValueChange={React.useCallback(\n (nextSearchValue: string) => setSearchValue(nextSearchValue),\n [setSearchValue],\n )}\n filterOption={filterOption}\n onCreateOption={onCreateOption}\n createOptionLabel={createOptionLabel}\n >\n {children}\n {name ? (\n <BubbleSelect\n aria-hidden\n tabIndex={-1}\n name={name}\n autoComplete={autoComplete}\n value={value}\n disabled={disabled}\n required={required}\n />\n ) : null}\n </MultiSelectProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'MultiSelect.Root';\n\ninterface BubbleSelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'value' | 'defaultValue'> {\n value: string[];\n}\n\nconst BubbleSelect: React.FC<BubbleSelectProps> = ({ value, ...props }) => (\n <select\n {...props}\n multiple\n value={value}\n onChange={() => {}}\n style={{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n >\n {value.map((itemValue) => (\n <option key={itemValue} value={itemValue} />\n ))}\n </select>\n);\n\nexport interface MultiSelectTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n (props, forwardedRef) => {\n const ctx = useMultiSelectContext('MultiSelect.Trigger');\n const isDisabled = ctx.disabled || props.disabled;\n const composedRef = useComposedRefs(forwardedRef, ctx.onTriggerChange);\n\n const handleOpen = (pointerEvent?: React.MouseEvent | React.PointerEvent) => {\n if (!isDisabled) {\n ctx.onOpenChange(true);\n if (pointerEvent)\n ctx.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY),\n };\n }\n };\n\n return (\n <Popper.Anchor asChild>\n <Primitive.button\n type=\"button\"\n role=\"combobox\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open}\n aria-haspopup=\"listbox\"\n aria-required={ctx.required}\n aria-autocomplete={ctx.searchable ? 'list' : 'none'}\n dir={ctx.dir}\n data-state={ctx.open ? 'open' : 'closed'}\n disabled={isDisabled}\n data-disabled={isDisabled ? '' : undefined}\n data-placeholder={ctx.value.length === 0 ? '' : undefined}\n {...props}\n ref={composedRef}\n onClick={composeEventHandlers(props.onClick, (event) => {\n event.currentTarget.focus();\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target as HTMLElement;\n if (\n typeof target.hasPointerCapture === 'function' &&\n target.hasPointerCapture(event.pointerId)\n ) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false) {\n handleOpen(event);\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isTypeahead =\n event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey;\n if (isTypeahead) {\n if (ctx.searchable) ctx.onSearchValueChange(event.key);\n handleOpen();\n event.preventDefault();\n return;\n }\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })}\n />\n </Popper.Anchor>\n );\n },\n);\nTrigger.displayName = 'MultiSelect.Trigger';\n\nexport interface MultiSelectValueProps\n extends Omit<React.ComponentPropsWithoutRef<'span'>, 'children'> {\n asChild?: boolean;\n placeholder?: React.ReactNode;\n options?: MultiSelectOption[];\n separator?: React.ReactNode;\n children?: React.ReactNode | ((selected: MultiSelectSelectedOption[]) => React.ReactNode);\n}\n\nconst Value = React.forwardRef<HTMLSpanElement, MultiSelectValueProps>((props, forwardedRef) => {\n const { placeholder, options = [], separator = ', ', children, ...rest } = props;\n const ctx = useMultiSelectContext('MultiSelect.Value');\n const optionMap = React.useMemo(\n () => new Map(options.map((option) => [option.value, option])),\n [options],\n );\n const selected = React.useMemo<MultiSelectSelectedOption[]>(\n () =>\n ctx.value.map((itemValue) => {\n const option = optionMap.get(itemValue);\n return {\n value: itemValue,\n label: option?.label ?? itemValue,\n textValue: option ? getOptionTextValue(option) : itemValue,\n disabled: option?.disabled,\n };\n }),\n [ctx.value, optionMap],\n );\n const hasValue = selected.length > 0;\n const content =\n typeof children === 'function'\n ? children(selected)\n : (children ??\n selected.map((option, index) => (\n <React.Fragment key={option.value}>\n {index > 0 ? separator : null}\n <Primitive.span data-multi-select-value-item=\"\">{option.label}</Primitive.span>\n </React.Fragment>\n )));\n\n return (\n <Primitive.span style={{ pointerEvents: 'none' }} {...rest} ref={forwardedRef}>\n {hasValue ? content : placeholder}\n </Primitive.span>\n );\n});\nValue.displayName = 'MultiSelect.Value';\n\nconst Icon = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.span aria-hidden {...props} ref={forwardedRef}>\n {props.children ?? '▼'}\n </Primitive.span>\n));\nIcon.displayName = 'MultiSelect.Icon';\n\nexport interface MultiSelectSearchInputProps extends React.ComponentPropsWithoutRef<'input'> {\n asChild?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, MultiSelectSearchInputProps>(\n (props, forwardedRef) => {\n const ctx = useMultiSelectContext('MultiSelect.SearchInput');\n const composedRef = useComposedRefs(forwardedRef, ctx.onSearchInputChange);\n\n if (!ctx.searchable) return null;\n\n const focusFirstItem = () => {\n const firstItem = document.querySelector<HTMLElement>(\n `[data-multi-select-content=\"${ctx.contentId}\"] [role=\"option\"]:not([data-disabled]):not([hidden])`,\n );\n firstItem?.focus({ preventScroll: true });\n };\n\n const createSearchValue = () => {\n const value = ctx.searchValue.trim();\n if (!value || !ctx.onCreateOption) return false;\n ctx.onCreateOption(value);\n ctx.onValueAdd(value);\n ctx.onSearchValueChange('');\n ctx.searchInput?.focus({ preventScroll: true });\n return true;\n };\n\n return (\n <Primitive.input\n type=\"search\"\n role=\"searchbox\"\n aria-controls={ctx.contentId}\n autoComplete=\"off\"\n spellCheck={false}\n {...props}\n ref={composedRef}\n value={ctx.searchValue}\n onChange={composeEventHandlers(props.onChange, (event) => {\n ctx.onSearchValueChange(event.currentTarget.value);\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusFirstItem();\n } else if (event.key === 'Enter') {\n const firstItem = document.querySelector<HTMLElement>(\n `[data-multi-select-content=\"${ctx.contentId}\"] [role=\"option\"]:not([data-disabled]):not([hidden])`,\n );\n if (!firstItem || firstItem.hasAttribute('data-multi-select-create-option')) {\n if (createSearchValue()) event.preventDefault();\n }\n } else if (event.key === 'Escape') {\n ctx.onOpenChange(false);\n }\n })}\n />\n );\n },\n);\nSearchInput.displayName = 'MultiSelect.SearchInput';\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nexport interface MultiSelectPortalProps {\n children?: React.ReactNode;\n container?: Element | DocumentFragment | null;\n forceMount?: boolean;\n}\n\nconst Portal: React.FC<MultiSelectPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useMultiSelectContext('MultiSelect.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'MultiSelect.Portal';\n\ninterface MultiSelectContentContextValue {\n contentRef: React.RefObject<HTMLDivElement | null>;\n itemRefCallback: (node: HTMLDivElement | null, value: string, disabled?: boolean) => void;\n selectedItem: HTMLDivElement | null;\n}\n\nconst [MultiSelectContentContextProvider, useMultiSelectContentContext] =\n createContext<MultiSelectContentContextValue>('MultiSelectContent');\n\nexport interface MultiSelectContentProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n forceMount?: boolean;\n position?: 'item-aligned' | 'popper';\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionPadding?: number;\n onCloseAutoFocus?: (event: Event) => void;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: Event) => void;\n}\n\nconst Content = React.forwardRef<HTMLDivElement, MultiSelectContentProps>(\n (props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useMultiSelectContext('MultiSelect.Content');\n const {\n forceMount = portalCtx.forceMount,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n alignOffset,\n avoidCollisions = true,\n collisionPadding,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...rest\n } = props;\n const contentRef = React.useRef<HTMLDivElement>(null);\n const [selectedItem, setSelectedItem] = React.useState<HTMLDivElement | null>(null);\n const composedRef = useComposedRefs(forwardedRef, contentRef);\n\n useScrollLock(ctx.open);\n\n const itemRefCallback = React.useCallback(\n (node: HTMLDivElement | null, itemValue: string, disabled?: boolean) => {\n if (!disabled && node && ctx.value.includes(itemValue)) setSelectedItem(node);\n },\n [ctx.value],\n );\n\n return (\n <Presence present={forceMount || ctx.open}>\n <MultiSelectContentContextProvider\n contentRef={contentRef}\n itemRefCallback={itemRefCallback}\n selectedItem={selectedItem}\n >\n <Popper.Content\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n >\n <DismissableLayer\n asChild\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={(event) => {\n onPointerDownOutside?.(event);\n }}\n onDismiss={() => ctx.onOpenChange(false)}\n >\n <FocusScope\n loop\n trapped\n onMountAutoFocus={(event) => {\n event.preventDefault();\n if (ctx.searchable) ctx.searchInput?.focus({ preventScroll: true });\n else if (selectedItem) selectedItem.focus({ preventScroll: true });\n else contentRef.current?.focus({ preventScroll: true });\n }}\n onUnmountAutoFocus={composeEventHandlers(onCloseAutoFocus, (event) => {\n event.preventDefault();\n ctx.trigger?.focus({ preventScroll: true });\n })}\n style={{ display: 'contents' }}\n >\n <Primitive.div\n role=\"listbox\"\n id={ctx.contentId}\n aria-multiselectable=\"true\"\n data-state={ctx.open ? 'open' : 'closed'}\n data-position={position}\n dir={ctx.dir}\n tabIndex={-1}\n data-multi-select-content={ctx.contentId}\n {...rest}\n ref={composedRef}\n onContextMenu={(event) => event.preventDefault()}\n />\n </FocusScope>\n </DismissableLayer>\n </Popper.Content>\n </MultiSelectContentContextProvider>\n </Presence>\n );\n },\n);\nContent.displayName = 'MultiSelect.Content';\n\nconst Viewport = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div\n data-structyl-multi-select-viewport\n role=\"presentation\"\n {...props}\n ref={forwardedRef}\n style={{ position: 'relative', flex: 1, overflow: 'auto', ...props.style }}\n />\n));\nViewport.displayName = 'MultiSelect.Viewport';\n\ninterface MultiSelectItemContextValue {\n value: string;\n textId: string;\n isSelected: boolean;\n}\n\nconst [MultiSelectItemContextProvider, useMultiSelectItemContext] =\n createContext<MultiSelectItemContextValue>('MultiSelectItem');\n\nexport interface MultiSelectItemProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value: string;\n disabled?: boolean;\n textValue?: string;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, MultiSelectItemProps>((props, forwardedRef) => {\n const { value, disabled, textValue, children, ...rest } = props;\n const ctx = useMultiSelectContext('MultiSelect.Item');\n const contentCtx = useMultiSelectContentContext('MultiSelect.Item');\n const isSelected = ctx.value.includes(value);\n const textId = useId('multi-select-item-text');\n const itemRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, itemRef, (node) =>\n contentCtx.itemRefCallback(node, value, disabled),\n );\n const resolvedTextValue = textValue ?? getTextContent(children) ?? value;\n const isVisible =\n !ctx.searchable ||\n !ctx.searchValue.trim() ||\n ctx.filterOption({ value, textValue: resolvedTextValue }, ctx.searchValue);\n\n const handleSelect = () => {\n if (!disabled) ctx.onValueToggle(value);\n };\n\n if (!isVisible) return null;\n\n return (\n <MultiSelectItemContextProvider value={value} textId={textId} isSelected={isSelected}>\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n aria-selected={isSelected && !disabled}\n data-value={value}\n data-highlighted={undefined}\n data-state={isSelected ? 'checked' : 'unchecked'}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? undefined : -1}\n {...rest}\n ref={composedRef}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n if (disabled) return;\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n })}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, (event) => {\n if ((event.currentTarget as HTMLElement) === document.activeElement) {\n contentCtx.contentRef.current?.focus({ preventScroll: true });\n }\n })}\n onClick={composeEventHandlers(rest.onClick, (event) => {\n if (!disabled) {\n (event.currentTarget as HTMLElement).focus();\n handleSelect();\n }\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n focusAdjacentOption(event.currentTarget, event.key === 'ArrowDown' ? 1 : -1);\n }\n if (SELECTION_KEYS.includes(event.key)) {\n event.preventDefault();\n handleSelect();\n }\n })}\n >\n {children}\n </Primitive.div>\n </MultiSelectItemContextProvider>\n );\n});\nItem.displayName = 'MultiSelect.Item';\n\nexport interface MultiSelectCreateItemProps\n extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n value?: string;\n children?: React.ReactNode | ((value: string) => React.ReactNode);\n}\n\nconst CreateItem = React.forwardRef<HTMLDivElement, MultiSelectCreateItemProps>(\n (props, forwardedRef) => {\n const { value: valueProp, children, ...rest } = props;\n const ctx = useMultiSelectContext('MultiSelect.CreateItem');\n const contentCtx = useMultiSelectContentContext('MultiSelect.CreateItem');\n const textId = useId('multi-select-create-item-text');\n const value = (valueProp ?? ctx.searchValue).trim();\n\n if (!ctx.searchable || !ctx.onCreateOption || !value) return null;\n\n const label =\n typeof children === 'function'\n ? children(value)\n : (children ??\n (typeof ctx.createOptionLabel === 'function'\n ? ctx.createOptionLabel(value)\n : (ctx.createOptionLabel ?? `Create \"${value}\"`)));\n\n const handleCreate = () => {\n ctx.onCreateOption?.(value);\n ctx.onValueAdd(value);\n ctx.onSearchValueChange('');\n ctx.searchInput?.focus({ preventScroll: true });\n };\n\n return (\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n aria-selected={false}\n data-multi-select-create-option=\"\"\n data-state=\"unchecked\"\n tabIndex={-1}\n {...rest}\n ref={forwardedRef}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n })}\n onPointerLeave={composeEventHandlers(rest.onPointerLeave, (event) => {\n if ((event.currentTarget as HTMLElement) === document.activeElement) {\n contentCtx.contentRef.current?.focus({ preventScroll: true });\n }\n })}\n onClick={composeEventHandlers(rest.onClick, (event) => {\n (event.currentTarget as HTMLElement).focus();\n handleCreate();\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n focusAdjacentOption(event.currentTarget, event.key === 'ArrowDown' ? 1 : -1);\n }\n if (SELECTION_KEYS.includes(event.key)) {\n event.preventDefault();\n handleCreate();\n }\n })}\n >\n <Primitive.span id={textId}>{label}</Primitive.span>\n </Primitive.div>\n );\n },\n);\nCreateItem.displayName = 'MultiSelect.CreateItem';\n\nexport interface MultiSelectItemTextProps extends React.ComponentPropsWithoutRef<'span'> {\n asChild?: boolean;\n}\n\nconst ItemText = React.forwardRef<HTMLSpanElement, MultiSelectItemTextProps>(\n (props, forwardedRef) => {\n const itemCtx = useMultiSelectItemContext('MultiSelect.ItemText');\n return <Primitive.span id={itemCtx.textId} {...props} ref={forwardedRef} />;\n },\n);\nItemText.displayName = 'MultiSelect.ItemText';\n\nconst ItemIndicator = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & { asChild?: boolean }\n>((props, forwardedRef) => {\n const itemCtx = useMultiSelectItemContext('MultiSelect.ItemIndicator');\n return itemCtx.isSelected ? <Primitive.span aria-hidden {...props} ref={forwardedRef} /> : null;\n});\nItemIndicator.displayName = 'MultiSelect.ItemIndicator';\n\nexport interface MultiSelectOptionsProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n options: MultiSelectOption[];\n itemHeight?: number;\n overscan?: number;\n visibleItemCount?: number;\n emptyMessage?: React.ReactNode;\n itemClassName?: string;\n itemTextClassName?: string;\n itemIndicatorClassName?: string;\n renderOption?: (option: MultiSelectOption) => React.ReactNode;\n renderItemIndicator?: (option: MultiSelectOption) => React.ReactNode;\n}\n\nconst Options = React.forwardRef<HTMLDivElement, MultiSelectOptionsProps>(\n (props, forwardedRef) => {\n const {\n options,\n itemHeight = 36,\n overscan = 6,\n visibleItemCount = 8,\n emptyMessage = 'No options found.',\n itemClassName,\n itemTextClassName,\n itemIndicatorClassName,\n renderOption,\n renderItemIndicator,\n style,\n ...rest\n } = props;\n const ctx = useMultiSelectContext('MultiSelect.Options');\n const { filterOption, open, searchable, searchValue, value } = ctx;\n const listRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, listRef);\n const fallbackViewportHeight = itemHeight * visibleItemCount;\n const [viewportState, setViewportState] = React.useState({\n scrollTop: 0,\n height: fallbackViewportHeight,\n });\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue.trim()) return options;\n return options.filter((option) =>\n filterOption(\n {\n value: option.value,\n textValue: getOptionTextValue(option),\n },\n searchValue,\n ),\n );\n }, [filterOption, options, searchable, searchValue]);\n\n React.useLayoutEffect(() => {\n const node = listRef.current;\n const scrollNode = node?.parentElement;\n if (!scrollNode) return;\n\n const updateViewportState = () => {\n setViewportState({\n scrollTop: scrollNode.scrollTop,\n height: scrollNode.clientHeight || fallbackViewportHeight,\n });\n };\n\n updateViewportState();\n scrollNode.addEventListener('scroll', updateViewportState, { passive: true });\n\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(updateViewportState);\n resizeObserver.observe(scrollNode);\n }\n\n return () => {\n scrollNode.removeEventListener('scroll', updateViewportState);\n resizeObserver?.disconnect();\n };\n }, [fallbackViewportHeight]);\n\n React.useLayoutEffect(() => {\n if (!open || value.length === 0) return;\n const node = listRef.current;\n const scrollNode = node?.parentElement;\n if (!scrollNode) return;\n const selectedIndex = filteredOptions.findIndex((option) => value.includes(option.value));\n if (selectedIndex >= 0) scrollNode.scrollTop = selectedIndex * itemHeight;\n }, [open, value, filteredOptions, itemHeight]);\n\n if (filteredOptions.length === 0) {\n return (\n <Primitive.div role=\"presentation\" {...rest} ref={composedRef} style={style}>\n {emptyMessage}\n </Primitive.div>\n );\n }\n\n const startIndex = Math.max(0, Math.floor(viewportState.scrollTop / itemHeight) - overscan);\n const endIndex = Math.min(\n filteredOptions.length,\n Math.ceil((viewportState.scrollTop + viewportState.height) / itemHeight) + overscan,\n );\n const visibleOptions = filteredOptions.slice(startIndex, endIndex);\n const totalHeight = filteredOptions.length * itemHeight;\n\n return (\n <Primitive.div\n role=\"presentation\"\n {...rest}\n ref={composedRef}\n style={{ position: 'relative', height: totalHeight, ...style }}\n >\n {visibleOptions.map((option, index) => {\n const top = (startIndex + index) * itemHeight;\n return (\n <Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n textValue={getOptionTextValue(option)}\n className={itemClassName}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: itemHeight,\n transform: `translateY(${top}px)`,\n }}\n >\n {renderItemIndicator ? (\n <Primitive.span className={itemIndicatorClassName}>\n <ItemIndicator>{renderItemIndicator(option)}</ItemIndicator>\n </Primitive.span>\n ) : null}\n <ItemText className={itemTextClassName}>\n {renderOption ? renderOption(option) : option.label}\n </ItemText>\n </Item>\n );\n })}\n </Primitive.div>\n );\n },\n);\nOptions.displayName = 'MultiSelect.Options';\n\nconst Group = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => <Primitive.div role=\"group\" {...props} ref={forwardedRef} />);\nGroup.displayName = 'MultiSelect.Group';\n\nconst Label = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />);\nLabel.displayName = 'MultiSelect.Label';\n\nconst Separator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div role=\"separator\" aria-orientation=\"horizontal\" {...props} ref={forwardedRef} />\n));\nSeparator.displayName = 'MultiSelect.Separator';\n\nfunction normalizeSearch(value: string) {\n return value.trim().toLocaleLowerCase();\n}\n\nfunction getTextContent(node: React.ReactNode): string | undefined {\n if (node == null || typeof node === 'boolean') return undefined;\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) {\n const text = node\n .map((child) => getTextContent(child))\n .filter((child): child is string => Boolean(child))\n .join(' ')\n .trim();\n return text || undefined;\n }\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getTextContent(node.props.children);\n }\n return undefined;\n}\n\nfunction getOptionTextValue(option: MultiSelectOption) {\n return option.textValue ?? getTextContent(option.label) ?? option.value;\n}\n\nfunction focusAdjacentOption(currentItem: HTMLElement, direction: 1 | -1) {\n const content = currentItem.closest('[data-multi-select-content]');\n const items = Array.from(\n content?.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled]):not([hidden])') ??\n [],\n );\n if (!items.length) return;\n\n const currentIndex = items.indexOf(currentItem);\n const nextIndex =\n currentIndex === -1\n ? direction === 1\n ? 0\n : items.length - 1\n : (currentIndex + direction + items.length) % items.length;\n items[nextIndex]?.focus({ preventScroll: true });\n}\n\nexport {\n Root,\n Trigger,\n Value,\n Icon,\n SearchInput,\n Portal,\n Content,\n Viewport,\n Item,\n CreateItem,\n ItemText,\n ItemIndicator,\n Options,\n Group,\n Label,\n Separator,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive, Portal as PortalPrimitive, Popper as PopperPrimitive } from '@structyl/core';\nimport { useComposedRefs, useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as ComboboxPrimitive from '../combobox';\n\ntype DivProps = React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean };\ntype SpanProps = React.ComponentPropsWithoutRef<'span'> & { asChild?: boolean };\ntype ButtonProps = React.ComponentPropsWithoutRef<'button'> & { asChild?: boolean };\n\nconst Box = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-box=\"\" {...props} ref={ref} />\n));\nBox.displayName = 'Box';\n\nconst Container = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-container=\"\" {...props} ref={ref} />\n));\nContainer.displayName = 'Container';\n\nconst Stack = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-stack=\"\" {...props} ref={ref} />\n));\nStack.displayName = 'Stack';\n\nconst Grid = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-grid=\"\" {...props} ref={ref} />\n));\nGrid.displayName = 'Grid';\n\nconst Paper = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-paper=\"\" {...props} ref={ref} />\n));\nPaper.displayName = 'Paper';\n\nconst Typography = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-typography=\"\" {...props} ref={ref} />\n));\nTypography.displayName = 'Typography';\n\nconst Link = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & { asChild?: boolean }\n>((props, ref) => <Primitive.a data-structyl-link=\"\" {...props} ref={ref} />);\nLink.displayName = 'Link';\n\nconst SvgIcon = React.forwardRef<\n SVGSVGElement,\n React.ComponentPropsWithoutRef<'svg'> & { title?: string }\n>(({ title, children, ...props }, ref) => (\n <Primitive.svg\n aria-hidden={title ? undefined : true}\n role={title ? 'img' : undefined}\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n {...props}\n ref={ref}\n >\n {title ? <title>{title}</title> : null}\n {children}\n </Primitive.svg>\n));\nSvgIcon.displayName = 'SvgIcon';\n\nexport interface ChartProps extends Omit<React.ComponentPropsWithoutRef<'svg'>, 'children'> {\n data: number[];\n type?: 'bar' | 'line';\n title?: string;\n}\n\nconst Chart = React.forwardRef<SVGSVGElement, ChartProps>(\n ({ data, type = 'bar', title, viewBox = '0 0 100 40', ...props }, ref) => {\n const max = Math.max(...data, 1);\n const width = 100 / Math.max(data.length, 1);\n const points = data\n .map((value, index) => {\n const x = data.length === 1 ? 50 : (index / (data.length - 1)) * 100;\n const y = 40 - (value / max) * 36 - 2;\n return `${x},${y}`;\n })\n .join(' ');\n\n return (\n <Primitive.svg\n data-structyl-chart=\"\"\n aria-hidden={title ? undefined : true}\n role={title ? 'img' : undefined}\n viewBox={viewBox}\n preserveAspectRatio=\"none\"\n {...props}\n ref={ref}\n >\n {title ? <title>{title}</title> : null}\n {type === 'line' ? (\n <polyline fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" points={points} />\n ) : (\n data.map((value, index) => (\n <rect\n key={`${index}-${value}`}\n x={index * width + width * 0.15}\n y={40 - (value / max) * 36 - 2}\n width={width * 0.7}\n height={(value / max) * 36}\n rx=\"1\"\n fill=\"currentColor\"\n />\n ))\n )}\n </Primitive.svg>\n );\n },\n);\nChart.displayName = 'Chart';\n\nconst ChipRoot = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-chip=\"\" {...props} ref={ref} />\n));\nChipRoot.displayName = 'Chip.Root';\n\nconst ChipLabel = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-chip-label=\"\" {...props} ref={ref} />\n));\nChipLabel.displayName = 'Chip.Label';\n\nconst ChipDelete = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\n <Primitive.button type=\"button\" data-structyl-chip-delete=\"\" {...props} ref={ref} />\n));\nChipDelete.displayName = 'Chip.Delete';\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div role=\"group\" data-structyl-button-group=\"\" {...props} ref={ref} />\n));\nButtonGroup.displayName = 'ButtonGroup';\n\nconst FloatingActionButton = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\n <Primitive.button type=\"button\" data-structyl-floating-action-button=\"\" {...props} ref={ref} />\n));\nFloatingActionButton.displayName = 'FloatingActionButton';\n\nexport interface RatingProps extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'defaultValue' | 'onChange'\n> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n max?: number;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n itemClassName?: string;\n icon?: React.ReactNode;\n emptyIcon?: React.ReactNode;\n getLabelText?: (value: number) => string;\n}\n\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>((props, ref) => {\n const {\n value: valueProp,\n defaultValue = 0,\n onValueChange,\n max = 5,\n disabled,\n readOnly,\n name,\n itemClassName,\n icon = '★',\n emptyIcon = '☆',\n getLabelText = (value) => `${value} star${value === 1 ? '' : 's'}`,\n ...rest\n } = props;\n const [value = 0, setValue] = useControllableState<number>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <Primitive.div role=\"radiogroup\" data-structyl-rating=\"\" {...rest} ref={ref}>\n {Array.from({ length: max }, (_, index) => {\n const itemValue = index + 1;\n const checked = itemValue <= value;\n return (\n <Primitive.button\n key={itemValue}\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n aria-label={getLabelText(itemValue)}\n data-value={itemValue}\n data-state={checked ? 'checked' : 'unchecked'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n className={itemClassName}\n tabIndex={disabled ? undefined : 0}\n onClick={() => {\n if (!disabled && !readOnly) setValue(itemValue);\n }}\n >\n <Primitive.span aria-hidden>{checked ? icon : emptyIcon}</Primitive.span>\n </Primitive.button>\n );\n })}\n {name ? <input type=\"hidden\" name={name} value={value} /> : null}\n </Primitive.div>\n );\n});\nRating.displayName = 'Rating';\n\nconst Autocomplete = {\n Root: ComboboxPrimitive.Root,\n Input: ComboboxPrimitive.Input,\n Portal: ComboboxPrimitive.Portal,\n Content: ComboboxPrimitive.Content,\n Item: ComboboxPrimitive.Item,\n Empty: ComboboxPrimitive.Empty,\n Group: ComboboxPrimitive.Group,\n};\n\nexport interface TransferListOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TransferListProps extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'defaultValue' | 'onChange'\n> {\n options: TransferListOption[];\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n sourceTitle?: React.ReactNode;\n targetTitle?: React.ReactNode;\n}\n\nconst TransferList = React.forwardRef<HTMLDivElement, TransferListProps>((props, ref) => {\n const {\n options,\n value: valueProp,\n defaultValue = [],\n onValueChange,\n sourceTitle = 'Available',\n targetTitle = 'Selected',\n ...rest\n } = props;\n const [targetValues = [], setTargetValues] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [checkedValues, setCheckedValues] = React.useState<string[]>([]);\n const targetSet = React.useMemo(() => new Set(targetValues), [targetValues]);\n const sourceOptions = options.filter((option) => !targetSet.has(option.value));\n const targetOptions = targetValues\n .map((value) => options.find((option) => option.value === value))\n .filter((option): option is TransferListOption => Boolean(option));\n\n const toggleChecked = (value: string) => {\n setCheckedValues((current) =>\n current.includes(value) ? current.filter((item) => item !== value) : [...current, value],\n );\n };\n const moveRight = () => {\n const next = [...targetValues, ...checkedValues.filter((value) => !targetSet.has(value))];\n setTargetValues(next);\n setCheckedValues([]);\n };\n const moveLeft = () => {\n setTargetValues(targetValues.filter((value) => !checkedValues.includes(value)));\n setCheckedValues([]);\n };\n\n const renderPanel = (title: React.ReactNode, panelOptions: TransferListOption[]) => (\n <Primitive.div data-transfer-list-panel=\"\">\n <Primitive.div data-transfer-list-title=\"\">{title}</Primitive.div>\n <Primitive.ul data-transfer-list-list=\"\">\n {panelOptions.map((option) => (\n <Primitive.li key={option.value} data-transfer-list-item=\"\">\n <Primitive.label data-transfer-list-label=\"\">\n <Primitive.input\n type=\"checkbox\"\n checked={checkedValues.includes(option.value)}\n disabled={option.disabled}\n onChange={() => toggleChecked(option.value)}\n />\n <Primitive.span>{option.label}</Primitive.span>\n </Primitive.label>\n </Primitive.li>\n ))}\n </Primitive.ul>\n </Primitive.div>\n );\n\n return (\n <Primitive.div data-structyl-transfer-list=\"\" {...rest} ref={ref}>\n {renderPanel(sourceTitle, sourceOptions)}\n <Primitive.div data-transfer-list-actions=\"\">\n <Primitive.button type=\"button\" onClick={moveRight}>\n >\n </Primitive.button>\n <Primitive.button type=\"button\" onClick={moveLeft}>\n <\n </Primitive.button>\n </Primitive.div>\n {renderPanel(targetTitle, targetOptions)}\n </Primitive.div>\n );\n});\nTransferList.displayName = 'TransferList';\n\nconst ListRoot = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, ref) => <Primitive.ul data-structyl-list=\"\" {...props} ref={ref} />,\n);\nListRoot.displayName = 'List.Root';\n\nconst ListItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n (props, ref) => <Primitive.li data-structyl-list-item=\"\" {...props} ref={ref} />,\n);\nListItem.displayName = 'List.Item';\n\nconst ListItemButton = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\n <Primitive.button type=\"button\" data-structyl-list-item-button=\"\" {...props} ref={ref} />\n));\nListItemButton.displayName = 'List.ItemButton';\n\nconst ListItemText = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-list-item-text=\"\" {...props} ref={ref} />\n));\nListItemText.displayName = 'List.ItemText';\n\nconst ListItemIcon = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-list-item-icon=\"\" {...props} ref={ref} />\n));\nListItemIcon.displayName = 'List.ItemIcon';\n\nconst ListItemAvatar = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-list-item-avatar=\"\" {...props} ref={ref} />\n));\nListItemAvatar.displayName = 'List.ItemAvatar';\n\nconst ListItemSecondaryAction = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-list-item-secondary-action=\"\" {...props} ref={ref} />\n));\nListItemSecondaryAction.displayName = 'List.ItemSecondaryAction';\n\nconst ListSubheader = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n (props, ref) => <Primitive.li data-structyl-list-subheader=\"\" {...props} ref={ref} />,\n);\nListSubheader.displayName = 'List.Subheader';\n\nconst List = {\n Root: ListRoot,\n Item: ListItem,\n ItemButton: ListItemButton,\n ItemText: ListItemText,\n ItemIcon: ListItemIcon,\n ItemAvatar: ListItemAvatar,\n ItemSecondaryAction: ListItemSecondaryAction,\n Subheader: ListSubheader,\n};\n\nconst ImageListRoot = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, ref) => <Primitive.ul data-structyl-image-list=\"\" {...props} ref={ref} />,\n);\nImageListRoot.displayName = 'ImageList.Root';\n\nconst ImageListItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n (props, ref) => <Primitive.li data-structyl-image-list-item=\"\" {...props} ref={ref} />,\n);\nImageListItem.displayName = 'ImageList.Item';\n\nconst ImageListImage = React.forwardRef<HTMLImageElement, React.ComponentPropsWithoutRef<'img'>>(\n (props, ref) => <Primitive.img data-structyl-image-list-image=\"\" {...props} ref={ref} />,\n);\nImageListImage.displayName = 'ImageList.Image';\n\nconst ImageListCaption = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-image-list-caption=\"\" {...props} ref={ref} />\n));\nImageListCaption.displayName = 'ImageList.Caption';\n\nconst ImageList = {\n Root: ImageListRoot,\n Item: ImageListItem,\n Image: ImageListImage,\n Caption: ImageListCaption,\n};\n\nconst TableRoot = React.forwardRef<HTMLTableElement, React.ComponentPropsWithoutRef<'table'>>(\n (props, ref) => <table data-structyl-table=\"\" {...props} ref={ref} />,\n);\nTableRoot.displayName = 'Table.Root';\n\nconst TableHeader = React.forwardRef<\n React.ElementRef<'thead'>,\n React.ComponentPropsWithoutRef<'thead'>\n>((props, ref) => <thead data-structyl-table-header=\"\" {...props} ref={ref} />);\nTableHeader.displayName = 'Table.Header';\n\nconst TableBody = React.forwardRef<\n React.ElementRef<'tbody'>,\n React.ComponentPropsWithoutRef<'tbody'>\n>((props, ref) => <tbody data-structyl-table-body=\"\" {...props} ref={ref} />);\nTableBody.displayName = 'Table.Body';\n\nconst TableFooter = React.forwardRef<\n React.ElementRef<'tfoot'>,\n React.ComponentPropsWithoutRef<'tfoot'>\n>((props, ref) => <tfoot data-structyl-table-footer=\"\" {...props} ref={ref} />);\nTableFooter.displayName = 'Table.Footer';\n\nconst TableRow = React.forwardRef<React.ElementRef<'tr'>, React.ComponentPropsWithoutRef<'tr'>>(\n (props, ref) => <tr data-structyl-table-row=\"\" {...props} ref={ref} />,\n);\nTableRow.displayName = 'Table.Row';\n\nconst TableHead = React.forwardRef<React.ElementRef<'th'>, React.ComponentPropsWithoutRef<'th'>>(\n (props, ref) => <th data-structyl-table-head=\"\" {...props} ref={ref} />,\n);\nTableHead.displayName = 'Table.Head';\n\nconst TableCell = React.forwardRef<React.ElementRef<'td'>, React.ComponentPropsWithoutRef<'td'>>(\n (props, ref) => <td data-structyl-table-cell=\"\" {...props} ref={ref} />,\n);\nTableCell.displayName = 'Table.Cell';\n\nconst TableCaption = React.forwardRef<\n React.ElementRef<'caption'>,\n React.ComponentPropsWithoutRef<'caption'>\n>((props, ref) => <caption data-structyl-table-caption=\"\" {...props} ref={ref} />);\nTableCaption.displayName = 'Table.Caption';\n\nconst Table = {\n Root: TableRoot,\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n Head: TableHead,\n Cell: TableCell,\n Caption: TableCaption,\n};\n\nexport interface BackdropProps extends DivProps {\n open?: boolean;\n forceMount?: boolean;\n invisible?: boolean;\n}\n\nconst Backdrop = React.forwardRef<HTMLDivElement, BackdropProps>(\n ({ open = false, forceMount = false, invisible = false, ...props }, ref) =>\n open || forceMount ? (\n <Primitive.div\n data-structyl-backdrop=\"\"\n data-state={open ? 'open' : 'closed'}\n data-invisible={invisible ? '' : undefined}\n {...props}\n ref={ref}\n />\n ) : null,\n);\nBackdrop.displayName = 'Backdrop';\n\nexport interface SnackbarOrigin {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n}\n\nexport type SnackbarCloseReason = 'timeout' | 'clickaway' | 'escapeKeyDown';\n\nexport interface SnackbarProps extends Omit<DivProps, 'defaultValue' | 'onChange'> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n autoHideDuration?: number;\n resumeHideDuration?: number;\n disableWindowBlurListener?: boolean;\n anchorOrigin?: SnackbarOrigin;\n message?: React.ReactNode;\n action?: React.ReactNode;\n onClose?: (event: Event | React.SyntheticEvent | null, reason: SnackbarCloseReason) => void;\n}\n\nconst Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>((props, ref) => {\n const {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n autoHideDuration,\n resumeHideDuration,\n disableWindowBlurListener,\n anchorOrigin = { vertical: 'bottom', horizontal: 'left' },\n message,\n action,\n onClose,\n children,\n ...rest\n } = props;\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const requestClose = React.useCallback(\n (event: Event | React.SyntheticEvent | null, reason: SnackbarCloseReason) => {\n onClose?.(event, reason);\n setOpen(false);\n },\n [onClose, setOpen],\n );\n\n React.useEffect(() => {\n if (!open || autoHideDuration === undefined) return;\n const timer = window.setTimeout(() => requestClose(null, 'timeout'), autoHideDuration);\n return () => window.clearTimeout(timer);\n }, [autoHideDuration, open, requestClose]);\n\n React.useEffect(() => {\n if (!open) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') requestClose(event, 'escapeKeyDown');\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [open, requestClose]);\n\n void resumeHideDuration;\n void disableWindowBlurListener;\n\n if (!open) return null;\n\n return (\n <Primitive.div\n role=\"status\"\n data-structyl-snackbar=\"\"\n data-anchor-vertical={anchorOrigin.vertical}\n data-anchor-horizontal={anchorOrigin.horizontal}\n {...rest}\n ref={ref}\n >\n {children ?? (\n <>\n {message ? <Primitive.span data-snackbar-message=\"\">{message}</Primitive.span> : null}\n {action ? <Primitive.span data-snackbar-action=\"\">{action}</Primitive.span> : null}\n </>\n )}\n </Primitive.div>\n );\n});\nSnackbar.displayName = 'Snackbar';\n\nexport type ModalCloseReason = 'escapeKeyDown' | 'backdropClick';\n\nexport interface ModalProps extends Omit<DivProps, 'defaultValue' | 'onChange'> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n onClose?: (\n event: KeyboardEvent | React.PointerEvent<HTMLDivElement>,\n reason: ModalCloseReason,\n ) => void;\n container?: Element | DocumentFragment | null;\n closeOnEscape?: boolean;\n closeOnPointerDownOutside?: boolean;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onClose,\n container,\n closeOnEscape = true,\n closeOnPointerDownOutside = true,\n ...rest\n } = props;\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n React.useEffect(() => {\n if (!open || !closeOnEscape) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose?.(event, 'escapeKeyDown');\n setOpen(false);\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [closeOnEscape, onClose, open, setOpen]);\n\n if (!open) return null;\n\n return (\n <PortalPrimitive container={container ?? undefined}>\n <Primitive.div\n role=\"presentation\"\n data-structyl-modal=\"\"\n {...rest}\n ref={ref}\n onPointerDown={composeEventHandlers(rest.onPointerDown, (event) => {\n if (closeOnPointerDownOutside && event.target === event.currentTarget) {\n onClose?.(event, 'backdropClick');\n setOpen(false);\n }\n })}\n />\n </PortalPrimitive>\n );\n});\nModal.displayName = 'Modal';\n\nconst AppBar = React.forwardRef<HTMLElement, React.ComponentPropsWithoutRef<'header'>>(\n (props, ref) => <header data-structyl-app-bar=\"\" {...props} ref={ref} />,\n);\nAppBar.displayName = 'AppBar';\n\ninterface BottomNavigationContextValue {\n value?: string;\n showLabels: boolean;\n onValueChange: (value: string) => void;\n}\n\nconst BottomNavigationContext = React.createContext<BottomNavigationContextValue | null>(null);\n\nexport interface BottomNavigationRootProps extends Omit<\n React.ComponentPropsWithoutRef<'nav'>,\n 'defaultValue' | 'onChange'\n> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n showLabels?: boolean;\n}\n\nconst BottomNavigationRoot = React.forwardRef<HTMLElement, BottomNavigationRootProps>(\n ({ value: valueProp, defaultValue, onValueChange, role, showLabels = false, ...props }, ref) => {\n const [value, setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n return (\n <BottomNavigationContext.Provider\n value={{ value, showLabels, onValueChange: (nextValue) => setValue(nextValue) }}\n >\n <nav\n data-structyl-bottom-navigation=\"\"\n data-show-labels={showLabels ? '' : undefined}\n role={role ?? 'tablist'}\n {...props}\n ref={ref}\n />\n </BottomNavigationContext.Provider>\n );\n },\n);\nBottomNavigationRoot.displayName = 'BottomNavigation.Root';\n\nexport interface BottomNavigationItemProps extends ButtonProps {\n value: string;\n icon?: React.ReactNode;\n label?: React.ReactNode;\n showLabel?: boolean;\n}\n\nconst BottomNavigationItem = React.forwardRef<HTMLButtonElement, BottomNavigationItemProps>(\n ({ value, icon, label, showLabel, children, ...props }, ref) => {\n const ctx = React.useContext(BottomNavigationContext);\n const selected = ctx?.value === value;\n const shouldShowLabel = showLabel ?? ctx?.showLabels ?? selected;\n return (\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n data-state={selected ? 'checked' : 'unchecked'}\n data-value={value}\n {...props}\n ref={ref}\n onClick={composeEventHandlers(props.onClick, () => ctx?.onValueChange(value))}\n >\n {icon ? <Primitive.span data-bottom-navigation-icon=\"\">{icon}</Primitive.span> : null}\n {label !== undefined ? (\n <Primitive.span\n data-bottom-navigation-label=\"\"\n data-hidden={shouldShowLabel ? undefined : ''}\n >\n {label}\n </Primitive.span>\n ) : (\n children\n )}\n </Primitive.button>\n );\n },\n);\nBottomNavigationItem.displayName = 'BottomNavigation.Item';\n\nconst BottomNavigation = {\n Root: BottomNavigationRoot,\n Item: BottomNavigationItem,\n};\n\ninterface SpeedDialContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nconst SpeedDialContext = React.createContext<SpeedDialContextValue | null>(null);\n\nexport interface SpeedDialRootProps extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'defaultValue' | 'onChange'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n direction?: 'up' | 'down' | 'left' | 'right';\n hidden?: boolean;\n}\n\nconst SpeedDialRoot = React.forwardRef<HTMLDivElement, SpeedDialRootProps>(\n (\n {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n direction = 'up',\n hidden = false,\n ...props\n },\n ref,\n ) => {\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n if (hidden) return null;\n return (\n <SpeedDialContext.Provider value={{ open, onOpenChange: (nextOpen) => setOpen(nextOpen) }}>\n <Primitive.div\n data-structyl-speed-dial=\"\"\n data-state={open ? 'open' : 'closed'}\n data-direction={direction}\n {...props}\n ref={ref}\n />\n </SpeedDialContext.Provider>\n );\n },\n);\nSpeedDialRoot.displayName = 'SpeedDial.Root';\n\nexport interface SpeedDialTriggerProps extends ButtonProps {\n icon?: React.ReactNode;\n openIcon?: React.ReactNode;\n}\n\nconst SpeedDialTrigger = React.forwardRef<HTMLButtonElement, SpeedDialTriggerProps>(\n (props, ref) => {\n const { icon, openIcon, children, ...rest } = props;\n const ctx = React.useContext(SpeedDialContext);\n return (\n <Primitive.button\n type=\"button\"\n aria-expanded={ctx?.open}\n data-structyl-speed-dial-trigger=\"\"\n {...rest}\n ref={ref}\n onClick={composeEventHandlers(rest.onClick, () => ctx?.onOpenChange(!ctx.open))}\n >\n {children ?? (ctx?.open ? openIcon : icon)}\n </Primitive.button>\n );\n },\n);\nSpeedDialTrigger.displayName = 'SpeedDial.Trigger';\n\nconst SpeedDialContent = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => {\n const ctx = React.useContext(SpeedDialContext);\n return ctx?.open ? (\n <Primitive.div data-structyl-speed-dial-content=\"\" {...props} ref={ref} />\n ) : null;\n});\nSpeedDialContent.displayName = 'SpeedDial.Content';\n\nconst SpeedDialAction = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\n <Primitive.button type=\"button\" data-structyl-speed-dial-action=\"\" {...props} ref={ref} />\n));\nSpeedDialAction.displayName = 'SpeedDial.Action';\n\nconst SpeedDial = {\n Root: SpeedDialRoot,\n Trigger: SpeedDialTrigger,\n Content: SpeedDialContent,\n Action: SpeedDialAction,\n};\n\nconst Masonry = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-masonry=\"\" {...props} ref={ref} />\n));\nMasonry.displayName = 'Masonry';\n\nconst TimelineRoot = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, ref) => <Primitive.ul data-structyl-timeline=\"\" {...props} ref={ref} />,\n);\nTimelineRoot.displayName = 'Timeline.Root';\n\nconst TimelineItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n (props, ref) => <Primitive.li data-structyl-timeline-item=\"\" {...props} ref={ref} />,\n);\nTimelineItem.displayName = 'Timeline.Item';\n\nconst TimelineSeparator = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-timeline-separator=\"\" {...props} ref={ref} />\n));\nTimelineSeparator.displayName = 'Timeline.Separator';\n\nconst TimelineDot = React.forwardRef<HTMLSpanElement, SpanProps>((props, ref) => (\n <Primitive.span data-structyl-timeline-dot=\"\" {...props} ref={ref} />\n));\nTimelineDot.displayName = 'Timeline.Dot';\n\nconst TimelineContent = React.forwardRef<HTMLDivElement, DivProps>((props, ref) => (\n <Primitive.div data-structyl-timeline-content=\"\" {...props} ref={ref} />\n));\nTimelineContent.displayName = 'Timeline.Content';\n\nconst Timeline = {\n Root: TimelineRoot,\n Item: TimelineItem,\n Separator: TimelineSeparator,\n Dot: TimelineDot,\n Content: TimelineContent,\n};\n\nexport interface ClickAwayListenerProps {\n children?: React.ReactNode;\n onClickAway?: (event: MouseEvent | TouchEvent) => void;\n}\n\nconst ClickAwayListener = React.forwardRef<HTMLSpanElement, ClickAwayListenerProps>(\n ({ children, onClickAway }, ref) => {\n const localRef = React.useRef<HTMLSpanElement>(null);\n const composedRef = useComposedRefs(ref, localRef);\n\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n const handlePointer = (event: MouseEvent | TouchEvent) => {\n const node = localRef.current;\n if (node && event.target instanceof Node && !node.contains(event.target)) {\n onClickAway?.(event);\n }\n };\n document.addEventListener('mousedown', handlePointer);\n document.addEventListener('touchstart', handlePointer);\n return () => {\n document.removeEventListener('mousedown', handlePointer);\n document.removeEventListener('touchstart', handlePointer);\n };\n }, [onClickAway]);\n\n return (\n <span ref={composedRef} style={{ display: 'contents' }}>\n {children}\n </span>\n );\n },\n);\nClickAwayListener.displayName = 'ClickAwayListener';\n\nconst NoSsr: React.FC<{\n children?: React.ReactNode;\n fallback?: React.ReactNode;\n defer?: boolean;\n}> = ({ children, fallback = null, defer = false }) => {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!defer) {\n setMounted(true);\n return;\n }\n if (typeof window === 'undefined') return;\n const frame = window.requestAnimationFrame(() => setMounted(true));\n return () => window.cancelAnimationFrame(frame);\n }, [defer]);\n return mounted ? <>{children}</> : <>{fallback}</>;\n};\nNoSsr.displayName = 'NoSsr';\n\nconst Portal = PortalPrimitive;\n\n// ── MUI-style Popper ──────────────────────────────────────────────────────────\n\nexport interface PopperProps {\n open: boolean;\n anchorEl?: Element | null | (() => Element | null);\n placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n keepMounted?: boolean;\n disablePortal?: boolean;\n container?: Element | DocumentFragment | null;\n}\n\nfunction getAnchorEl(anchorEl: PopperProps['anchorEl']): Element | null {\n return typeof anchorEl === 'function' ? anchorEl() : (anchorEl ?? null);\n}\n\nfunction parsePlacement(placement: string): { side: 'top' | 'right' | 'bottom' | 'left'; align: 'start' | 'center' | 'end' } {\n const [side, align = 'center'] = placement.split('-') as [string, string | undefined];\n return { side: side as 'top' | 'right' | 'bottom' | 'left', align: (align ?? 'center') as 'start' | 'center' | 'end' };\n}\n\nconst Popper = React.forwardRef<HTMLDivElement, PopperProps>(\n ({ open, anchorEl: anchorElProp, placement = 'bottom', children, className, style, keepMounted = false, disablePortal = false, container }, ref) => {\n const virtualRef = React.useRef({ getBoundingClientRect: (): DOMRect => getAnchorEl(anchorElProp)?.getBoundingClientRect() ?? new DOMRect() });\n\n React.useEffect(() => {\n virtualRef.current.getBoundingClientRect = () => getAnchorEl(anchorElProp)?.getBoundingClientRect() ?? new DOMRect();\n });\n\n if (!open && !keepMounted) return null;\n\n const { side, align } = parsePlacement(placement);\n\n const content = (\n <PopperPrimitive.Root>\n <PopperPrimitive.Anchor virtualRef={virtualRef} />\n <PopperPrimitive.Content\n ref={ref}\n side={side}\n align={align}\n sideOffset={4}\n style={{ display: !open ? 'none' : undefined, ...style }}\n className={className}\n >\n {children}\n </PopperPrimitive.Content>\n </PopperPrimitive.Root>\n );\n\n if (disablePortal) return content;\n return <PortalPrimitive container={container ?? undefined}>{content}</PortalPrimitive>;\n },\n);\nPopper.displayName = 'Popper';\n\nexport interface TextareaAutosizeProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n minRows?: number;\n maxRows?: number;\n}\n\nconst TextareaAutosize = React.forwardRef<HTMLTextAreaElement, TextareaAutosizeProps>(\n ({ minRows = 1, maxRows, style, onInput, ...props }, ref) => {\n const localRef = React.useRef<HTMLTextAreaElement>(null);\n const composedRef = useComposedRefs(ref, localRef);\n\n const resize = React.useCallback(() => {\n const node = localRef.current;\n if (!node) return;\n const lineHeight = Number.parseFloat(window.getComputedStyle(node).lineHeight || '20');\n node.style.height = 'auto';\n const minHeight = lineHeight * minRows;\n const maxHeight = maxRows ? lineHeight * maxRows : Number.POSITIVE_INFINITY;\n node.style.height = `${Math.min(Math.max(node.scrollHeight, minHeight), maxHeight)}px`;\n }, [maxRows, minRows]);\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') resize();\n }, [resize, props.value, props.defaultValue]);\n\n return (\n <textarea\n data-structyl-textarea-autosize=\"\"\n rows={minRows}\n {...props}\n ref={composedRef}\n style={{ resize: 'none', ...style }}\n onInput={composeEventHandlers(onInput, resize)}\n />\n );\n },\n);\nTextareaAutosize.displayName = 'TextareaAutosize';\n\ntype TransitionStatus = 'entering' | 'entered' | 'exiting' | 'exited';\n\nexport interface TransitionProps extends Omit<DivProps, 'children'> {\n in?: boolean;\n appear?: boolean;\n mountOnEnter?: boolean;\n unmountOnExit?: boolean;\n timeout?: number | { appear?: number; enter?: number; exit?: number };\n onEnter?: () => void;\n onEntering?: () => void;\n onEntered?: () => void;\n onExit?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n children?: React.ReactNode | ((status: TransitionStatus) => React.ReactNode);\n}\n\nconst Transition = React.forwardRef<HTMLDivElement, TransitionProps>(\n (\n {\n in: inProp = false,\n appear = false,\n mountOnEnter = false,\n unmountOnExit = false,\n timeout = 300,\n onEnter, onEntering, onEntered,\n onExit, onExiting, onExited,\n children,\n ...props\n },\n ref,\n ) => {\n const enterMs = typeof timeout === 'number' ? timeout : (timeout.enter ?? 300);\n const exitMs = typeof timeout === 'number' ? timeout : (timeout.exit ?? 300);\n const appearMs = typeof timeout === 'number' ? timeout : (timeout.appear ?? enterMs);\n\n const initialStatus: TransitionStatus = inProp\n ? (appear ? 'exited' : 'entered')\n : 'exited';\n\n const [status, setStatus] = React.useState<TransitionStatus>(initialStatus);\n const [mounted, setMounted] = React.useState(inProp || !mountOnEnter);\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n React.useEffect(() => {\n if (inProp) {\n setMounted(true);\n setStatus('entering');\n onEnter?.();\n timerRef.current = setTimeout(() => {\n setStatus('entering');\n onEntering?.();\n timerRef.current = setTimeout(() => {\n setStatus('entered');\n onEntered?.();\n }, status === 'exited' && appear ? appearMs : enterMs);\n }, 10);\n } else {\n setStatus('exiting');\n onExit?.();\n timerRef.current = setTimeout(() => {\n setStatus('exiting');\n onExiting?.();\n timerRef.current = setTimeout(() => {\n setStatus('exited');\n onExited?.();\n if (unmountOnExit) setMounted(false);\n }, exitMs);\n }, 10);\n }\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inProp]);\n\n if (!mounted) return null;\n\n const content = typeof children === 'function' ? children(status) : children;\n\n return (\n <Primitive.div\n data-structyl-transition=\"\"\n data-state={status}\n {...props}\n ref={ref}\n >\n {content}\n </Primitive.div>\n );\n },\n);\nTransition.displayName = 'Transition';\n\nconst CssBaseline: React.FC<{ children?: React.ReactNode; enableColorScheme?: boolean }> = ({\n children,\n enableColorScheme = false,\n}) => (\n <>\n <style data-structyl-css-baseline=\"\">\n {`*,*::before,*::after{box-sizing:border-box}html{line-height:1.5;-webkit-text-size-adjust:100%${enableColorScheme ? ';color-scheme:light dark' : ''}}body{margin:0}button,input,textarea,select{font:inherit}`}\n </style>\n {children}\n </>\n);\nCssBaseline.displayName = 'CssBaseline';\n\nexport interface InitColorSchemeScriptProps {\n storageKey?: string;\n defaultMode?: 'light' | 'dark' | 'system';\n attribute?: string;\n}\n\nconst InitColorSchemeScript: React.FC<InitColorSchemeScriptProps> = ({\n storageKey = 'structyl-mode',\n defaultMode = 'system',\n attribute = 'data-theme',\n}) => {\n const code = `(function(){try{var k=${JSON.stringify(storageKey)};var a=${JSON.stringify(attribute)};var d=${JSON.stringify(defaultMode)};var m=localStorage.getItem(k)||d;if(m===\"system\"){m=window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}document.documentElement.setAttribute(a,m)}catch(e){}})();`;\n return <script suppressHydrationWarning>{code}</script>;\n};\nInitColorSchemeScript.displayName = 'InitColorSchemeScript';\n\nexport {\n Box,\n Container,\n Stack,\n Grid,\n Paper,\n Typography,\n Link,\n SvgIcon,\n Chart,\n ChipRoot,\n ChipLabel,\n ChipDelete,\n ButtonGroup,\n FloatingActionButton,\n Rating,\n Autocomplete,\n TransferList,\n List,\n ImageList,\n Table,\n Backdrop,\n Snackbar,\n Modal,\n AppBar,\n BottomNavigation,\n SpeedDial,\n Masonry,\n Timeline,\n ClickAwayListener,\n NoSsr,\n Portal,\n Popper,\n TextareaAutosize,\n Transition,\n CssBaseline,\n InitColorSchemeScript,\n};\n","export * from './combobox';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n Portal as PortalPrimitive,\n Presence,\n DismissableLayer,\n Popper,\n useDirection,\n} from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface ComboboxContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n inputValue: string;\n onInputValueChange: (value: string) => void;\n value?: string;\n onValueChange: (value: string) => void;\n contentId: string;\n triggerRef: React.RefObject<HTMLInputElement | null>;\n highlightedItem: string | null;\n onHighlightedItemChange: (value: string | null) => void;\n dir: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\nconst [ComboboxProvider, useComboboxContext] = createContext<ComboboxContextValue>('Combobox');\n\nexport interface ComboboxRootProps {\n children?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n dir?: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\nconst Root: React.FC<ComboboxRootProps> = ({\n children,\n value: valueProp,\n defaultValue,\n onValueChange,\n inputValue: inputValueProp,\n defaultInputValue = '',\n onInputValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n dir,\n disabled,\n}) => {\n const direction = useDirection(dir);\n const triggerRef = React.useRef<HTMLInputElement>(null);\n const [open = false, setOpen] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [value, setValue] = useControllableState<string | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => onValueChange?.(v as string),\n });\n const [inputValue = '', setInputValue] = useControllableState<string>({\n prop: inputValueProp,\n defaultProp: defaultInputValue,\n onChange: onInputValueChange,\n });\n const [highlightedItem, setHighlightedItem] = React.useState<string | null>(null);\n return (\n <Popper.Root>\n <ComboboxProvider\n open={open}\n onOpenChange={React.useCallback((v: boolean) => setOpen(v), [setOpen])}\n inputValue={inputValue}\n onInputValueChange={React.useCallback((v: string) => setInputValue(v), [setInputValue])}\n value={value}\n onValueChange={React.useCallback((v: string) => setValue(v), [setValue])}\n contentId={useId('combobox-content')}\n triggerRef={triggerRef}\n highlightedItem={highlightedItem}\n onHighlightedItemChange={setHighlightedItem}\n dir={direction}\n disabled={disabled}\n >\n {children}\n </ComboboxProvider>\n </Popper.Root>\n );\n};\nRoot.displayName = 'Combobox.Root';\n\nexport interface ComboboxInputProps extends React.ComponentPropsWithoutRef<'input'> {\n asChild?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, ComboboxInputProps>(\n (props, forwardedRef) => {\n const ctx = useComboboxContext('Combobox.Input');\n const composedRef = useComposedRefs(forwardedRef, ctx.triggerRef);\n const getItems = () =>\n Array.from(document.querySelectorAll<HTMLElement>(`#${ctx.contentId} [role=\"option\"]:not([data-disabled])`));\n\n return (\n <Popper.Anchor asChild>\n <Primitive.input\n type=\"text\"\n role=\"combobox\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open}\n aria-autocomplete=\"list\"\n aria-activedescendant={ctx.highlightedItem || undefined}\n autoComplete=\"off\"\n spellCheck={false}\n value={ctx.inputValue}\n disabled={ctx.disabled || props.disabled}\n {...props}\n ref={composedRef}\n onChange={composeEventHandlers(props.onChange, (event) => {\n ctx.onInputValueChange(event.currentTarget.value);\n if (!ctx.open) ctx.onOpenChange(true);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n ctx.onOpenChange(true);\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const items = getItems();\n if (!items.length) return;\n const currentIdx = ctx.highlightedItem\n ? items.findIndex((i) => i.getAttribute('data-value') === ctx.highlightedItem)\n : -1;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!ctx.open) ctx.onOpenChange(true);\n const next = items[(currentIdx + 1) % items.length];\n if (next) ctx.onHighlightedItemChange(next.getAttribute('data-value'));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const prev = items[(currentIdx - 1 + items.length) % items.length];\n if (prev) ctx.onHighlightedItemChange(prev.getAttribute('data-value'));\n } else if (event.key === 'Enter') {\n if (ctx.highlightedItem) {\n event.preventDefault();\n ctx.onValueChange(ctx.highlightedItem);\n const item = items.find((i) => i.getAttribute('data-value') === ctx.highlightedItem);\n ctx.onInputValueChange(item?.textContent ?? ctx.highlightedItem);\n ctx.onOpenChange(false);\n }\n } else if (event.key === 'Escape') {\n ctx.onOpenChange(false);\n }\n })}\n />\n </Popper.Anchor>\n );\n },\n);\nInput.displayName = 'Combobox.Input';\n\nconst PortalContext = React.createContext<{ forceMount?: boolean }>({});\n\nexport interface ComboboxPortalProps {\n children?: React.ReactNode;\n container?: Element | DocumentFragment | null;\n forceMount?: boolean;\n}\n\nconst Portal: React.FC<ComboboxPortalProps> = ({ children, container, forceMount }) => {\n const ctx = useComboboxContext('Combobox.Portal');\n return (\n <PortalContext.Provider value={{ forceMount }}>\n <Presence present={forceMount || ctx.open}>\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n </Presence>\n </PortalContext.Provider>\n );\n};\nPortal.displayName = 'Combobox.Portal';\n\nexport interface ComboboxContentProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n forceMount?: boolean;\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n avoidCollisions?: boolean;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n}\n\nconst Content = React.forwardRef<HTMLDivElement, ComboboxContentProps>(\n (props, forwardedRef) => {\n const portalCtx = React.useContext(PortalContext);\n const ctx = useComboboxContext('Combobox.Content');\n const {\n forceMount = portalCtx.forceMount,\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n avoidCollisions = true,\n onEscapeKeyDown,\n ...rest\n } = props;\n return (\n <Presence present={forceMount || ctx.open}>\n <Popper.Content\n side={side}\n sideOffset={sideOffset}\n align={align}\n avoidCollisions={avoidCollisions}\n >\n <DismissableLayer\n asChild\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={(event) => {\n const target = event.target as HTMLElement;\n if (ctx.triggerRef.current?.contains(target)) event.preventDefault();\n }}\n onDismiss={() => ctx.onOpenChange(false)}\n >\n <Primitive.div\n role=\"listbox\"\n id={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n dir={ctx.dir}\n {...rest}\n ref={forwardedRef}\n />\n </DismissableLayer>\n </Popper.Content>\n </Presence>\n );\n },\n);\nContent.displayName = 'Combobox.Content';\n\nexport interface ComboboxItemProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value: string;\n disabled?: boolean;\n textValue?: string;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, ComboboxItemProps>(\n (props, forwardedRef) => {\n const { value, disabled, textValue, ...rest } = props;\n const ctx = useComboboxContext('Combobox.Item');\n const isSelected = ctx.value === value;\n const isHighlighted = ctx.highlightedItem === value;\n const itemId = useId('combobox-item');\n return (\n <Primitive.div\n id={itemId}\n role=\"option\"\n aria-selected={isSelected}\n data-value={value}\n data-highlighted={isHighlighted ? '' : undefined}\n data-state={isSelected ? 'checked' : 'unchecked'}\n data-disabled={disabled ? '' : undefined}\n aria-disabled={disabled || undefined}\n {...rest}\n ref={forwardedRef}\n onPointerMove={composeEventHandlers(rest.onPointerMove, () => {\n if (!disabled) ctx.onHighlightedItemChange(value);\n })}\n onClick={composeEventHandlers(rest.onClick, () => {\n if (disabled) return;\n ctx.onValueChange(value);\n ctx.onInputValueChange(textValue ?? value);\n ctx.onOpenChange(false);\n ctx.triggerRef.current?.focus();\n })}\n />\n );\n },\n);\nItem.displayName = 'Combobox.Item';\n\nconst Empty = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />,\n);\nEmpty.displayName = 'Combobox.Empty';\n\nconst Group = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div role=\"group\" {...props} ref={forwardedRef} />\n));\nGroup.displayName = 'Combobox.Group';\n\nconst Separator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div role=\"separator\" {...props} ref={forwardedRef} />\n));\nSeparator.displayName = 'Combobox.Separator';\n\nexport { Root, Input, Portal, Content, Item, Empty, Group, Separator };\n","export * from './command';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useId, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ntype Score = (value: string, search: string, keywords?: string[]) => number;\n\ninterface CommandContextValue {\n value: string;\n setValue: (value: string, opts?: { fromInput?: boolean }) => void;\n search: string;\n setSearch: (search: string) => void;\n filter: Score;\n shouldFilter: boolean;\n registerItem: (id: string, value: string, keywords?: string[]) => () => void;\n registerGroup: (id: string, heading?: string) => () => void;\n getItemScore: (id: string) => number;\n inputRef: React.RefObject<HTMLInputElement | null>;\n listRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst [CommandProvider, useCommandContext] = createContext<CommandContextValue>('Command');\n\nconst defaultFilter: Score = (value, search) => {\n if (!search) return 1;\n const v = value.toLowerCase();\n const s = search.toLowerCase();\n if (v.startsWith(s)) return 1;\n if (v.includes(s)) return 0.5;\n return 0;\n};\n\nexport interface CommandRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n filter?: Score;\n shouldFilter?: boolean;\n label?: string;\n loop?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, CommandRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n filter = defaultFilter,\n shouldFilter = true,\n label = 'Command Menu',\n loop = false,\n ...rest\n } = props;\n\n const [value = '', setValueState] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [search, setSearch] = React.useState('');\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const itemsRef = React.useRef(\n new Map<string, { value: string; keywords?: string[] }>(),\n );\n\n const registerItem = React.useCallback(\n (id: string, v: string, keywords?: string[]) => {\n itemsRef.current.set(id, { value: v, keywords });\n return () => {\n itemsRef.current.delete(id);\n };\n },\n [],\n );\n\n const registerGroup = React.useCallback((id: string, heading?: string) => {\n return () => {\n void id;\n void heading;\n };\n }, []);\n\n const getItemScore = React.useCallback(\n (id: string) => {\n if (!shouldFilter) return 1;\n const item = itemsRef.current.get(id);\n if (!item) return search ? 0 : 1;\n return filter(item.value, search, item.keywords);\n },\n [filter, search, shouldFilter],\n );\n\n const setValue = React.useCallback(\n (v: string) => {\n setValueState(v);\n },\n [setValueState],\n );\n\n return (\n <CommandProvider\n value={value}\n setValue={setValue}\n search={search}\n setSearch={setSearch}\n filter={filter}\n shouldFilter={shouldFilter}\n registerItem={registerItem}\n registerGroup={registerGroup}\n getItemScore={getItemScore}\n inputRef={inputRef}\n listRef={listRef}\n >\n <Primitive.div\n aria-label={label}\n role=\"application\"\n {...rest}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const items = listRef.current?.querySelectorAll<HTMLElement>(\n '[role=\"option\"][data-visible=\"true\"]:not([data-disabled])',\n );\n if (!items || items.length === 0) return;\n const arr = Array.from(items);\n const currentIdx = arr.findIndex((el) => el.getAttribute('data-value') === value);\n let next: HTMLElement | undefined;\n if (event.key === 'ArrowDown') {\n next = arr[(currentIdx + 1) % arr.length] || arr[0];\n if (!loop && currentIdx === arr.length - 1) next = arr[arr.length - 1];\n } else {\n next = arr[(currentIdx - 1 + arr.length) % arr.length] || arr[arr.length - 1];\n if (!loop && currentIdx === 0) next = arr[0];\n }\n if (next) {\n setValue(next.getAttribute('data-value') || '');\n next.scrollIntoView({ block: 'nearest' });\n }\n } else if (event.key === 'Enter') {\n const items = listRef.current?.querySelectorAll<HTMLElement>(\n `[role=\"option\"][data-value=\"${value}\"]`,\n );\n items?.[0]?.click();\n }\n })}\n />\n </CommandProvider>\n );\n },\n);\nRoot.displayName = 'Command.Root';\n\nexport interface CommandInputProps extends React.ComponentPropsWithoutRef<'input'> {\n asChild?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, CommandInputProps>(\n (props, forwardedRef) => {\n const ctx = useCommandContext('Command.Input');\n const composedRef = useComposedRefs(forwardedRef, ctx.inputRef);\n return (\n <Primitive.input\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n value={ctx.search}\n {...props}\n ref={composedRef}\n onChange={composeEventHandlers(props.onChange, (event) => {\n ctx.setSearch(event.currentTarget.value);\n })}\n />\n );\n },\n);\nInput.displayName = 'Command.Input';\n\nconst List = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => {\n const ctx = useCommandContext('Command.List');\n const composedRef = useComposedRefs(forwardedRef, ctx.listRef);\n return (\n <Primitive.div\n role=\"listbox\"\n {...props}\n aria-label={props['aria-label'] ?? 'Command results'}\n ref={composedRef}\n />\n );\n});\nList.displayName = 'Command.List';\n\nexport interface CommandItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect'> {\n asChild?: boolean;\n value?: string;\n keywords?: string[];\n disabled?: boolean;\n onSelect?: (value: string) => void;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, CommandItemProps>(\n (props, forwardedRef) => {\n const { value: valueProp, keywords, disabled, onSelect, children, ...rest } = props;\n const ctx = useCommandContext('Command.Item');\n const id = useId('cmd-item');\n const fallback = React.useRef('');\n const textRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, textRef);\n const value = valueProp ?? fallback.current ?? id;\n\n React.useEffect(() => {\n const text = textRef.current?.textContent ?? '';\n fallback.current = text;\n return ctx.registerItem(id, valueProp ?? text, keywords);\n }, [ctx, id, valueProp, keywords]);\n\n const score = ctx.getItemScore(id);\n const visible = score > 0;\n const isSelected = ctx.value === value;\n\n if (!visible) return null;\n\n return (\n <Primitive.div\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n data-value={value}\n data-visible=\"true\"\n data-selected={isSelected ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n {...rest}\n ref={composedRef}\n onPointerMove={composeEventHandlers(rest.onPointerMove, () => {\n if (!disabled) ctx.setValue(value);\n })}\n onClick={composeEventHandlers(rest.onClick, () => {\n if (!disabled) {\n ctx.setValue(value);\n onSelect?.(value);\n }\n })}\n >\n {children}\n </Primitive.div>\n );\n },\n);\nItem.displayName = 'Command.Item';\n\nexport interface CommandGroupProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n heading?: React.ReactNode;\n value?: string;\n}\n\nconst Group = React.forwardRef<HTMLDivElement, CommandGroupProps>(\n (props, forwardedRef) => {\n const { heading, value: _value, children, ...rest } = props;\n return (\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef}>\n {heading ? <div role=\"presentation\" cmdk-group-heading=\"\">{heading}</div> : null}\n {children}\n </Primitive.div>\n );\n },\n);\nGroup.displayName = 'Command.Group';\n\nconst Empty = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useCommandContext('Command.Empty');\n const hasVisibleItems = React.useRef(false);\n const [, force] = React.useState(0);\n React.useEffect(() => {\n const observer = new MutationObserver(() => {\n const items = ctx.listRef.current?.querySelectorAll('[role=\"option\"][data-visible=\"true\"]');\n hasVisibleItems.current = (items?.length ?? 0) > 0;\n force((n) => n + 1);\n });\n if (ctx.listRef.current) {\n observer.observe(ctx.listRef.current, { childList: true, subtree: true, attributes: true });\n }\n return () => observer.disconnect();\n }, [ctx]);\n if (hasVisibleItems.current || !ctx.search) return null;\n return <Primitive.div role=\"presentation\" {...props} ref={forwardedRef} />;\n },\n);\nEmpty.displayName = 'Command.Empty';\n\nconst Separator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { asChild?: boolean }\n>((props, forwardedRef) => (\n <Primitive.div role=\"presentation\" aria-hidden=\"true\" {...props} ref={forwardedRef} />\n));\nSeparator.displayName = 'Command.Separator';\n\nconst Loading = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & { progress?: number }\n>(({ progress, ...rest }, forwardedRef) => (\n <Primitive.div role=\"progressbar\" aria-valuenow={progress} aria-valuemin={0} aria-valuemax={100} aria-label=\"Loading…\" {...rest} ref={forwardedRef} />\n));\nLoading.displayName = 'Command.Loading';\n\nexport { Root, Input, List, Item, Group, Empty, Separator, Loading };\n","export * from './one-time-password-field';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface OtpContextValue {\n values: string[];\n length: number;\n inputs: React.RefObject<(HTMLInputElement | null)[]>;\n type: 'numeric' | 'alphanumeric';\n mask?: boolean;\n autoSubmit?: boolean;\n onValueChange: (values: string[]) => void;\n disabled?: boolean;\n onComplete?: (value: string) => void;\n}\n\nconst [OtpProvider, useOtpContext] = createContext<OtpContextValue>('OneTimePasswordField');\n\nexport interface OtpRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n length?: number;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n type?: 'numeric' | 'alphanumeric';\n mask?: boolean;\n autoSubmit?: boolean;\n disabled?: boolean;\n onComplete?: (value: string) => void;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, OtpRootProps>(\n (props, forwardedRef) => {\n const {\n length = 6,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n type = 'numeric',\n mask,\n autoSubmit = true,\n disabled,\n onComplete,\n ...rest\n } = props;\n const [value = '', setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const inputs = React.useRef<(HTMLInputElement | null)[]>([]);\n const values = Array.from({ length }, (_, i) => value[i] ?? '');\n return (\n <OtpProvider\n values={values}\n length={length}\n inputs={inputs}\n type={type}\n mask={mask}\n autoSubmit={autoSubmit}\n onValueChange={(vs) => {\n const joined = vs.join('');\n setValue(joined);\n if (autoSubmit && joined.length === length && !joined.includes('')) {\n onComplete?.(joined);\n }\n }}\n disabled={disabled}\n onComplete={onComplete}\n >\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef} />\n </OtpProvider>\n );\n },\n);\nRoot.displayName = 'OneTimePasswordField.Root';\n\nexport interface OtpInputProps extends React.ComponentPropsWithoutRef<'input'> {\n index: number;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, OtpInputProps>(\n (props, forwardedRef) => {\n const { index, ...rest } = props;\n const ctx = useOtpContext('OneTimePasswordField.Input');\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref, (node) => {\n ctx.inputs.current[index] = node;\n });\n const value = ctx.values[index] ?? '';\n\n const updateAt = (i: number, char: string) => {\n const next = [...ctx.values];\n next[i] = char;\n ctx.onValueChange(next);\n };\n const moveFocus = (delta: number) => {\n const targetIdx = index + delta;\n const target = ctx.inputs.current[targetIdx];\n target?.focus();\n target?.select();\n };\n\n return (\n <Primitive.input\n type={ctx.mask ? 'password' : 'text'}\n inputMode={ctx.type === 'numeric' ? 'numeric' : 'text'}\n pattern={ctx.type === 'numeric' ? '[0-9]*' : undefined}\n maxLength={1}\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n value={value}\n disabled={ctx.disabled || rest.disabled}\n {...rest}\n ref={composedRef}\n onChange={composeEventHandlers(rest.onChange, (event) => {\n let v = event.currentTarget.value;\n if (ctx.type === 'numeric') v = v.replace(/[^0-9]/g, '');\n if (v.length > 1) {\n // paste\n const chars = v.split('');\n const next = [...ctx.values];\n for (let i = 0; i < chars.length && index + i < ctx.length; i++) {\n next[index + i] = chars[i] ?? '';\n }\n ctx.onValueChange(next);\n moveFocus(Math.min(chars.length, ctx.length - index));\n return;\n }\n updateAt(index, v);\n if (v) moveFocus(1);\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'Backspace') {\n if (!value) moveFocus(-1);\n else updateAt(index, '');\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n moveFocus(-1);\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n moveFocus(1);\n }\n })}\n onFocus={composeEventHandlers(rest.onFocus, () => ref.current?.select())}\n />\n );\n },\n);\nInput.displayName = 'OneTimePasswordField.Input';\n\nconst HiddenInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentPropsWithoutRef<'input'> & { name?: string }\n>(({ name, ...props }, forwardedRef) => {\n const ctx = useOtpContext('OneTimePasswordField.HiddenInput');\n return (\n <Primitive.input\n type=\"hidden\"\n name={name}\n value={ctx.values.join('')}\n {...props}\n ref={forwardedRef}\n />\n );\n});\nHiddenInput.displayName = 'OneTimePasswordField.HiddenInput';\n\nexport { Root, Input, HiddenInput };\n","export * from './password-toggle-field';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface PtfContextValue {\n visible: boolean;\n onToggle: () => void;\n}\n\nconst [PtfProvider, usePtfContext] = createContext<PtfContextValue>('PasswordToggleField');\n\nexport interface PasswordToggleFieldRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n visible?: boolean;\n defaultVisible?: boolean;\n onVisibleChange?: (visible: boolean) => void;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, PasswordToggleFieldRootProps>(\n (props, forwardedRef) => {\n const {\n visible: visibleProp,\n defaultVisible = false,\n onVisibleChange,\n ...rest\n } = props;\n const [visible = false, setVisible] = useControllableState<boolean>({\n prop: visibleProp,\n defaultProp: defaultVisible,\n onChange: onVisibleChange,\n });\n return (\n <PtfProvider visible={visible} onToggle={React.useCallback(() => setVisible((v) => !v), [setVisible])}>\n <Primitive.div {...rest} ref={forwardedRef} />\n </PtfProvider>\n );\n },\n);\nRoot.displayName = 'PasswordToggleField.Root';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentPropsWithoutRef<'input'>>(\n (props, forwardedRef) => {\n const ctx = usePtfContext('PasswordToggleField.Input');\n return (\n <Primitive.input\n type={ctx.visible ? 'text' : 'password'}\n autoComplete=\"current-password\"\n {...props}\n ref={forwardedRef}\n />\n );\n },\n);\nInput.displayName = 'PasswordToggleField.Input';\n\nconst Toggle = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = usePtfContext('PasswordToggleField.Toggle');\n return (\n <Primitive.button\n type=\"button\"\n aria-pressed={ctx.visible}\n aria-label={ctx.visible ? 'Hide password' : 'Show password'}\n data-state={ctx.visible ? 'visible' : 'hidden'}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, ctx.onToggle)}\n />\n );\n },\n);\nToggle.displayName = 'PasswordToggleField.Toggle';\n\nconst Icon: React.FC<{\n visible?: React.ReactNode;\n hidden?: React.ReactNode;\n}> = ({ visible, hidden }) => {\n const ctx = usePtfContext('PasswordToggleField.Icon');\n return <>{ctx.visible ? visible : hidden}</>;\n};\nIcon.displayName = 'PasswordToggleField.Icon';\n\nexport { Root, Input, Toggle, Icon };\n","export * from './number-field';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface NumberFieldContextValue {\n value: number | undefined;\n inputValue: string;\n min?: number;\n max?: number;\n step: number;\n disabled?: boolean;\n readOnly?: boolean;\n onValueChange: (value: number | undefined) => void;\n onInputValueChange: (value: string) => void;\n increment: (multiplier?: number) => void;\n decrement: (multiplier?: number) => void;\n setToMin: () => void;\n setToMax: () => void;\n}\n\nconst [NumberFieldProvider, useNumberFieldContext] =\n createContext<NumberFieldContextValue>('NumberField');\n\nexport interface NumberFieldRootProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange'> {\n asChild?: boolean;\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number | undefined) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n readOnly?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n locale?: string;\n}\n\nfunction clamp(v: number, min?: number, max?: number) {\n if (min !== undefined) v = Math.max(min, v);\n if (max !== undefined) v = Math.min(max, v);\n return v;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, NumberFieldRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n min,\n max,\n step = 1,\n disabled,\n readOnly,\n formatOptions,\n locale,\n ...rest\n } = props;\n const [value, setValue] = useControllableState<number | undefined>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const formatter = React.useMemo(\n () => new Intl.NumberFormat(locale, formatOptions),\n [locale, formatOptions],\n );\n const [inputValue, setInputValue] = React.useState<string>(\n value !== undefined ? formatter.format(value) : '',\n );\n\n React.useEffect(() => {\n if (document.activeElement?.getAttribute('role') === 'spinbutton') return;\n setInputValue(value !== undefined ? formatter.format(value) : '');\n }, [value, formatter]);\n\n const setNumeric = (n: number | undefined) => {\n const next = n === undefined ? undefined : clamp(n, min, max);\n setValue(next);\n };\n return (\n <NumberFieldProvider\n value={value}\n inputValue={inputValue}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n readOnly={readOnly}\n onValueChange={setNumeric}\n onInputValueChange={(v) => {\n setInputValue(v);\n const parsed = Number(v.replace(/,/g, '.'));\n if (!Number.isNaN(parsed)) setNumeric(parsed);\n else if (v === '') setNumeric(undefined);\n }}\n increment={(mult = 1) => setNumeric((value ?? min ?? 0) + step * mult)}\n decrement={(mult = 1) => setNumeric((value ?? max ?? 0) - step * mult)}\n setToMin={() => min !== undefined && setNumeric(min)}\n setToMax={() => max !== undefined && setNumeric(max)}\n >\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef} />\n </NumberFieldProvider>\n );\n },\n);\nRoot.displayName = 'NumberField.Root';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentPropsWithoutRef<'input'>>(\n (props, forwardedRef) => {\n const ctx = useNumberFieldContext('NumberField.Input');\n return (\n <Primitive.input\n role=\"spinbutton\"\n inputMode=\"decimal\"\n aria-valuenow={ctx.value}\n aria-valuemin={ctx.min}\n aria-valuemax={ctx.max}\n value={ctx.inputValue}\n disabled={ctx.disabled}\n readOnly={ctx.readOnly}\n {...props}\n ref={forwardedRef}\n onChange={composeEventHandlers(props.onChange, (event) =>\n ctx.onInputValueChange(event.currentTarget.value),\n )}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n ctx.increment(event.shiftKey ? 10 : 1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n ctx.decrement(event.shiftKey ? 10 : 1);\n } else if (event.key === 'PageUp') {\n event.preventDefault();\n ctx.increment(10);\n } else if (event.key === 'PageDown') {\n event.preventDefault();\n ctx.decrement(10);\n } else if (event.key === 'Home') {\n event.preventDefault();\n ctx.setToMin();\n } else if (event.key === 'End') {\n event.preventDefault();\n ctx.setToMax();\n }\n })}\n onWheel={composeEventHandlers(props.onWheel, (event) => {\n if (document.activeElement === event.currentTarget) {\n event.preventDefault();\n if (event.deltaY < 0) ctx.increment();\n else ctx.decrement();\n }\n })}\n />\n );\n },\n);\nInput.displayName = 'NumberField.Input';\n\nconst IncrementTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, forwardedRef) => {\n const ctx = useNumberFieldContext('NumberField.IncrementTrigger');\n const isAtMax = ctx.max !== undefined && ctx.value !== undefined && ctx.value >= ctx.max;\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Increase\"\n tabIndex={-1}\n disabled={ctx.disabled || isAtMax}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.increment())}\n />\n );\n});\nIncrementTrigger.displayName = 'NumberField.IncrementTrigger';\n\nconst DecrementTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, forwardedRef) => {\n const ctx = useNumberFieldContext('NumberField.DecrementTrigger');\n const isAtMin = ctx.min !== undefined && ctx.value !== undefined && ctx.value <= ctx.min;\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Decrease\"\n tabIndex={-1}\n disabled={ctx.disabled || isAtMin}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.decrement())}\n />\n );\n});\nDecrementTrigger.displayName = 'NumberField.DecrementTrigger';\n\nexport { Root, Input, IncrementTrigger, DecrementTrigger };\n","export * from './calendar';\n","import type * as React from 'react';\n\nexport type PickerChangeSource = 'field' | 'view' | 'shortcut' | 'unknown';\n\nexport interface PickerShortcutMetadata {\n label?: React.ReactNode;\n value?: unknown;\n}\n\nexport interface PickerChangeContext<TError> {\n validationError: TError | null;\n source: PickerChangeSource;\n shortcut?: PickerShortcutMetadata;\n}\n\nexport type PickerFieldSection =\n | 'day'\n | 'empty'\n | 'hours'\n | 'meridiem'\n | 'minutes'\n | 'month'\n | 'seconds'\n | 'weekDay'\n | 'year';\n\nexport type PickerSelectedSections = 'all' | PickerFieldSection | number | null;\nexport type PickerOrientation = 'landscape' | 'portrait';\nexport type PickerFormatDensity = 'dense' | 'spacious';\nexport type DatePickerView = 'day' | 'month' | 'year';\nexport type TimePickerView = 'hours' | 'minutes' | 'seconds' | 'meridiem';\nexport type DateTimePickerView = DatePickerView | TimePickerView;\nexport type DateRangePosition = 'start' | 'end';\n\nexport type PickerSxValue =\n | boolean\n | Record<string, unknown>\n | ((theme: unknown) => Record<string, unknown> | null | undefined);\nexport type PickerSx = PickerSxValue | PickerSxValue[];\nexport type PickerSlots = Record<string, React.ElementType | null | undefined>;\nexport type PickerSlotProps = Record<string, unknown>;\nexport type PickerLocaleText = Record<string, React.ReactNode>;\n\nexport type DateValidationError =\n | 'invalidDate'\n | 'disablePast'\n | 'disableFuture'\n | 'minDate'\n | 'maxDate'\n | 'shouldDisableDate'\n | 'shouldDisableMonth'\n | 'shouldDisableYear';\n\nexport type TimeValidationError =\n | 'invalidDate'\n | 'disablePast'\n | 'disableFuture'\n | 'minTime'\n | 'maxTime'\n | 'minutesStep'\n | 'shouldDisableTime';\n\nexport type DateTimeValidationError =\n | DateValidationError\n | TimeValidationError\n | 'minDateTime'\n | 'maxDateTime';\n\nexport type DateRangeValidationError = DateValidationError | 'invalidRange';\n\nexport interface DateValidationOptions {\n minDate?: Date;\n maxDate?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n shouldDisableDate?: (date: Date) => boolean;\n shouldDisableMonth?: (date: Date) => boolean;\n shouldDisableYear?: (date: Date) => boolean;\n}\n\nexport interface TimeValidationOptions {\n minTime?: Date;\n maxTime?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n minutesStep?: number;\n disableIgnoringDatePartForTimeValidation?: boolean;\n shouldDisableTime?: (value: Date, view: TimePickerView) => boolean;\n}\n\nexport interface DateTimeValidationOptions extends DateValidationOptions, TimeValidationOptions {\n minDateTime?: Date;\n maxDateTime?: Date;\n}\n\nexport interface TimeSteps {\n hours?: number;\n minutes?: number;\n seconds?: number;\n}\n\nexport interface TimeValue {\n hour: number;\n minute: number;\n second?: number;\n period?: 'am' | 'pm';\n}\n\nexport const DEFAULT_MIN_DATE = new Date(1900, 0, 1);\nexport const DEFAULT_MAX_DATE = new Date(2099, 11, 31);\n\nexport function isValidDate(value: Date | null | undefined): value is Date {\n return value instanceof Date && !Number.isNaN(value.getTime());\n}\n\nexport function startOfDay(date: Date) {\n const next = new Date(date);\n next.setHours(0, 0, 0, 0);\n return next;\n}\n\nexport function startOfMonth(date: Date) {\n const next = new Date(date);\n next.setDate(1);\n next.setHours(0, 0, 0, 0);\n return next;\n}\n\nexport function addDays(date: Date, amount: number) {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nexport function addMonths(date: Date, amount: number) {\n const next = new Date(date);\n next.setMonth(next.getMonth() + amount);\n return next;\n}\n\nexport function isSameDay(a: Date, b: Date) {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function isBeforeDay(a: Date, b: Date) {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfterDay(a: Date, b: Date) {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function clampDate(date: Date, minDate?: Date, maxDate?: Date) {\n if (minDate && isBeforeDay(date, minDate)) return startOfDay(minDate);\n if (maxDate && isAfterDay(date, maxDate)) return startOfDay(maxDate);\n return date;\n}\n\nexport function createPickerChangeContext<TError>(\n validationError: TError | null,\n source: PickerChangeSource,\n shortcut?: PickerShortcutMetadata,\n): PickerChangeContext<TError> {\n return shortcut ? { validationError, source, shortcut } : { validationError, source };\n}\n\nexport function validateDateValue(\n value: Date | null | undefined,\n options: DateValidationOptions = {},\n): DateValidationError | null {\n if (value == null) return null;\n if (!isValidDate(value)) return 'invalidDate';\n const minDate = options.minDate ?? DEFAULT_MIN_DATE;\n const maxDate = options.maxDate ?? DEFAULT_MAX_DATE;\n const today = startOfDay(new Date());\n if (options.disablePast && isBeforeDay(value, today)) return 'disablePast';\n if (options.disableFuture && isAfterDay(value, today)) return 'disableFuture';\n if (isBeforeDay(value, minDate)) return 'minDate';\n if (isAfterDay(value, maxDate)) return 'maxDate';\n if (options.shouldDisableYear?.(value)) return 'shouldDisableYear';\n if (options.shouldDisableMonth?.(value)) return 'shouldDisableMonth';\n if (options.shouldDisableDate?.(value)) return 'shouldDisableDate';\n return null;\n}\n\nfunction getTimeNumber(value: Date, includeDate: boolean) {\n if (includeDate) return value.getTime();\n return (\n value.getHours() * 60 * 60 * 1000 +\n value.getMinutes() * 60 * 1000 +\n value.getSeconds() * 1000 +\n value.getMilliseconds()\n );\n}\n\nexport function validateTimeValue(\n value: Date | null | undefined,\n options: TimeValidationOptions = {},\n): TimeValidationError | null {\n if (value == null) return null;\n if (!isValidDate(value)) return 'invalidDate';\n const includeDate = options.disableIgnoringDatePartForTimeValidation ?? false;\n const current = getTimeNumber(value, includeDate);\n const now = new Date();\n if (options.disablePast && current < getTimeNumber(now, includeDate)) return 'disablePast';\n if (options.disableFuture && current > getTimeNumber(now, includeDate)) return 'disableFuture';\n if (options.minTime && current < getTimeNumber(options.minTime, includeDate)) return 'minTime';\n if (options.maxTime && current > getTimeNumber(options.maxTime, includeDate)) return 'maxTime';\n if (options.minutesStep && options.minutesStep > 1 && value.getMinutes() % options.minutesStep !== 0) {\n return 'minutesStep';\n }\n if (options.shouldDisableTime?.(value, 'hours')) return 'shouldDisableTime';\n if (options.shouldDisableTime?.(value, 'minutes')) return 'shouldDisableTime';\n if (options.shouldDisableTime?.(value, 'seconds')) return 'shouldDisableTime';\n return null;\n}\n\nexport function validateDateTimeValue(\n value: Date | null | undefined,\n options: DateTimeValidationOptions = {},\n): DateTimeValidationError | null {\n if (value == null) return null;\n if (!isValidDate(value)) return 'invalidDate';\n if (options.minDateTime && value.getTime() < options.minDateTime.getTime()) return 'minDateTime';\n if (options.maxDateTime && value.getTime() > options.maxDateTime.getTime()) return 'maxDateTime';\n return validateDateValue(value, options) ?? validateTimeValue(value, options);\n}\n\nexport function timeValueToDate(value: TimeValue, referenceDate = new Date()) {\n const next = new Date(referenceDate);\n const isPm = value.period === 'pm';\n const hour = value.period\n ? ((value.hour % 12) + (isPm ? 12 : 0))\n : value.hour;\n next.setHours(hour, value.minute, value.second ?? 0, 0);\n return next;\n}\n\nexport function dateToTimeValue(value: Date, hour12 = false): TimeValue {\n const hour = value.getHours();\n if (!hour12) {\n return { hour, minute: value.getMinutes(), second: value.getSeconds() };\n }\n const period = hour >= 12 ? 'pm' : 'am';\n const displayHour = hour % 12 === 0 ? 12 : hour % 12;\n return { hour: displayHour, minute: value.getMinutes(), second: value.getSeconds(), period };\n}\n\nexport function mergeDateAndTime(datePart: Date, timePart: Date) {\n const next = new Date(datePart);\n next.setHours(timePart.getHours(), timePart.getMinutes(), timePart.getSeconds(), timePart.getMilliseconds());\n return next;\n}\n\nexport function applyTimePart(value: Date | null | undefined, part: Partial<TimeValue>, referenceDate = new Date()) {\n const base = isValidDate(value) ? new Date(value) : new Date(referenceDate);\n const current = dateToTimeValue(base, part.period != null);\n const merged = { ...current, ...part };\n return timeValueToDate(merged, base);\n}\n\nexport function pad(value: number) {\n return String(value).padStart(2, '0');\n}\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport {\n addDays,\n addMonths,\n isAfterDay,\n isBeforeDay,\n isSameDay,\n isSameMonth,\n startOfDay,\n startOfMonth,\n} from '../picker-utils';\n\ntype CalendarMode = 'single' | 'range' | 'multiple';\nexport interface CalendarDateRange {\n from?: Date;\n to?: Date;\n}\n\ntype CalendarSelectedValue = Date | Date[] | CalendarDateRange | undefined;\n\nfunction getMonthFromSelected(selected: CalendarSelectedValue) {\n if (!selected) return undefined;\n if (selected instanceof Date) return startOfMonth(selected);\n if (Array.isArray(selected)) return selected[0] ? startOfMonth(selected[0]) : undefined;\n return selected.from ? startOfMonth(selected.from) : undefined;\n}\n\nfunction getDaysGrid(displayMonth: Date, weekStartsOn = 0, fixedWeekNumber?: number): Date[][] {\n const first = startOfMonth(displayMonth);\n const firstWeekday = first.getDay();\n const offset = (firstWeekday - weekStartsOn + 7) % 7;\n const start = addDays(first, -offset);\n const daysInMonth = new Date(first.getFullYear(), first.getMonth() + 1, 0).getDate();\n const weekCount = fixedWeekNumber ?? Math.ceil((offset + daysInMonth) / 7);\n const weeks: Date[][] = [];\n for (let w = 0; w < weekCount; w++) {\n const week: Date[] = [];\n for (let d = 0; d < 7; d++) {\n week.push(addDays(start, w * 7 + d));\n }\n weeks.push(week);\n }\n return weeks;\n}\n\n/* ─── Context ──────────────────────────────────────────────────────── */\n\ninterface CalendarContextValue {\n mode: CalendarMode;\n selected: CalendarSelectedValue;\n onSelect: (value: Date) => void;\n isSelected: (date: Date) => boolean;\n isInRange: (date: Date) => boolean;\n displayMonth: Date;\n setDisplayMonth: (d: Date) => void;\n focusedDate: Date;\n setFocusedDate: (d: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n isDisabled: (date: Date) => boolean;\n weekStartsOn: number;\n locale?: string;\n disabled?: boolean;\n disableHighlightToday?: boolean;\n displayWeekNumber?: boolean;\n fixedWeekNumber?: number;\n showDaysOutsideCurrentMonth?: boolean;\n dayOfWeekFormatter?: (date: Date) => string;\n}\n\nconst [CalendarProvider, useCalendarContext] = createContext<CalendarContextValue>('Calendar');\n\nexport interface CalendarRootProps\n extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect'> {\n asChild?: boolean;\n mode?: CalendarMode;\n selected?: CalendarSelectedValue;\n defaultSelected?: CalendarSelectedValue;\n onSelect?: (value: CalendarSelectedValue) => void;\n month?: Date;\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n disabled?: boolean;\n disabledDays?: (date: Date) => boolean;\n shouldDisableDate?: (date: Date) => boolean;\n shouldDisableMonth?: (date: Date) => boolean;\n shouldDisableYear?: (date: Date) => boolean;\n weekStartsOn?: number;\n locale?: string;\n disableHighlightToday?: boolean;\n displayWeekNumber?: boolean;\n fixedWeekNumber?: number;\n showDaysOutsideCurrentMonth?: boolean;\n dayOfWeekFormatter?: (date: Date) => string;\n onYearChange?: (year: Date) => void;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, CalendarRootProps>(\n (props, forwardedRef) => {\n const {\n mode = 'single',\n selected: selectedProp,\n defaultSelected,\n onSelect,\n month: monthProp,\n defaultMonth,\n onMonthChange,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabled,\n disabledDays,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n weekStartsOn = 0,\n locale,\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n showDaysOutsideCurrentMonth,\n dayOfWeekFormatter,\n onYearChange,\n ...rest\n } = props;\n\n const initialMonth =\n defaultMonth ??\n getMonthFromSelected(selectedProp) ??\n getMonthFromSelected(defaultSelected) ??\n startOfMonth(new Date());\n\n const [selected, setSelected] = useControllableState<CalendarSelectedValue>({\n prop: selectedProp,\n defaultProp: defaultSelected,\n onChange: onSelect,\n });\n const [displayMonth, setDisplayMonth] = useControllableState<Date>({\n prop: monthProp,\n defaultProp: initialMonth,\n onChange: onMonthChange,\n });\n const [focusedDate, setFocusedDate] = React.useState<Date>(\n getMonthFromSelected(selectedProp) ??\n getMonthFromSelected(defaultSelected) ??\n defaultMonth ??\n new Date(),\n );\n\n const isDisabled = React.useCallback(\n (date: Date) => {\n const today = startOfDay(new Date());\n if (disabled) return true;\n if (disablePast && isBeforeDay(date, today)) return true;\n if (disableFuture && isAfterDay(date, today)) return true;\n if (minDate && isBeforeDay(date, minDate)) return true;\n if (maxDate && isAfterDay(date, maxDate)) return true;\n if (shouldDisableYear?.(date)) return true;\n if (shouldDisableMonth?.(date)) return true;\n if (disabledDays?.(date)) return true;\n if (shouldDisableDate?.(date)) return true;\n return false;\n },\n [\n disabled,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableYear,\n shouldDisableMonth,\n disabledDays,\n shouldDisableDate,\n ],\n );\n\n const isSelected = React.useCallback(\n (date: Date) => {\n if (!selected) return false;\n if (mode === 'single') return isSameDay(selected as Date, date);\n if (mode === 'multiple')\n return (selected as Date[]).some((d) => isSameDay(d, date));\n const range = selected as CalendarDateRange;\n if (range.from && isSameDay(range.from, date)) return true;\n if (range.to && isSameDay(range.to, date)) return true;\n return false;\n },\n [selected, mode],\n );\n\n const isInRange = React.useCallback(\n (date: Date) => {\n if (mode !== 'range' || !selected) return false;\n const range = selected as CalendarDateRange;\n if (!range.from || !range.to) return false;\n return !isBeforeDay(date, range.from) && !isAfterDay(date, range.to);\n },\n [mode, selected],\n );\n\n const handleSelect = (date: Date) => {\n if (isDisabled(date)) return;\n setFocusedDate(date);\n if (!isSameMonth(date, displayMonth ?? new Date())) {\n const nextMonth = startOfMonth(date);\n if ((displayMonth ?? new Date()).getFullYear() !== nextMonth.getFullYear()) {\n onYearChange?.(nextMonth);\n }\n setDisplayMonth(nextMonth);\n }\n if (mode === 'single') setSelected(date);\n else if (mode === 'multiple') {\n const arr = (selected as Date[]) ?? [];\n const exists = arr.some((d) => isSameDay(d, date));\n setSelected(exists ? arr.filter((d) => !isSameDay(d, date)) : [...arr, date]);\n } else {\n const range = (selected as CalendarDateRange | undefined) ?? {};\n if (!range.from || (range.from && range.to)) setSelected({ from: date, to: undefined });\n else if (isBeforeDay(date, range.from)) setSelected({ from: date, to: range.from });\n else setSelected({ from: range.from, to: date });\n }\n };\n\n return (\n <CalendarProvider\n mode={mode}\n selected={selected}\n onSelect={handleSelect}\n isSelected={isSelected}\n isInRange={isInRange}\n displayMonth={displayMonth ?? new Date()}\n setDisplayMonth={(d) => {\n if (displayMonth && displayMonth.getFullYear() !== d.getFullYear()) {\n onYearChange?.(d);\n }\n setDisplayMonth(d);\n }}\n focusedDate={focusedDate}\n setFocusedDate={setFocusedDate}\n minDate={minDate}\n maxDate={maxDate}\n isDisabled={isDisabled}\n weekStartsOn={weekStartsOn}\n locale={locale}\n disabled={disabled}\n disableHighlightToday={disableHighlightToday}\n displayWeekNumber={displayWeekNumber}\n fixedWeekNumber={fixedWeekNumber}\n showDaysOutsideCurrentMonth={showDaysOutsideCurrentMonth}\n dayOfWeekFormatter={dayOfWeekFormatter}\n >\n <Primitive.div\n role=\"group\"\n aria-label=\"Calendar\"\n {...rest}\n ref={forwardedRef}\n />\n </CalendarProvider>\n );\n },\n);\nRoot.displayName = 'Calendar.Root';\n\nconst Header = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />,\n);\nHeader.displayName = 'Calendar.Header';\n\nconst PreviousButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, forwardedRef) => {\n const ctx = useCalendarContext('Calendar.PreviousButton');\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Previous month\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () =>\n ctx.setDisplayMonth(addMonths(ctx.displayMonth, -1)),\n )}\n />\n );\n});\nPreviousButton.displayName = 'Calendar.PreviousButton';\n\nconst NextButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, forwardedRef) => {\n const ctx = useCalendarContext('Calendar.NextButton');\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Next month\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () =>\n ctx.setDisplayMonth(addMonths(ctx.displayMonth, 1)),\n )}\n />\n );\n});\nNextButton.displayName = 'Calendar.NextButton';\n\nconst Heading: React.FC<{ format?: Intl.DateTimeFormatOptions; locale?: string }> = ({\n format = { month: 'long', year: 'numeric' },\n locale,\n}) => {\n const ctx = useCalendarContext('Calendar.Heading');\n return (\n <span aria-live=\"polite\">\n {new Intl.DateTimeFormat(locale ?? ctx.locale, format).format(ctx.displayMonth)}\n </span>\n );\n};\nHeading.displayName = 'Calendar.Heading';\n\nconst Grid = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n (props, forwardedRef) => (\n <table role=\"grid\" {...props} ref={forwardedRef} />\n ),\n);\nGrid.displayName = 'Calendar.Grid';\n\nconst GridHead: React.FC<{ locale?: string; format?: 'narrow' | 'short' | 'long' }> = ({\n locale,\n format = 'narrow',\n}) => {\n const ctx = useCalendarContext('Calendar.GridHead');\n const fmt = new Intl.DateTimeFormat(locale ?? ctx.locale, { weekday: format });\n const days = Array.from({ length: 7 }, (_, i) => {\n const d = addDays(new Date(2024, 0, 7), i + ctx.weekStartsOn);\n return {\n label: ctx.dayOfWeekFormatter?.(d) ?? fmt.format(d),\n date: d,\n };\n });\n return (\n <thead>\n <tr>\n {ctx.displayWeekNumber ? (\n <th scope=\"col\" aria-label=\"Week number\">\n #\n </th>\n ) : null}\n {days.map((day, i) => (\n <th key={i} scope=\"col\" aria-label={new Intl.DateTimeFormat(locale ?? ctx.locale, { weekday: 'long' }).format(day.date)}>\n {day.label}\n </th>\n ))}\n </tr>\n </thead>\n );\n};\nGridHead.displayName = 'Calendar.GridHead';\n\ninterface GridBodyProps {\n children: (date: Date, props: { isOutsideMonth: boolean }) => React.ReactNode;\n}\n\nconst GridBody: React.FC<GridBodyProps> = ({ children }) => {\n const ctx = useCalendarContext('Calendar.GridBody');\n const weeks = getDaysGrid(ctx.displayMonth, ctx.weekStartsOn, ctx.fixedWeekNumber);\n return (\n <tbody>\n {weeks.map((week, wi) => (\n <tr key={wi}>\n {ctx.displayWeekNumber ? (\n <td role=\"gridcell\" aria-label={`Week ${getWeekNumber(week[0] ?? ctx.displayMonth)}`}>\n {getWeekNumber(week[0] ?? ctx.displayMonth)}\n </td>\n ) : null}\n {week.map((day, di) => (\n <td key={di} role=\"gridcell\">\n {children(day, { isOutsideMonth: !isSameMonth(day, ctx.displayMonth) })}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n};\nGridBody.displayName = 'Calendar.GridBody';\n\nfunction getWeekNumber(date: Date) {\n const target = startOfDay(date);\n target.setDate(target.getDate() + 3 - ((target.getDay() + 6) % 7));\n const firstThursday = new Date(target.getFullYear(), 0, 4);\n firstThursday.setDate(firstThursday.getDate() + 3 - ((firstThursday.getDay() + 6) % 7));\n return 1 + Math.round((target.getTime() - firstThursday.getTime()) / 604800000);\n}\n\ninterface CalendarDayProps extends React.ComponentPropsWithoutRef<'button'> {\n date: Date;\n isOutsideMonth?: boolean;\n}\n\nconst Day = React.forwardRef<HTMLButtonElement, CalendarDayProps>(\n (props, forwardedRef) => {\n const { date, isOutsideMonth, ...rest } = props;\n const ctx = useCalendarContext('Calendar.Day');\n const selected = ctx.isSelected(date);\n const inRange = ctx.isInRange(date);\n const disabled = ctx.isDisabled(date);\n const isToday = !ctx.disableHighlightToday && isSameDay(date, new Date());\n const isFocused = isSameDay(date, ctx.focusedDate);\n return (\n <Primitive.button\n type=\"button\"\n aria-pressed={selected}\n aria-disabled={disabled}\n data-state={selected ? 'selected' : 'unselected'}\n data-today={isToday ? '' : undefined}\n data-outside={isOutsideMonth ? '' : undefined}\n data-in-range={inRange ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n tabIndex={isFocused ? 0 : -1}\n disabled={disabled}\n {...rest}\n ref={forwardedRef}\n onClick={composeEventHandlers(rest.onClick, () => ctx.onSelect(date))}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n let next: Date | null = null;\n if (event.key === 'ArrowLeft') next = addDays(date, -1);\n else if (event.key === 'ArrowRight') next = addDays(date, 1);\n else if (event.key === 'ArrowUp') next = addDays(date, -7);\n else if (event.key === 'ArrowDown') next = addDays(date, 7);\n else if (event.key === 'Home') next = addDays(date, -date.getDay());\n else if (event.key === 'End') next = addDays(date, 6 - date.getDay());\n else if (event.key === 'PageUp') next = addMonths(date, event.shiftKey ? -12 : -1);\n else if (event.key === 'PageDown') next = addMonths(date, event.shiftKey ? 12 : 1);\n if (next) {\n event.preventDefault();\n ctx.setFocusedDate(next);\n if (!isSameMonth(next, ctx.displayMonth)) ctx.setDisplayMonth(startOfMonth(next));\n queueMicrotask(() => {\n if (typeof document === 'undefined') return;\n const el = document.querySelector<HTMLButtonElement>(\n `[data-day-date=\"${next!.toISOString().slice(0, 10)}\"]`,\n );\n el?.focus();\n });\n }\n })}\n data-day-date={date.toISOString().slice(0, 10)}\n >\n {date.getDate()}\n </Primitive.button>\n );\n },\n);\nDay.displayName = 'Calendar.Day';\n\nexport {\n Root,\n Header,\n Heading,\n PreviousButton,\n NextButton,\n Grid,\n GridHead,\n GridBody,\n Day,\n};\n","export * from './date-picker';\nexport type { DatePickerValueProps } from './date-picker.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport * as PopoverPrimitive from '../popover';\nimport * as CalendarPrimitive from '../calendar';\nimport {\n createPickerChangeContext,\n validateDateValue,\n type DatePickerView,\n type DateValidationError,\n type PickerChangeContext,\n type PickerFormatDensity,\n type PickerLocaleText,\n type PickerOrientation,\n type PickerSelectedSections,\n type PickerSlotProps,\n type PickerSlots,\n type PickerSx,\n} from '../picker-utils';\n\nexport type DatePickerFormat = Intl.DateTimeFormatOptions | string;\n\nexport type DatePickerViewRenderer = (params: {\n view: DatePickerView;\n value: Date | null;\n onChange: (value: Date | null) => void;\n}) => React.ReactNode;\n\ninterface DatePickerContextValue {\n value: Date | undefined;\n onValueChange: (date: Date | undefined) => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n calendarProps: Pick<\n CalendarPrimitive.CalendarRootProps,\n | 'minDate'\n | 'maxDate'\n | 'disablePast'\n | 'disableFuture'\n | 'disabledDays'\n | 'shouldDisableDate'\n | 'shouldDisableMonth'\n | 'shouldDisableYear'\n | 'weekStartsOn'\n | 'locale'\n | 'disabled'\n | 'disableHighlightToday'\n | 'displayWeekNumber'\n | 'fixedWeekNumber'\n | 'showDaysOutsideCurrentMonth'\n | 'dayOfWeekFormatter'\n | 'onMonthChange'\n | 'onYearChange'\n >;\n readOnly?: boolean;\n closeOnSelect: boolean;\n loading?: boolean;\n renderLoading?: () => React.ReactNode;\n localeText?: PickerLocaleText;\n}\n\nconst [DatePickerProvider, useDatePickerContext] =\n createContext<DatePickerContextValue>('DatePicker');\n\nexport interface DatePickerRootProps {\n children?: React.ReactNode;\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (\n date: Date | null,\n context: PickerChangeContext<DateValidationError>,\n ) => void;\n onValueChange?: (date: Date | undefined) => void;\n onAccept?: (\n date: Date | null,\n context: PickerChangeContext<DateValidationError>,\n ) => void;\n onError?: (error: DateValidationError | null, value: Date | null) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n onOpen?: () => void;\n onClose?: () => void;\n closeOnSelect?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n minDate?: Date;\n maxDate?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n disabledDays?: (date: Date) => boolean;\n shouldDisableDate?: (date: Date) => boolean;\n shouldDisableMonth?: (date: Date) => boolean;\n shouldDisableYear?: (date: Date) => boolean;\n weekStartsOn?: number;\n locale?: string;\n autoFocus?: boolean;\n dayOfWeekFormatter?: (date: Date) => string;\n desktopModeMediaQuery?: string;\n disableHighlightToday?: boolean;\n disableOpenPicker?: boolean;\n displayWeekNumber?: boolean;\n fixedWeekNumber?: number;\n format?: DatePickerFormat;\n formatDensity?: PickerFormatDensity;\n inputRef?: React.Ref<HTMLInputElement>;\n keepOpenDuringFieldFocus?: boolean;\n label?: React.ReactNode;\n loading?: boolean;\n localeText?: PickerLocaleText;\n monthsPerRow?: 3 | 4;\n name?: string;\n onMonthChange?: (month: Date) => void;\n onSelectedSectionsChange?: (newValue: PickerSelectedSections) => void;\n onViewChange?: (view: DatePickerView) => void;\n onYearChange?: (year: Date) => void;\n openTo?: DatePickerView;\n orientation?: PickerOrientation;\n reduceAnimations?: boolean;\n referenceDate?: Date;\n renderLoading?: () => React.ReactNode;\n selectedSections?: PickerSelectedSections;\n defaultSelectedSections?: PickerSelectedSections;\n showDaysOutsideCurrentMonth?: boolean;\n slotProps?: PickerSlotProps;\n slots?: PickerSlots;\n sx?: PickerSx;\n timezone?: string;\n view?: DatePickerView;\n defaultView?: DatePickerView;\n viewRenderers?: Partial<Record<DatePickerView, DatePickerViewRenderer | null>>;\n views?: DatePickerView[];\n yearsOrder?: 'asc' | 'desc';\n yearsPerRow?: 3 | 4;\n}\n\nconst Root: React.FC<DatePickerRootProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n onValueChange,\n onAccept,\n onError,\n open: openProp,\n defaultOpen,\n onOpenChange,\n onOpen,\n onClose,\n closeOnSelect = true,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n weekStartsOn,\n locale,\n dayOfWeekFormatter,\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n loading,\n onMonthChange,\n onYearChange,\n renderLoading,\n showDaysOutsideCurrentMonth,\n localeText,\n onSelectedSectionsChange,\n onViewChange,\n openTo = 'day',\n selectedSections: selectedSectionsProp,\n defaultSelectedSections,\n view: viewProp,\n defaultView,\n children,\n}) => {\n const normalizedValue = valueProp === null ? undefined : valueProp;\n const normalizedDefaultValue = defaultValue === null ? undefined : defaultValue;\n const validationOptions = React.useMemo(\n () => ({\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n }),\n [\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n ],\n );\n const [value, setValue] = useControllableState<Date | undefined>({\n prop: normalizedValue,\n defaultProp: normalizedDefaultValue,\n });\n const [open = false, setOpenState] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n });\n const [, setSelectedSections] = useControllableState<PickerSelectedSections>({\n prop: selectedSectionsProp,\n defaultProp: defaultSelectedSections,\n onChange: onSelectedSectionsChange,\n });\n const [, setView] = useControllableState<DatePickerView>({\n prop: viewProp,\n defaultProp: defaultView ?? openTo,\n onChange: onViewChange,\n });\n\n const validationError = validateDateValue(value ?? null, validationOptions);\n const lastValidationError = React.useRef<DateValidationError | null | undefined>(undefined);\n\n React.useEffect(() => {\n if (lastValidationError.current !== validationError) {\n const prev = lastValidationError.current;\n lastValidationError.current = validationError;\n if (prev !== undefined || validationError !== null) {\n onError?.(validationError, value ?? null);\n }\n }\n }, [onError, validationError, value]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n setOpenState(nextOpen);\n onOpenChange?.(nextOpen);\n if (nextOpen) onOpen?.();\n else onClose?.();\n },\n [onClose, onOpen, onOpenChange, setOpenState],\n );\n\n const commitValue = React.useCallback(\n (date: Date | undefined) => {\n if (readOnly || disabled) return;\n const nextValue = date ?? null;\n const nextError = validateDateValue(nextValue, validationOptions);\n const context = createPickerChangeContext<DateValidationError>(nextError, 'view');\n setValue(date);\n setSelectedSections('day');\n setView('day');\n onValueChange?.(date);\n onChange?.(nextValue, context);\n if (date) {\n onAccept?.(nextValue, context);\n if (closeOnSelect) setOpen(false);\n }\n },\n [\n closeOnSelect,\n disabled,\n onAccept,\n onChange,\n onValueChange,\n readOnly,\n setOpen,\n setSelectedSections,\n setValue,\n setView,\n validationOptions,\n ],\n );\n\n return (\n <DatePickerProvider\n value={value}\n onValueChange={commitValue}\n open={open}\n onOpenChange={setOpen}\n calendarProps={{\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n weekStartsOn,\n locale,\n disabled,\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n showDaysOutsideCurrentMonth,\n dayOfWeekFormatter,\n onMonthChange,\n onYearChange,\n }}\n readOnly={readOnly}\n closeOnSelect={closeOnSelect}\n loading={loading}\n renderLoading={renderLoading}\n localeText={localeText}\n >\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DatePickerProvider>\n );\n};\nRoot.displayName = 'DatePicker.Root';\n\nconst Trigger = PopoverPrimitive.Trigger;\nconst Portal = PopoverPrimitive.Portal;\nconst Anchor = PopoverPrimitive.Anchor;\n\nconst Content = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>((props, forwardedRef) => <PopoverPrimitive.Content {...props} ref={forwardedRef} />);\nContent.displayName = 'DatePicker.Content';\n\nconst Calendar = React.forwardRef<\n HTMLDivElement,\n Omit<CalendarPrimitive.CalendarRootProps, 'selected' | 'onSelect' | 'mode'>\n>((props, forwardedRef) => {\n const ctx = useDatePickerContext('DatePicker.Calendar');\n const { disabled: calendarDisabled, ...calendarProps } = ctx.calendarProps;\n return (\n <CalendarPrimitive.Root\n ref={forwardedRef}\n mode=\"single\"\n selected={ctx.value}\n onSelect={(v) => {\n if (v instanceof Date || v === undefined) {\n ctx.onValueChange(v);\n }\n }}\n disabled={calendarDisabled || ctx.readOnly}\n {...calendarProps}\n {...props}\n />\n );\n});\nCalendar.displayName = 'DatePicker.Calendar';\n\nconst Loading: React.FC = () => {\n const ctx = useDatePickerContext('DatePicker.Loading');\n return <>{ctx.renderLoading?.() ?? ctx.localeText?.loading ?? 'Loading...'}</>;\n};\nLoading.displayName = 'DatePicker.Loading';\n\nconst Value: React.FC<{\n format?: DatePickerFormat;\n formatDensity?: PickerFormatDensity;\n locale?: string;\n placeholder?: React.ReactNode;\n}> = ({\n format = { dateStyle: 'medium' },\n formatDensity = 'dense',\n locale,\n placeholder = 'Pick a date',\n}) => {\n const ctx = useDatePickerContext('DatePicker.Value');\n if (!ctx.value) return <>{placeholder}</>;\n return <>{formatDate(ctx.value, format, locale, formatDensity)}</>;\n};\nValue.displayName = 'DatePicker.Value';\n\nfunction formatDate(\n date: Date,\n format: DatePickerFormat,\n locale: string | undefined,\n density: PickerFormatDensity,\n) {\n if (typeof format !== 'string') {\n return new Intl.DateTimeFormat(locale, format).format(date);\n }\n const value = format.replace(/yyyy|YYYY|MMMM|MMM|MM|M|dd|DD|d/g, (token) => {\n if (token === 'yyyy' || token === 'YYYY') return String(date.getFullYear());\n if (token === 'MMMM') return new Intl.DateTimeFormat(locale, { month: 'long' }).format(date);\n if (token === 'MMM') return new Intl.DateTimeFormat(locale, { month: 'short' }).format(date);\n if (token === 'MM') return String(date.getMonth() + 1).padStart(2, '0');\n if (token === 'M') return String(date.getMonth() + 1);\n if (token === 'dd' || token === 'DD') return String(date.getDate()).padStart(2, '0');\n return String(date.getDate());\n });\n return density === 'spacious' ? value.replaceAll('/', ' / ').replaceAll('-', ' - ').replaceAll('.', ' . ') : value;\n}\n\nexport { Root, Trigger, Anchor, Portal, Content, Calendar, Loading, Value };\n","export * from './time-picker';\nexport type { TimePickerSegment, TimePickerValueProps } from './time-picker.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport {\n createPickerChangeContext,\n dateToTimeValue,\n pad,\n timeValueToDate,\n validateTimeValue,\n type PickerChangeContext,\n type PickerFormatDensity,\n type PickerLocaleText,\n type PickerOrientation,\n type PickerSelectedSections,\n type PickerSlotProps,\n type PickerSlots,\n type PickerSx,\n type TimePickerView,\n type TimeSteps,\n type TimeValidationError,\n type TimeValue as PickerTimeValue,\n} from '../picker-utils';\n\nexport type TimeValue = PickerTimeValue;\nexport type TimePickerValue = Date | TimeValue | null | undefined;\nexport type TimePickerFormat = Intl.DateTimeFormatOptions | string;\n\nexport type TimePickerViewRenderer = (params: {\n view: TimePickerView;\n value: Date | null;\n onChange: (value: Date | null) => void;\n}) => React.ReactNode;\n\ninterface TimePickerContextValue {\n value: TimeValue | undefined;\n dateValue: Date | undefined;\n onValueChange: (v: TimeValue) => void;\n onDateChange: (v: Date | undefined) => void;\n hour12: boolean;\n withSeconds: boolean;\n disabled?: boolean;\n}\n\nconst [TimePickerProvider, useTimePickerContext] =\n createContext<TimePickerContextValue>('TimePicker');\n\nexport interface TimePickerRootProps\n extends Omit<React.ComponentPropsWithoutRef<'div'>, 'defaultValue' | 'onChange' | 'onError'> {\n asChild?: boolean;\n value?: TimePickerValue;\n defaultValue?: TimePickerValue;\n onChange?: (\n value: Date | null,\n context: PickerChangeContext<TimeValidationError>,\n ) => void;\n onValueChange?: (v: TimeValue) => void;\n onAccept?: (\n value: Date | null,\n context: PickerChangeContext<TimeValidationError>,\n ) => void;\n onError?: (error: TimeValidationError | null, value: Date | null) => void;\n hour12?: boolean;\n withSeconds?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n ampm?: boolean;\n ampmInClock?: boolean;\n autoFocus?: boolean;\n closeOnSelect?: boolean;\n desktopModeMediaQuery?: string;\n disableFuture?: boolean;\n disableIgnoringDatePartForTimeValidation?: boolean;\n disableOpenPicker?: boolean;\n disablePast?: boolean;\n format?: TimePickerFormat;\n formatDensity?: PickerFormatDensity;\n inputRef?: React.Ref<HTMLInputElement>;\n keepOpenDuringFieldFocus?: boolean;\n label?: React.ReactNode;\n locale?: string;\n localeText?: PickerLocaleText;\n maxTime?: Date;\n minTime?: Date;\n minutesStep?: number;\n name?: string;\n onClose?: () => void;\n onOpen?: () => void;\n onSelectedSectionsChange?: (newValue: PickerSelectedSections) => void;\n onViewChange?: (view: TimePickerView) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openTo?: TimePickerView;\n orientation?: PickerOrientation;\n readOnlyInput?: boolean;\n reduceAnimations?: boolean;\n referenceDate?: Date;\n selectedSections?: PickerSelectedSections;\n defaultSelectedSections?: PickerSelectedSections;\n shouldDisableTime?: (value: Date, view: TimePickerView) => boolean;\n skipDisabled?: boolean;\n slotProps?: PickerSlotProps;\n slots?: PickerSlots;\n sx?: PickerSx;\n thresholdToRenderTimeInASingleColumn?: number;\n timeSteps?: TimeSteps;\n timezone?: string;\n view?: TimePickerView;\n defaultView?: TimePickerView;\n viewRenderers?: Partial<Record<TimePickerView, TimePickerViewRenderer | null>>;\n views?: TimePickerView[];\n}\n\nconst Root = React.forwardRef<HTMLDivElement, TimePickerRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n onValueChange,\n onAccept,\n onError,\n hour12,\n withSeconds = false,\n disabled,\n readOnly,\n ampm,\n ampmInClock,\n autoFocus,\n closeOnSelect = false,\n desktopModeMediaQuery,\n disableFuture,\n disableIgnoringDatePartForTimeValidation,\n disableOpenPicker,\n disablePast,\n format,\n formatDensity,\n inputRef,\n keepOpenDuringFieldFocus,\n label,\n locale,\n localeText,\n maxTime,\n minTime,\n minutesStep,\n name,\n onClose,\n onOpen,\n open,\n defaultOpen,\n onOpenChange,\n onSelectedSectionsChange,\n onViewChange,\n openTo = 'hours',\n orientation,\n readOnlyInput,\n reduceAnimations,\n referenceDate,\n selectedSections: selectedSectionsProp,\n defaultSelectedSections,\n shouldDisableTime,\n skipDisabled,\n slotProps,\n slots,\n sx,\n thresholdToRenderTimeInASingleColumn,\n timeSteps,\n timezone,\n view: viewProp,\n defaultView,\n viewRenderers,\n views,\n ...rest\n } = props;\n // These props are part of the public API surface (MUI parity) but are not yet\n // consumed by the headless primitive. They will be wired up as the styled\n // analog-clock panel and locale/timezone layers are built out. Destructuring\n // them here prevents \"unused variable\" warnings without silently discarding them.\n void ([\n ampmInClock, // analog clock: AM/PM indicator placement\n autoFocus, // future: auto-focus the first segment on mount\n desktopModeMediaQuery, // future: responsive layout switching\n disableOpenPicker, // future: hide the popover trigger icon\n format, // future: format string for the field display value\n formatDensity, // future: spacing density for format separators\n inputRef, // future: ref forwarded to the hidden input\n keepOpenDuringFieldFocus, // future: keep popover open while segments are focused\n label, // future: visible field label\n locale, // future: Intl locale for segment formatting\n localeText, // future: i18n overrides for UI strings\n name, // future: hidden input name for form submission\n onClose, // future: callback when popover closes\n onOpen, // future: callback when popover opens\n open, // future: controlled open state\n defaultOpen, // future: default open state\n onOpenChange, // future: controlled open change\n orientation, // future: clock layout (landscape / portrait)\n readOnlyInput, // future: make the field text non-editable\n reduceAnimations, // future: disable CSS transitions\n skipDisabled, // future: skip disabled time options on arrow nav\n slotProps, // future: per-slot prop overrides\n slots, // future: slot component overrides\n sx, // future: MUI system sx prop\n thresholdToRenderTimeInASingleColumn, // future: single-column clock threshold\n timezone, // future: IANA timezone string\n viewRenderers, // future: custom view render functions\n views, // future: restrict visible clock views\n ] satisfies unknown[]);\n const isHour12 = ampm ?? hour12 ?? false;\n const normalizedValue = normalizeTimePickerValue(valueProp, referenceDate, isHour12);\n const normalizedDefaultValue = normalizeTimePickerValue(defaultValue, referenceDate, isHour12);\n const [dateValue, setDateValue] = useControllableState<Date | undefined>({\n prop: normalizedValue,\n defaultProp: normalizedDefaultValue,\n });\n const [, setSelectedSections] = useControllableState<PickerSelectedSections>({\n prop: selectedSectionsProp,\n defaultProp: defaultSelectedSections,\n onChange: onSelectedSectionsChange,\n });\n const [, setView] = useControllableState<TimePickerView>({\n prop: viewProp,\n defaultProp: defaultView ?? openTo,\n onChange: onViewChange,\n });\n const validationOptions = React.useMemo(\n () => ({\n minTime,\n maxTime,\n disablePast,\n disableFuture,\n minutesStep: minutesStep ?? timeSteps?.minutes,\n disableIgnoringDatePartForTimeValidation,\n shouldDisableTime,\n }),\n [\n minTime,\n maxTime,\n disablePast,\n disableFuture,\n minutesStep,\n timeSteps,\n disableIgnoringDatePartForTimeValidation,\n shouldDisableTime,\n ],\n );\n const validationError = validateTimeValue(dateValue ?? null, validationOptions);\n const lastValidationError = React.useRef<TimeValidationError | null>(validationError);\n\n React.useEffect(() => {\n if (lastValidationError.current !== validationError) {\n lastValidationError.current = validationError;\n onError?.(validationError, dateValue ?? null);\n }\n }, [dateValue, onError, validationError]);\n\n const commitDate = React.useCallback(\n (nextDate: Date | undefined) => {\n if (readOnly || disabled) return;\n const nextValue = nextDate ?? null;\n const nextError = validateTimeValue(nextValue, validationOptions);\n const context = createPickerChangeContext<TimeValidationError>(nextError, 'view');\n setDateValue(nextDate);\n if (nextDate) onValueChange?.(dateToTimeValue(nextDate, isHour12));\n onChange?.(nextValue, context);\n if (closeOnSelect) onAccept?.(nextValue, context);\n },\n [\n closeOnSelect,\n disabled,\n isHour12,\n onAccept,\n onChange,\n onValueChange,\n readOnly,\n setDateValue,\n validationOptions,\n ],\n );\n\n return (\n <TimePickerProvider\n value={dateValue ? dateToTimeValue(dateValue, isHour12) : undefined}\n dateValue={dateValue}\n onValueChange={(v) => {\n const nextDate = timeValueToDate(v, dateValue ?? referenceDate ?? new Date());\n commitDate(nextDate);\n setSelectedSections('minutes');\n setView(withSeconds ? 'seconds' : 'minutes');\n }}\n onDateChange={commitDate}\n hour12={isHour12}\n withSeconds={withSeconds}\n disabled={disabled}\n >\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef} />\n </TimePickerProvider>\n );\n },\n);\nRoot.displayName = 'TimePicker.Root';\n\ntype Segment = 'hour' | 'minute' | 'second' | 'period';\n\nexport interface SegmentProps extends React.ComponentPropsWithoutRef<'span'> {\n segment: Segment;\n}\n\nconst SegmentField = React.forwardRef<HTMLSpanElement, SegmentProps>(\n (props, forwardedRef) => {\n const { segment, ...rest } = props;\n const ctx = useTimePickerContext('TimePicker.Segment');\n const value = ctx.value;\n const formatted = formatSegment(segment, value, ctx.hour12);\n const setSegment = (next: Partial<TimeValue>) => {\n const current = value ?? { hour: ctx.hour12 ? 12 : 0, minute: 0, second: 0, period: 'am' };\n ctx.onValueChange({ ...current, ...next });\n };\n const adjust = (delta: number) => {\n const v = value ?? { hour: ctx.hour12 ? 12 : 0, minute: 0, second: 0, period: 'am' };\n if (segment === 'hour') {\n const max = ctx.hour12 ? 12 : 23;\n const min = ctx.hour12 ? 1 : 0;\n let next = v.hour + delta;\n if (next > max) next = min;\n if (next < min) next = max;\n setSegment({ hour: next });\n } else if (segment === 'minute') {\n let next = v.minute + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n setSegment({ minute: next });\n } else if (segment === 'second') {\n let next = (v.second ?? 0) + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n setSegment({ second: next });\n } else if (segment === 'period') {\n setSegment({ period: v.period === 'am' ? 'pm' : 'am' });\n }\n };\n return (\n <Primitive.span\n role=\"spinbutton\"\n aria-label={segment}\n tabIndex={ctx.disabled ? -1 : 0}\n contentEditable={false}\n aria-valuetext={formatted}\n data-segment={segment}\n {...rest}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n adjust(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n adjust(-1);\n }\n })}\n >\n {formatted}\n </Primitive.span>\n );\n },\n);\nSegmentField.displayName = 'TimePicker.Segment';\n\nconst Value: React.FC<{\n format?: TimePickerFormat;\n locale?: string;\n placeholder?: React.ReactNode;\n}> = ({ format = { timeStyle: 'short' }, locale, placeholder = 'Pick a time' }) => {\n const ctx = useTimePickerContext('TimePicker.Value');\n if (!ctx.dateValue) return <>{placeholder}</>;\n if (typeof format !== 'string') {\n return <>{new Intl.DateTimeFormat(locale, format).format(ctx.dateValue)}</>;\n }\n return <>{formatTime(ctx.dateValue, format, ctx.hour12)}</>;\n};\nValue.displayName = 'TimePicker.Value';\n\nfunction normalizeTimePickerValue(\n value: TimePickerValue,\n referenceDate: Date | undefined,\n hour12: boolean,\n) {\n if (!value) return undefined;\n if (value instanceof Date) return value;\n const normalized = hour12 && !value.period\n ? { ...value, period: value.hour >= 12 ? ('pm' as const) : ('am' as const) }\n : value;\n return timeValueToDate(normalized, referenceDate ?? new Date());\n}\n\nfunction formatSegment(segment: Segment, v: TimeValue | undefined, hour12: boolean) {\n if (!v) return '--';\n if (segment === 'hour') return hour12 ? String(v.hour || 12) : pad(v.hour);\n if (segment === 'minute') return pad(v.minute);\n if (segment === 'second') return pad(v.second ?? 0);\n if (segment === 'period') return v.period === 'pm' ? 'PM' : 'AM';\n return '--';\n}\n\nfunction formatTime(value: Date, format: string, hour12: boolean) {\n const time = dateToTimeValue(value, hour12);\n return format.replace(/HH|H|hh|h|mm|m|ss|s|aa|a/g, (token) => {\n if (token === 'HH') return pad(value.getHours());\n if (token === 'H') return String(value.getHours());\n if (token === 'hh') return pad(time.hour);\n if (token === 'h') return String(time.hour);\n if (token === 'mm') return pad(value.getMinutes());\n if (token === 'm') return String(value.getMinutes());\n if (token === 'ss') return pad(value.getSeconds());\n if (token === 's') return String(value.getSeconds());\n if (token === 'aa') return time.period === 'pm' ? 'pm' : 'am';\n return time.period === 'pm' ? 'PM' : 'AM';\n });\n}\n\nexport { Root, SegmentField as Segment, Value };\n","export * from './date-range-picker';\nexport type { DateRangePickerShortcutsProps, DateRangePickerValueProps } from './date-range-picker.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as PopoverPrimitive from '../popover';\nimport * as CalendarPrimitive from '../calendar';\nimport {\n addDays,\n createPickerChangeContext,\n isAfterDay,\n startOfDay,\n validateDateValue,\n type DateRangePosition,\n type DateRangeValidationError,\n type PickerChangeContext,\n type PickerFormatDensity,\n type PickerLocaleText,\n type PickerSelectedSections,\n type PickerSlotProps,\n type PickerSlots,\n type PickerSx,\n} from '../picker-utils';\n\nexport interface DateRange {\n from?: Date;\n to?: Date;\n}\n\nexport type DateRangeTuple = [Date | null, Date | null];\nexport type DateRangeValue = DateRange | DateRangeTuple | null | undefined;\nexport type DateRangePickerFormat = Intl.DateTimeFormatOptions | string;\n\nexport interface DateRangePickerShortcut {\n label: React.ReactNode;\n getValue: (today: Date) => DateRangeValue;\n disabled?: boolean;\n closeOnSelect?: boolean;\n}\n\nexport type DateRangePickerViewRenderer = (params: {\n value: DateRangeTuple;\n onChange: (value: DateRangeTuple) => void;\n rangePosition: DateRangePosition;\n}) => React.ReactNode;\n\ninterface DateRangePickerContextValue {\n value: DateRange;\n onValueChange: (range: DateRange) => void;\n onShortcutSelect: (shortcut: DateRangePickerShortcut) => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n calendarProps: Omit<\n Pick<\n CalendarPrimitive.CalendarRootProps,\n | 'minDate'\n | 'maxDate'\n | 'disablePast'\n | 'disableFuture'\n | 'disabledDays'\n | 'shouldDisableDate'\n | 'weekStartsOn'\n | 'locale'\n | 'disabled'\n | 'disableHighlightToday'\n | 'displayWeekNumber'\n | 'fixedWeekNumber'\n | 'showDaysOutsideCurrentMonth'\n | 'dayOfWeekFormatter'\n | 'onMonthChange'\n >,\n 'shouldDisableDate'\n > & {\n shouldDisableDate?: (date: Date) => boolean;\n };\n readOnly?: boolean;\n closeOnSelect: boolean;\n loading?: boolean;\n renderLoading?: () => React.ReactNode;\n localeText?: PickerLocaleText;\n rangePosition: DateRangePosition;\n}\n\nconst [DateRangePickerProvider, useDateRangePickerContext] =\n createContext<DateRangePickerContextValue>('DateRangePicker');\n\nexport interface DateRangePickerRootProps {\n children?: React.ReactNode;\n value?: DateRangeValue;\n defaultValue?: DateRangeValue;\n onChange?: (\n range: DateRangeTuple,\n context: PickerChangeContext<DateRangeValidationError>,\n ) => void;\n onValueChange?: (range: DateRange) => void;\n onAccept?: (\n range: DateRangeTuple,\n context: PickerChangeContext<DateRangeValidationError>,\n ) => void;\n onError?: (error: DateRangeValidationError | null, value: DateRangeTuple) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n onOpen?: () => void;\n onClose?: () => void;\n closeOnSelect?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n minDate?: Date;\n maxDate?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n disabledDays?: (date: Date) => boolean;\n shouldDisableDate?: (date: Date, position: DateRangePosition) => boolean;\n weekStartsOn?: number;\n locale?: string;\n autoFocus?: boolean;\n calendars?: 1 | 2 | 3;\n currentMonthCalendarPosition?: 1 | 2 | 3;\n dayOfWeekFormatter?: (date: Date) => string;\n defaultRangePosition?: DateRangePosition;\n desktopModeMediaQuery?: string;\n disableAutoMonthSwitching?: boolean;\n disableDragEditing?: boolean;\n disableHighlightToday?: boolean;\n disableOpenPicker?: boolean;\n displayWeekNumber?: boolean;\n fixedWeekNumber?: number;\n format?: DateRangePickerFormat;\n formatDensity?: PickerFormatDensity;\n inputRef?: React.Ref<HTMLInputElement>;\n keepOpenDuringFieldFocus?: boolean;\n label?: React.ReactNode;\n loading?: boolean;\n localeText?: PickerLocaleText;\n name?: string;\n onMonthChange?: (month: Date) => void;\n onRangePositionChange?: (rangePosition: DateRangePosition) => void;\n onSelectedSectionsChange?: (newValue: PickerSelectedSections) => void;\n rangePosition?: DateRangePosition;\n referenceDate?: Date | DateRangeTuple;\n renderLoading?: () => React.ReactNode;\n selectedSections?: PickerSelectedSections;\n defaultSelectedSections?: PickerSelectedSections;\n showDaysOutsideCurrentMonth?: boolean;\n slotProps?: PickerSlotProps;\n slots?: PickerSlots;\n sx?: PickerSx;\n timezone?: string;\n viewRenderers?: { day?: DateRangePickerViewRenderer | null };\n shortcuts?: DateRangePickerShortcut[] | false;\n}\n\nfunction normalizeRange(value: DateRangeValue): DateRange | undefined {\n if (!value) return undefined;\n if (Array.isArray(value)) {\n const [from, to] = value;\n return { from: from ?? undefined, to: to ?? undefined };\n }\n return value;\n}\n\nfunction rangeToTuple(range: DateRange): DateRangeTuple {\n return [range.from ?? null, range.to ?? null];\n}\n\nfunction validateRange(\n range: DateRange,\n options: {\n minDate?: Date;\n maxDate?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n shouldDisableDate?: (date: Date, position: DateRangePosition) => boolean;\n },\n): DateRangeValidationError | null {\n const fromError = validateDateValue(range.from, {\n ...options,\n shouldDisableDate: options.shouldDisableDate\n ? (date) => options.shouldDisableDate?.(date, 'start') ?? false\n : undefined,\n });\n if (fromError) return fromError;\n const toError = validateDateValue(range.to, {\n ...options,\n shouldDisableDate: options.shouldDisableDate\n ? (date) => options.shouldDisableDate?.(date, 'end') ?? false\n : undefined,\n });\n if (toError) return toError;\n if (range.from && range.to && isAfterDay(range.from, range.to)) return 'invalidRange';\n return null;\n}\n\nconst Root: React.FC<DateRangePickerRootProps> = ({\n value: valueProp,\n defaultValue = {},\n onChange,\n onValueChange,\n onAccept,\n onError,\n open: openProp,\n defaultOpen,\n onOpenChange,\n onOpen,\n onClose,\n closeOnSelect = true,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate,\n weekStartsOn,\n locale,\n dayOfWeekFormatter,\n defaultRangePosition = 'start',\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n loading,\n onMonthChange,\n onRangePositionChange,\n onSelectedSectionsChange,\n rangePosition: rangePositionProp,\n renderLoading,\n selectedSections: selectedSectionsProp,\n defaultSelectedSections,\n showDaysOutsideCurrentMonth,\n localeText,\n children,\n}) => {\n const normalizedValue = normalizeRange(valueProp);\n const normalizedDefaultValue = normalizeRange(defaultValue) ?? {};\n const validationOptions = React.useMemo(\n () => ({ minDate, maxDate, disablePast, disableFuture, shouldDisableDate }),\n [minDate, maxDate, disablePast, disableFuture, shouldDisableDate],\n );\n const [value = {}, setValue] = useControllableState<DateRange>({\n prop: normalizedValue,\n defaultProp: normalizedDefaultValue,\n });\n const [open = false, setOpenState] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n });\n const [rangePosition = defaultRangePosition, setRangePosition] =\n useControllableState<DateRangePosition>({\n prop: rangePositionProp,\n defaultProp: defaultRangePosition,\n onChange: onRangePositionChange,\n });\n const [, setSelectedSections] = useControllableState<PickerSelectedSections>({\n prop: selectedSectionsProp,\n defaultProp: defaultSelectedSections,\n onChange: onSelectedSectionsChange,\n });\n\n const validationError = validateRange(value, validationOptions);\n const lastValidationError = React.useRef<DateRangeValidationError | null | undefined>(undefined);\n\n React.useEffect(() => {\n if (lastValidationError.current !== validationError) {\n const prev = lastValidationError.current;\n lastValidationError.current = validationError;\n if (prev !== undefined || validationError !== null) {\n onError?.(validationError, rangeToTuple(value));\n }\n }\n }, [onError, validationError, value]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n setOpenState(nextOpen);\n onOpenChange?.(nextOpen);\n if (nextOpen) onOpen?.();\n else onClose?.();\n },\n [onClose, onOpen, onOpenChange, setOpenState],\n );\n\n const commitRange = React.useCallback(\n (\n range: DateRange,\n source: 'view' | 'shortcut' = 'view',\n shortcut?: DateRangePickerShortcut,\n ) => {\n if (readOnly || disabled) return;\n const nextError = validateRange(range, validationOptions);\n const tuple = rangeToTuple(range);\n const context = createPickerChangeContext<DateRangeValidationError>(\n nextError,\n source,\n shortcut ? { label: shortcut.label, value: tuple } : undefined,\n );\n const nextRangePosition = range.from && !range.to ? 'end' : 'start';\n setValue(range);\n setRangePosition(nextRangePosition);\n setSelectedSections(nextRangePosition === 'end' ? 'day' : null);\n onValueChange?.(range);\n onChange?.(tuple, context);\n if (range.from && range.to) {\n onAccept?.(tuple, context);\n if (source === 'shortcut') {\n if (shortcut?.closeOnSelect ?? closeOnSelect) setOpen(false);\n } else if (closeOnSelect) {\n setOpen(false);\n }\n }\n },\n [\n closeOnSelect,\n disabled,\n onAccept,\n onChange,\n onValueChange,\n readOnly,\n setOpen,\n setRangePosition,\n setSelectedSections,\n setValue,\n validationOptions,\n ],\n );\n\n const shouldDisableDateForPosition = React.useCallback(\n (date: Date) => shouldDisableDate?.(date, rangePosition) ?? false,\n [rangePosition, shouldDisableDate],\n );\n\n return (\n <DateRangePickerProvider\n value={value}\n onValueChange={(range) => commitRange(range)}\n onShortcutSelect={(shortcut) => {\n const normalized = normalizeRange(shortcut.getValue(startOfDay(new Date()))) ?? {};\n commitRange(normalized, 'shortcut', shortcut);\n }}\n open={open}\n onOpenChange={setOpen}\n calendarProps={{\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate: shouldDisableDateForPosition,\n weekStartsOn,\n locale,\n disabled,\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n showDaysOutsideCurrentMonth,\n dayOfWeekFormatter,\n onMonthChange,\n }}\n readOnly={readOnly}\n closeOnSelect={closeOnSelect}\n loading={loading}\n renderLoading={renderLoading}\n localeText={localeText}\n rangePosition={rangePosition}\n >\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DateRangePickerProvider>\n );\n};\nRoot.displayName = 'DateRangePicker.Root';\n\nconst Trigger = PopoverPrimitive.Trigger;\nconst Portal = PopoverPrimitive.Portal;\nconst Content = PopoverPrimitive.Content;\nconst Anchor = PopoverPrimitive.Anchor;\n\nconst Calendar = React.forwardRef<\n HTMLDivElement,\n Omit<CalendarPrimitive.CalendarRootProps, 'selected' | 'onSelect' | 'mode' | 'shouldDisableDate'>\n>((props, forwardedRef) => {\n const ctx = useDateRangePickerContext('DateRangePicker.Calendar');\n const { disabled: calendarDisabled, ...calendarProps } = ctx.calendarProps;\n return (\n <CalendarPrimitive.Root\n ref={forwardedRef}\n mode=\"range\"\n selected={ctx.value}\n onSelect={(v) => {\n if (v && typeof v === 'object' && !Array.isArray(v) && !(v instanceof Date)) {\n ctx.onValueChange(v as DateRange);\n }\n }}\n disabled={calendarDisabled || ctx.readOnly}\n {...calendarProps}\n {...props}\n />\n );\n});\nCalendar.displayName = 'DateRangePicker.Calendar';\n\nconst Shortcuts = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'> & {\n shortcuts?: DateRangePickerShortcut[];\n }\n>(({ shortcuts = getDefaultDateRangePickerShortcuts(), ...props }, forwardedRef) => {\n const ctx = useDateRangePickerContext('DateRangePicker.Shortcuts');\n return (\n <Primitive.div {...props} ref={forwardedRef}>\n {shortcuts.map((shortcut, index) => (\n <Primitive.button\n key={`${String(shortcut.label)}-${index}`}\n type=\"button\"\n disabled={shortcut.disabled}\n onClick={composeEventHandlers(undefined, () => ctx.onShortcutSelect(shortcut))}\n >\n {shortcut.label}\n </Primitive.button>\n ))}\n </Primitive.div>\n );\n});\nShortcuts.displayName = 'DateRangePicker.Shortcuts';\n\nconst Loading: React.FC = () => {\n const ctx = useDateRangePickerContext('DateRangePicker.Loading');\n return <>{ctx.renderLoading?.() ?? ctx.localeText?.loading ?? 'Loading...'}</>;\n};\nLoading.displayName = 'DateRangePicker.Loading';\n\nconst Value: React.FC<{\n format?: DateRangePickerFormat;\n formatDensity?: PickerFormatDensity;\n locale?: string;\n separator?: string;\n placeholder?: React.ReactNode;\n}> = ({\n format = { dateStyle: 'medium' },\n formatDensity = 'dense',\n locale,\n separator = ' – ',\n placeholder = 'Pick a date range',\n}) => {\n const ctx = useDateRangePickerContext('DateRangePicker.Value');\n if (!ctx.value.from) return <>{placeholder}</>;\n if (!ctx.value.to) return <>{formatDate(ctx.value.from, format, locale, formatDensity)}</>;\n return (\n <>\n {`${formatDate(ctx.value.from, format, locale, formatDensity)}${separator}${formatDate(\n ctx.value.to,\n format,\n locale,\n formatDensity,\n )}`}\n </>\n );\n};\nValue.displayName = 'DateRangePicker.Value';\n\nexport function getDefaultDateRangePickerShortcuts(): DateRangePickerShortcut[] {\n return [\n {\n label: 'Today',\n getValue: (today) => [today, today],\n },\n {\n label: 'Yesterday',\n getValue: (today) => {\n const yesterday = addDays(today, -1);\n return [yesterday, yesterday];\n },\n },\n {\n label: 'Last 7 days',\n getValue: (today) => [addDays(today, -6), today],\n },\n {\n label: 'Last 30 days',\n getValue: (today) => [addDays(today, -29), today],\n },\n {\n label: 'This month',\n getValue: (today) => [new Date(today.getFullYear(), today.getMonth(), 1), today],\n },\n {\n label: 'Last month',\n getValue: (today) => [\n new Date(today.getFullYear(), today.getMonth() - 1, 1),\n new Date(today.getFullYear(), today.getMonth(), 0),\n ],\n },\n ];\n}\n\nfunction formatDate(\n date: Date,\n format: DateRangePickerFormat,\n locale: string | undefined,\n density: PickerFormatDensity,\n) {\n if (typeof format !== 'string') {\n return new Intl.DateTimeFormat(locale, format).format(date);\n }\n const value = format.replace(/yyyy|YYYY|MMMM|MMM|MM|M|dd|DD|d/g, (token) => {\n if (token === 'yyyy' || token === 'YYYY') return String(date.getFullYear());\n if (token === 'MMMM') return new Intl.DateTimeFormat(locale, { month: 'long' }).format(date);\n if (token === 'MMM') return new Intl.DateTimeFormat(locale, { month: 'short' }).format(date);\n if (token === 'MM') return String(date.getMonth() + 1).padStart(2, '0');\n if (token === 'M') return String(date.getMonth() + 1);\n if (token === 'dd' || token === 'DD') return String(date.getDate()).padStart(2, '0');\n return String(date.getDate());\n });\n return density === 'spacious' ? value.replaceAll('/', ' / ').replaceAll('-', ' - ').replaceAll('.', ' . ') : value;\n}\n\nexport {\n Root,\n Trigger,\n Anchor,\n Portal,\n Content,\n Calendar,\n Shortcuts,\n Loading,\n Value,\n};\n","export * from './date-time-picker';\nexport type { DateTimePickerSegment, DateTimePickerValueProps } from './date-time-picker.types';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport * as PopoverPrimitive from '../popover';\nimport * as CalendarPrimitive from '../calendar';\nimport {\n applyTimePart,\n createPickerChangeContext,\n dateToTimeValue,\n mergeDateAndTime,\n pad,\n validateDateTimeValue,\n type DateTimePickerView,\n type DateTimeValidationError,\n type PickerChangeContext,\n type PickerFormatDensity,\n type PickerLocaleText,\n type PickerOrientation,\n type PickerSelectedSections,\n type PickerSlotProps,\n type PickerSlots,\n type PickerSx,\n type TimePickerView,\n type TimeSteps,\n type TimeValue,\n} from '../picker-utils';\n\nexport type DateTimePickerFormat = Intl.DateTimeFormatOptions | string;\n\nexport type DateTimePickerViewRenderer = (params: {\n view: DateTimePickerView;\n value: Date | null;\n onChange: (value: Date | null) => void;\n}) => React.ReactNode;\n\ninterface DateTimePickerContextValue {\n value: Date | undefined;\n onValueChange: (date: Date | undefined) => void;\n onDateSelect: (date: Date) => void;\n onTimePartChange: (part: Partial<TimeValue>) => void;\n onTimeValueChange: (date: Date) => void;\n onTimeAccept: (date: Date) => void;\n onTimeCancel: () => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n view: DateTimePickerView;\n setView: (view: DateTimePickerView) => void;\n calendarProps: Pick<\n CalendarPrimitive.CalendarRootProps,\n | 'minDate'\n | 'maxDate'\n | 'disablePast'\n | 'disableFuture'\n | 'disabledDays'\n | 'shouldDisableDate'\n | 'shouldDisableMonth'\n | 'shouldDisableYear'\n | 'weekStartsOn'\n | 'locale'\n | 'disabled'\n | 'disableHighlightToday'\n | 'displayWeekNumber'\n | 'fixedWeekNumber'\n | 'showDaysOutsideCurrentMonth'\n | 'dayOfWeekFormatter'\n | 'onMonthChange'\n | 'onYearChange'\n >;\n readOnly?: boolean;\n closeOnSelect: boolean;\n loading?: boolean;\n renderLoading?: () => React.ReactNode;\n localeText?: PickerLocaleText;\n ampm: boolean;\n withSeconds: boolean;\n}\n\nconst [DateTimePickerProvider, useDateTimePickerContext] =\n createContext<DateTimePickerContextValue>('DateTimePicker');\n\nexport interface DateTimePickerRootProps {\n children?: React.ReactNode;\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (\n value: Date | null,\n context: PickerChangeContext<DateTimeValidationError>,\n ) => void;\n onValueChange?: (value: Date | undefined) => void;\n onAccept?: (\n value: Date | null,\n context: PickerChangeContext<DateTimeValidationError>,\n ) => void;\n onError?: (error: DateTimeValidationError | null, value: Date | null) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n onOpen?: () => void;\n onClose?: () => void;\n closeOnSelect?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n minDate?: Date;\n maxDate?: Date;\n minDateTime?: Date;\n maxDateTime?: Date;\n minTime?: Date;\n maxTime?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n disabledDays?: (date: Date) => boolean;\n shouldDisableDate?: (date: Date) => boolean;\n shouldDisableMonth?: (date: Date) => boolean;\n shouldDisableYear?: (date: Date) => boolean;\n shouldDisableTime?: (value: Date, view: TimePickerView) => boolean;\n weekStartsOn?: number;\n locale?: string;\n ampm?: boolean;\n ampmInClock?: boolean;\n autoFocus?: boolean;\n dayOfWeekFormatter?: (date: Date) => string;\n desktopModeMediaQuery?: string;\n disableHighlightToday?: boolean;\n disableIgnoringDatePartForTimeValidation?: boolean;\n disableOpenPicker?: boolean;\n displayWeekNumber?: boolean;\n fixedWeekNumber?: number;\n format?: DateTimePickerFormat;\n formatDensity?: PickerFormatDensity;\n inputRef?: React.Ref<HTMLInputElement>;\n keepOpenDuringFieldFocus?: boolean;\n label?: React.ReactNode;\n loading?: boolean;\n localeText?: PickerLocaleText;\n minutesStep?: number;\n monthsPerRow?: 3 | 4;\n name?: string;\n onMonthChange?: (month: Date) => void;\n onSelectedSectionsChange?: (newValue: PickerSelectedSections) => void;\n onViewChange?: (view: DateTimePickerView) => void;\n onYearChange?: (year: Date) => void;\n openTo?: DateTimePickerView;\n orientation?: PickerOrientation;\n reduceAnimations?: boolean;\n referenceDate?: Date;\n renderLoading?: () => React.ReactNode;\n selectedSections?: PickerSelectedSections;\n defaultSelectedSections?: PickerSelectedSections;\n showDaysOutsideCurrentMonth?: boolean;\n skipDisabled?: boolean;\n slotProps?: PickerSlotProps;\n slots?: PickerSlots;\n sx?: PickerSx;\n thresholdToRenderTimeInASingleColumn?: number;\n timeSteps?: TimeSteps;\n timezone?: string;\n view?: DateTimePickerView;\n defaultView?: DateTimePickerView;\n viewRenderers?: Partial<Record<DateTimePickerView, DateTimePickerViewRenderer | null>>;\n views?: DateTimePickerView[];\n yearsOrder?: 'asc' | 'desc';\n yearsPerRow?: 3 | 4;\n}\n\nconst Root: React.FC<DateTimePickerRootProps> = ({\n value: valueProp,\n defaultValue,\n onChange,\n onValueChange,\n onAccept,\n onError,\n open: openProp,\n defaultOpen,\n onOpenChange,\n onOpen,\n onClose,\n closeOnSelect = false,\n disabled,\n readOnly,\n minDate,\n maxDate,\n minDateTime,\n maxDateTime,\n minTime,\n maxTime,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n shouldDisableTime,\n weekStartsOn,\n locale,\n ampm = false,\n dayOfWeekFormatter,\n disableHighlightToday,\n disableIgnoringDatePartForTimeValidation,\n displayWeekNumber,\n fixedWeekNumber,\n loading,\n minutesStep,\n onMonthChange,\n onSelectedSectionsChange,\n onViewChange,\n onYearChange,\n openTo = 'day',\n referenceDate,\n renderLoading,\n selectedSections: selectedSectionsProp,\n defaultSelectedSections,\n showDaysOutsideCurrentMonth,\n timeSteps,\n localeText,\n view: viewProp,\n defaultView,\n views,\n children,\n}) => {\n const initialView = defaultView ?? openTo;\n const normalizedValue = valueProp === null ? undefined : valueProp;\n const normalizedDefaultValue = defaultValue === null ? undefined : defaultValue;\n const validationOptions = React.useMemo(\n () => ({\n minDate,\n maxDate,\n minDateTime,\n maxDateTime,\n minTime,\n maxTime,\n disablePast,\n disableFuture,\n minutesStep: minutesStep ?? timeSteps?.minutes,\n disableIgnoringDatePartForTimeValidation,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n shouldDisableTime,\n }),\n [\n minDate,\n maxDate,\n minDateTime,\n maxDateTime,\n minTime,\n maxTime,\n disablePast,\n disableFuture,\n minutesStep,\n timeSteps,\n disableIgnoringDatePartForTimeValidation,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n shouldDisableTime,\n ],\n );\n const [value, setValue] = useControllableState<Date | undefined>({\n prop: normalizedValue,\n defaultProp: normalizedDefaultValue,\n });\n const [open = false, setOpenState] = useControllableState<boolean>({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n });\n const [, setSelectedSections] = useControllableState<PickerSelectedSections>({\n prop: selectedSectionsProp,\n defaultProp: defaultSelectedSections,\n onChange: onSelectedSectionsChange,\n });\n const [view = initialView, setView] = useControllableState<DateTimePickerView>({\n prop: viewProp,\n defaultProp: initialView,\n onChange: onViewChange,\n });\n\n const validationError = validateDateTimeValue(value ?? null, validationOptions);\n const lastValidationError = React.useRef<DateTimeValidationError | null | undefined>(undefined);\n\n React.useEffect(() => {\n if (lastValidationError.current !== validationError) {\n const prev = lastValidationError.current;\n lastValidationError.current = validationError;\n if (prev !== undefined || validationError !== null) {\n onError?.(validationError, value ?? null);\n }\n }\n }, [onError, validationError, value]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n setOpenState(nextOpen);\n if (nextOpen) setView(initialView);\n onOpenChange?.(nextOpen);\n if (nextOpen) onOpen?.();\n else onClose?.();\n },\n [initialView, onClose, onOpen, onOpenChange, setOpenState, setView],\n );\n\n const commitValue = React.useCallback(\n (\n date: Date | undefined,\n options: {\n accept?: boolean;\n close?: boolean;\n selectedSection?: PickerSelectedSections;\n view?: DateTimePickerView;\n } = {},\n ) => {\n if (readOnly || disabled) return;\n const nextValue = date ?? null;\n const nextError = validateDateTimeValue(nextValue, validationOptions);\n const context = createPickerChangeContext<DateTimeValidationError>(nextError, 'view');\n setValue(date);\n setSelectedSections(options.selectedSection ?? (date ? 'day' : null));\n if (options.view) setView(options.view);\n onValueChange?.(date);\n onChange?.(nextValue, context);\n if (options.accept) {\n onAccept?.(nextValue, context);\n if (options.close && date) setOpen(false);\n }\n },\n [\n disabled,\n onAccept,\n onChange,\n onValueChange,\n readOnly,\n setOpen,\n setSelectedSections,\n setValue,\n setView,\n validationOptions,\n ],\n );\n\n const commitDatePart = React.useCallback(\n (date: Date) => {\n const baseTime = value ?? referenceDate ?? new Date();\n const nextView = getFirstTimeView(views);\n commitValue(mergeDateAndTime(date, baseTime), {\n selectedSection: nextView,\n view: nextView,\n });\n },\n [commitValue, referenceDate, value, views],\n );\n\n const commitTimeValue = React.useCallback(\n (\n timeValue: Date,\n options: {\n accept?: boolean;\n close?: boolean;\n } = {},\n ) => {\n const baseDate = value ?? referenceDate ?? new Date();\n const nextValue = mergeDateAndTime(baseDate, timeValue);\n commitValue(nextValue, {\n accept: options.accept,\n close: options.close,\n selectedSection: 'minutes',\n view: 'minutes',\n });\n },\n [commitValue, referenceDate, value],\n );\n\n const acceptTimeValue = React.useCallback(\n (timeValue: Date) => {\n commitTimeValue(timeValue, {\n accept: true,\n close: true,\n });\n },\n [commitTimeValue],\n );\n\n return (\n <DateTimePickerProvider\n value={value}\n onValueChange={commitValue}\n onDateSelect={commitDatePart}\n onTimePartChange={(part) => {\n const nextValue = applyTimePart(value, part, referenceDate ?? new Date());\n commitValue(nextValue, {\n accept: true,\n close: closeOnSelect,\n selectedSection: part.second != null ? 'seconds' : 'minutes',\n view: part.second != null ? 'seconds' : 'minutes',\n });\n }}\n onTimeValueChange={commitTimeValue}\n onTimeAccept={acceptTimeValue}\n onTimeCancel={() => setOpen(false)}\n open={open}\n onOpenChange={setOpen}\n view={view}\n setView={setView}\n calendarProps={{\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n disabledDays,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n weekStartsOn,\n locale,\n disabled,\n disableHighlightToday,\n displayWeekNumber,\n fixedWeekNumber,\n showDaysOutsideCurrentMonth,\n dayOfWeekFormatter,\n onMonthChange,\n onYearChange,\n }}\n readOnly={readOnly}\n closeOnSelect={closeOnSelect}\n loading={loading}\n renderLoading={renderLoading}\n localeText={localeText}\n ampm={ampm}\n withSeconds={(timeSteps?.seconds ?? 0) > 0}\n >\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DateTimePickerProvider>\n );\n};\nRoot.displayName = 'DateTimePicker.Root';\n\nconst Trigger = PopoverPrimitive.Trigger;\nconst Portal = PopoverPrimitive.Portal;\nconst Anchor = PopoverPrimitive.Anchor;\n\nconst Content = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>((props, forwardedRef) => <PopoverPrimitive.Content {...props} ref={forwardedRef} />);\nContent.displayName = 'DateTimePicker.Content';\n\nconst Calendar = React.forwardRef<\n HTMLDivElement,\n Omit<CalendarPrimitive.CalendarRootProps, 'selected' | 'onSelect' | 'mode'>\n>((props, forwardedRef) => {\n const ctx = useDateTimePickerContext('DateTimePicker.Calendar');\n const { disabled: calendarDisabled, ...calendarProps } = ctx.calendarProps;\n return (\n <CalendarPrimitive.Root\n ref={forwardedRef}\n mode=\"single\"\n selected={ctx.value}\n onSelect={(v) => {\n if (v instanceof Date) {\n ctx.onDateSelect(v);\n }\n }}\n disabled={calendarDisabled || ctx.readOnly}\n {...calendarProps}\n {...props}\n />\n );\n});\nCalendar.displayName = 'DateTimePicker.Calendar';\n\nconst DatePanel = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useDateTimePickerContext('DateTimePicker.DatePanel');\n if (!isDateView(ctx.view)) return null;\n return <Primitive.div {...props} ref={forwardedRef} />;\n },\n);\nDatePanel.displayName = 'DateTimePicker.DatePanel';\n\nexport interface TimePanelRenderProps {\n value: Date | undefined;\n onChange: (value: Date) => void;\n onAccept: (value: Date) => void;\n onCancel: () => void;\n view: DateTimePickerView;\n setView: (view: DateTimePickerView) => void;\n}\n\nexport interface TimePanelProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n children?: React.ReactNode | ((props: TimePanelRenderProps) => React.ReactNode);\n}\n\nconst TimePanel = React.forwardRef<HTMLDivElement, TimePanelProps>(\n ({ children, ...props }, forwardedRef) => {\n const ctx = useDateTimePickerContext('DateTimePicker.TimePanel');\n if (!isTimeView(ctx.view)) return null;\n return (\n <Primitive.div {...props} ref={forwardedRef}>\n {typeof children === 'function'\n ? children({\n value: ctx.value,\n onChange: ctx.onTimeValueChange,\n onAccept: ctx.onTimeAccept,\n onCancel: ctx.onTimeCancel,\n view: ctx.view,\n setView: ctx.setView,\n })\n : children}\n </Primitive.div>\n );\n },\n);\nTimePanel.displayName = 'DateTimePicker.TimePanel';\n\nconst DateButton = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = useDateTimePickerContext('DateTimePicker.DateButton');\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.setView('day'))}\n />\n );\n },\n);\nDateButton.displayName = 'DateTimePicker.DateButton';\n\ntype Segment = 'hour' | 'minute' | 'second' | 'period';\n\nexport interface SegmentProps extends React.ComponentPropsWithoutRef<'span'> {\n segment: Segment;\n}\n\nconst SegmentField = React.forwardRef<HTMLSpanElement, SegmentProps>(\n ({ segment, ...props }, forwardedRef) => {\n const ctx = useDateTimePickerContext('DateTimePicker.Segment');\n const time = ctx.value ? dateToTimeValue(ctx.value, ctx.ampm) : undefined;\n const formatted = formatSegment(segment, time, ctx.ampm);\n const adjust = (delta: number) => {\n const current = time ?? { hour: ctx.ampm ? 12 : 0, minute: 0, second: 0, period: 'am' };\n if (segment === 'hour') {\n const max = ctx.ampm ? 12 : 23;\n const min = ctx.ampm ? 1 : 0;\n let next = current.hour + delta;\n if (next > max) next = min;\n if (next < min) next = max;\n ctx.onTimePartChange({ hour: next, period: current.period });\n } else if (segment === 'minute') {\n let next = current.minute + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n ctx.onTimePartChange({ minute: next });\n } else if (segment === 'second') {\n let next = (current.second ?? 0) + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n ctx.onTimePartChange({ second: next });\n } else {\n ctx.onTimePartChange({ period: current.period === 'pm' ? 'am' : 'pm' });\n }\n };\n return (\n <Primitive.span\n role=\"spinbutton\"\n aria-label={segment}\n tabIndex={ctx.readOnly ? -1 : 0}\n aria-valuetext={formatted}\n data-segment={segment}\n {...props}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n adjust(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n adjust(-1);\n }\n })}\n >\n {formatted}\n </Primitive.span>\n );\n },\n);\nSegmentField.displayName = 'DateTimePicker.Segment';\n\nconst Loading: React.FC = () => {\n const ctx = useDateTimePickerContext('DateTimePicker.Loading');\n return <>{ctx.renderLoading?.() ?? ctx.localeText?.loading ?? 'Loading...'}</>;\n};\nLoading.displayName = 'DateTimePicker.Loading';\n\nconst Value: React.FC<{\n format?: DateTimePickerFormat;\n locale?: string;\n placeholder?: React.ReactNode;\n}> = ({ format = { dateStyle: 'medium', timeStyle: 'short' }, locale, placeholder = 'Pick date and time' }) => {\n const ctx = useDateTimePickerContext('DateTimePicker.Value');\n if (!ctx.value) return <>{placeholder}</>;\n if (typeof format !== 'string') {\n return <>{new Intl.DateTimeFormat(locale, format).format(ctx.value)}</>;\n }\n return <>{formatDateTime(ctx.value, format, locale, ctx.ampm)}</>;\n};\nValue.displayName = 'DateTimePicker.Value';\n\nfunction formatSegment(segment: Segment, v: TimeValue | undefined, hour12: boolean) {\n if (!v) return '--';\n if (segment === 'hour') return hour12 ? String(v.hour || 12) : pad(v.hour);\n if (segment === 'minute') return pad(v.minute);\n if (segment === 'second') return pad(v.second ?? 0);\n if (segment === 'period') return v.period === 'pm' ? 'PM' : 'AM';\n return '--';\n}\n\nfunction isDateView(view: DateTimePickerView): view is Exclude<DateTimePickerView, TimePickerView> {\n return view === 'day' || view === 'month' || view === 'year';\n}\n\nfunction isTimeView(view: DateTimePickerView): view is TimePickerView {\n return view === 'hours' || view === 'minutes' || view === 'seconds' || view === 'meridiem';\n}\n\nfunction getFirstTimeView(views: DateTimePickerView[] | undefined): TimePickerView {\n return views?.find(isTimeView) ?? 'hours';\n}\n\nfunction formatDateTime(date: Date, format: string, locale: string | undefined, hour12: boolean) {\n const time = dateToTimeValue(date, hour12);\n return format.replace(/yyyy|YYYY|MMMM|MMM|MM|M|dd|DD|d|HH|H|hh|h|mm|m|ss|s|aa|a/g, (token) => {\n if (token === 'yyyy' || token === 'YYYY') return String(date.getFullYear());\n if (token === 'MMMM') return new Intl.DateTimeFormat(locale, { month: 'long' }).format(date);\n if (token === 'MMM') return new Intl.DateTimeFormat(locale, { month: 'short' }).format(date);\n if (token === 'MM') return String(date.getMonth() + 1).padStart(2, '0');\n if (token === 'M') return String(date.getMonth() + 1);\n if (token === 'dd' || token === 'DD') return String(date.getDate()).padStart(2, '0');\n if (token === 'd') return String(date.getDate());\n if (token === 'HH') return pad(date.getHours());\n if (token === 'H') return String(date.getHours());\n if (token === 'hh') return pad(time.hour);\n if (token === 'h') return String(time.hour);\n if (token === 'mm') return pad(date.getMinutes());\n if (token === 'm') return String(date.getMinutes());\n if (token === 'ss') return pad(date.getSeconds());\n if (token === 's') return String(date.getSeconds());\n if (token === 'aa') return time.period === 'pm' ? 'pm' : 'am';\n return time.period === 'pm' ? 'PM' : 'AM';\n });\n}\n\nexport {\n Root,\n Trigger,\n Anchor,\n Portal,\n Content,\n Calendar,\n DatePanel,\n TimePanel,\n DateButton,\n SegmentField as Segment,\n Loading,\n Value,\n};\n","export * from './color-picker';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nexport interface HsvaColor {\n h: number;\n s: number;\n v: number;\n a: number;\n}\n\nfunction clamp01(n: number) {\n return Math.max(0, Math.min(1, n));\n}\n\n\nfunction hsvToRgb({ h, s, v }: HsvaColor) {\n const c = v * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let r = 0,\n g = 0,\n b = 0;\n if (hp >= 0 && hp < 1) [r, g, b] = [c, x, 0];\n else if (hp < 2) [r, g, b] = [x, c, 0];\n else if (hp < 3) [r, g, b] = [0, c, x];\n else if (hp < 4) [r, g, b] = [0, x, c];\n else if (hp < 5) [r, g, b] = [x, 0, c];\n else [r, g, b] = [c, 0, x];\n const m = v - c;\n return { r: r + m, g: g + m, b: b + m };\n}\n\nexport function hsvaToHex(hsva: HsvaColor): string {\n const { r, g, b } = hsvToRgb(hsva);\n return (\n '#' +\n [r, g, b]\n .map((c) => Math.round(c * 255).toString(16).padStart(2, '0'))\n .join('')\n );\n}\n\ninterface ColorPickerContextValue {\n value: HsvaColor;\n onValueChange: (v: HsvaColor) => void;\n disabled?: boolean;\n}\n\nconst [ColorPickerProvider, useColorPickerContext] =\n createContext<ColorPickerContextValue>('ColorPicker');\n\nexport interface ColorPickerRootProps\n extends Omit<React.ComponentPropsWithoutRef<'div'>, 'defaultValue'> {\n asChild?: boolean;\n value?: HsvaColor;\n defaultValue?: HsvaColor;\n onValueChange?: (v: HsvaColor) => void;\n disabled?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, ColorPickerRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = { h: 0, s: 1, v: 1, a: 1 },\n onValueChange,\n disabled,\n ...rest\n } = props;\n const [value = defaultValue, setValue] = useControllableState<HsvaColor>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n return (\n <ColorPickerProvider value={value} onValueChange={(v) => setValue(v)} disabled={disabled}>\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef} />\n </ColorPickerProvider>\n );\n },\n);\nRoot.displayName = 'ColorPicker.Root';\n\nconst Area = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useColorPickerContext('ColorPicker.Area');\n const ref = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const handleMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!ref.current) return;\n const rect = ref.current.getBoundingClientRect();\n const s = clamp01((event.clientX - rect.left) / rect.width);\n const v = 1 - clamp01((event.clientY - rect.top) / rect.height);\n ctx.onValueChange({ ...ctx.value, s, v });\n };\n return (\n <Primitive.div\n role=\"application\"\n aria-label=\"Color area\"\n tabIndex={0}\n {...props}\n ref={composedRef}\n style={{\n position: 'relative',\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${ctx.value.h}deg 100% 50%))`,\n touchAction: 'none',\n ...props.style,\n }}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n handleMove(event);\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {\n if ((event.currentTarget as HTMLElement).hasPointerCapture(event.pointerId)) {\n handleMove(event);\n }\n })}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) =>\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId),\n )}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const step = event.shiftKey ? 0.1 : 0.01;\n if (event.key === 'ArrowLeft')\n ctx.onValueChange({ ...ctx.value, s: clamp01(ctx.value.s - step) });\n else if (event.key === 'ArrowRight')\n ctx.onValueChange({ ...ctx.value, s: clamp01(ctx.value.s + step) });\n else if (event.key === 'ArrowUp')\n ctx.onValueChange({ ...ctx.value, v: clamp01(ctx.value.v + step) });\n else if (event.key === 'ArrowDown')\n ctx.onValueChange({ ...ctx.value, v: clamp01(ctx.value.v - step) });\n })}\n />\n );\n },\n);\nArea.displayName = 'ColorPicker.Area';\n\nconst AreaThumb = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n (props, forwardedRef) => {\n const ctx = useColorPickerContext('ColorPicker.AreaThumb');\n return (\n <Primitive.span\n aria-hidden\n {...props}\n ref={forwardedRef}\n style={{\n position: 'absolute',\n left: `${ctx.value.s * 100}%`,\n top: `${(1 - ctx.value.v) * 100}%`,\n transform: 'translate(-50%, -50%)',\n ...props.style,\n }}\n />\n );\n },\n);\nAreaThumb.displayName = 'ColorPicker.AreaThumb';\n\ninterface ChannelSliderProps extends React.ComponentPropsWithoutRef<'div'> {\n channel: 'h' | 'a';\n}\n\nconst ChannelSlider = React.forwardRef<HTMLDivElement, ChannelSliderProps>(\n (props, forwardedRef) => {\n const { channel, ...rest } = props;\n const ctx = useColorPickerContext('ColorPicker.ChannelSlider');\n const ref = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n const max = channel === 'h' ? 360 : 1;\n const handleMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!ref.current) return;\n const rect = ref.current.getBoundingClientRect();\n const pct = clamp01((event.clientX - rect.left) / rect.width);\n ctx.onValueChange({ ...ctx.value, [channel]: pct * max });\n };\n const background =\n channel === 'h'\n ? 'linear-gradient(to right, red, yellow, lime, cyan, blue, magenta, red)'\n : `linear-gradient(to right, transparent, hsl(${ctx.value.h}deg 100% 50%))`;\n return (\n <Primitive.div\n role=\"slider\"\n aria-label={channel === 'h' ? 'Hue' : 'Alpha'}\n aria-valuenow={ctx.value[channel]}\n aria-valuemin={0}\n aria-valuemax={max}\n tabIndex={0}\n {...rest}\n ref={composedRef}\n style={{ position: 'relative', background, touchAction: 'none', ...rest.style }}\n onPointerDown={composeEventHandlers(rest.onPointerDown, (event) => {\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n handleMove(event);\n })}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n if ((event.currentTarget as HTMLElement).hasPointerCapture(event.pointerId)) {\n handleMove(event);\n }\n })}\n onPointerUp={composeEventHandlers(rest.onPointerUp, (event) =>\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId),\n )}\n />\n );\n },\n);\nChannelSlider.displayName = 'ColorPicker.ChannelSlider';\n\nconst Swatch = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useColorPickerContext('ColorPicker.Swatch');\n const hex = hsvaToHex(ctx.value);\n return (\n <Primitive.div\n {...props}\n ref={forwardedRef}\n style={{\n background: hex,\n opacity: ctx.value.a,\n ...props.style,\n }}\n />\n );\n },\n);\nSwatch.displayName = 'ColorPicker.Swatch';\n\nexport { Root, Area, AreaThumb, ChannelSlider, Swatch };\n","export * from './file-upload';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface FileUploadContextValue {\n files: File[];\n addFiles: (files: FileList | File[]) => void;\n removeFile: (file: File) => void;\n clearFiles: () => void;\n isDragging: boolean;\n setIsDragging: (b: boolean) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number;\n maxFiles?: number;\n inputRef: React.RefObject<HTMLInputElement | null>;\n disabled?: boolean;\n}\n\nconst [FileUploadProvider, useFileUploadContext] = createContext<FileUploadContextValue>('FileUpload');\n\nexport interface FileUploadRootProps\n extends Omit<React.ComponentPropsWithoutRef<'div'>, 'defaultValue' | 'onError'> {\n asChild?: boolean;\n value?: File[];\n defaultValue?: File[];\n onValueChange?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number;\n maxFiles?: number;\n disabled?: boolean;\n onError?: (errors: { file: File; reason: 'size' | 'type' | 'count' }[]) => void;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, FileUploadRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = [],\n onValueChange,\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n disabled,\n onError,\n ...rest\n } = props;\n const [files = [], setFiles] = useControllableState<File[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [isDragging, setIsDragging] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const addFiles = (incoming: FileList | File[]) => {\n const arr = Array.from(incoming);\n const errors: { file: File; reason: 'size' | 'type' | 'count' }[] = [];\n const filtered = arr.filter((f) => {\n if (maxSize && f.size > maxSize) {\n errors.push({ file: f, reason: 'size' });\n return false;\n }\n if (accept) {\n const types = accept.split(',').map((s) => s.trim());\n const matches = types.some(\n (t) => t === f.type || (t.endsWith('/*') && f.type.startsWith(t.slice(0, -1))) || f.name.endsWith(t),\n );\n if (!matches) {\n errors.push({ file: f, reason: 'type' });\n return false;\n }\n }\n return true;\n });\n let next = multiple ? [...files, ...filtered] : filtered.slice(0, 1);\n if (maxFiles && next.length > maxFiles) {\n const overflow = next.slice(maxFiles);\n overflow.forEach((f) => errors.push({ file: f, reason: 'count' }));\n next = next.slice(0, maxFiles);\n }\n if (errors.length > 0) onError?.(errors);\n setFiles(next);\n };\n\n return (\n <FileUploadProvider\n files={files}\n addFiles={addFiles}\n removeFile={(file) => setFiles(files.filter((f) => f !== file))}\n clearFiles={() => setFiles([])}\n isDragging={isDragging}\n setIsDragging={setIsDragging}\n accept={accept}\n multiple={multiple}\n maxSize={maxSize}\n maxFiles={maxFiles}\n inputRef={inputRef}\n disabled={disabled}\n >\n <Primitive.div {...rest} ref={forwardedRef} />\n </FileUploadProvider>\n );\n },\n);\nRoot.displayName = 'FileUpload.Root';\n\nconst Dropzone = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useFileUploadContext('FileUpload.Dropzone');\n return (\n <Primitive.div\n role=\"button\"\n tabIndex={ctx.disabled ? -1 : 0}\n data-state={ctx.isDragging ? 'dragging' : 'idle'}\n data-disabled={ctx.disabled ? '' : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => {\n if (!ctx.disabled) ctx.inputRef.current?.click();\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n ctx.inputRef.current?.click();\n }\n })}\n onDragOver={composeEventHandlers(props.onDragOver, (event) => {\n event.preventDefault();\n ctx.setIsDragging(true);\n })}\n onDragLeave={composeEventHandlers(props.onDragLeave, () => ctx.setIsDragging(false))}\n onDrop={composeEventHandlers(props.onDrop, (event) => {\n event.preventDefault();\n ctx.setIsDragging(false);\n if (event.dataTransfer.files.length) ctx.addFiles(event.dataTransfer.files);\n })}\n />\n );\n },\n);\nDropzone.displayName = 'FileUpload.Dropzone';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentPropsWithoutRef<'input'>>(\n (props, forwardedRef) => {\n const ctx = useFileUploadContext('FileUpload.Input');\n const composedRef = useComposedRefs(forwardedRef, ctx.inputRef);\n return (\n <Primitive.input\n type=\"file\"\n accept={ctx.accept}\n multiple={ctx.multiple}\n disabled={ctx.disabled}\n style={{ display: 'none' }}\n {...props}\n ref={composedRef}\n onChange={composeEventHandlers(props.onChange, (event) => {\n if (event.currentTarget.files) ctx.addFiles(event.currentTarget.files);\n event.currentTarget.value = '';\n })}\n />\n );\n },\n);\nInput.displayName = 'FileUpload.Input';\n\nconst List = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, forwardedRef) => (\n <Primitive.ul {...props} ref={forwardedRef as React.Ref<HTMLUListElement>} />\n ),\n);\nList.displayName = 'FileUpload.List';\n\nconst Item: React.FC<{ file: File; children?: React.ReactNode }> = ({ file, children }) => {\n const ctx = useFileUploadContext('FileUpload.Item');\n return (\n <Primitive.li data-file-name={file.name}>\n {children ?? (\n <>\n <span>{file.name}</span>{' '}\n <button type=\"button\" onClick={() => ctx.removeFile(file)} aria-label={`Remove ${file.name}`}>\n ×\n </button>\n </>\n )}\n </Primitive.li>\n );\n};\nItem.displayName = 'FileUpload.Item';\n\nconst Trigger = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = useFileUploadContext('FileUpload.Trigger');\n return (\n <Primitive.button\n type=\"button\"\n disabled={ctx.disabled}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.inputRef.current?.click())}\n />\n );\n },\n);\nTrigger.displayName = 'FileUpload.Trigger';\n\nconst Clear = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = useFileUploadContext('FileUpload.Clear');\n return (\n <Primitive.button\n type=\"button\"\n disabled={ctx.disabled || ctx.files.length === 0}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => ctx.clearFiles())}\n />\n );\n },\n);\nClear.displayName = 'FileUpload.Clear';\n\nexport { Root, Dropzone, Input, Trigger, Clear, List, Item };\n","export * from './scroll-area';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useComposedRefs } from '@structyl/hooks';\n\ninterface ScrollAreaContextValue {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n viewport: HTMLDivElement | null;\n onViewportChange: (v: HTMLDivElement | null) => void;\n scrollHideDelay: number;\n}\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createContext<ScrollAreaContextValue>('ScrollArea');\n\nexport interface ScrollAreaRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n type?: 'auto' | 'always' | 'scroll' | 'hover';\n scrollHideDelay?: number;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, ScrollAreaRootProps>(\n (props, forwardedRef) => {\n const { type = 'hover', scrollHideDelay = 600, ...rest } = props;\n const [viewport, setViewport] = React.useState<HTMLDivElement | null>(null);\n return (\n <ScrollAreaProvider\n type={type}\n viewport={viewport}\n onViewportChange={setViewport}\n scrollHideDelay={scrollHideDelay}\n >\n <Primitive.div\n {...rest}\n ref={forwardedRef}\n style={{ position: 'relative', ...rest.style }}\n />\n </ScrollAreaProvider>\n );\n },\n);\nRoot.displayName = 'ScrollArea.Root';\n\nconst Viewport = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useScrollAreaContext('ScrollArea.Viewport');\n const composedRef = useComposedRefs(forwardedRef, ctx.onViewportChange);\n return (\n <Primitive.div\n data-structyl-scroll-area-viewport=\"\"\n tabIndex={props.tabIndex ?? 0}\n {...props}\n ref={composedRef}\n style={{\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n ...props.style,\n }}\n />\n );\n },\n);\nViewport.displayName = 'ScrollArea.Viewport';\n\nexport interface ScrollbarProps extends React.ComponentPropsWithoutRef<'div'> {\n orientation?: 'horizontal' | 'vertical';\n forceMount?: boolean;\n}\n\nconst Scrollbar = React.forwardRef<HTMLDivElement, ScrollbarProps>(\n (props, forwardedRef) => {\n const { orientation = 'vertical', forceMount, ...rest } = props;\n const ctx = useScrollAreaContext('ScrollArea.Scrollbar');\n const [visible, setVisible] = React.useState(ctx.type === 'always');\n const hideTimerRef = React.useRef(0);\n React.useEffect(() => {\n const v = ctx.viewport;\n if (!v) return;\n const show = () => {\n setVisible(true);\n if (ctx.type === 'scroll' || ctx.type === 'hover') {\n window.clearTimeout(hideTimerRef.current);\n hideTimerRef.current = window.setTimeout(() => setVisible(false), ctx.scrollHideDelay);\n }\n };\n v.addEventListener('scroll', show);\n if (ctx.type === 'hover') v.addEventListener('pointerenter', show);\n return () => {\n v.removeEventListener('scroll', show);\n v.removeEventListener('pointerenter', show);\n window.clearTimeout(hideTimerRef.current);\n };\n }, [ctx]);\n if (!forceMount && !visible) return null;\n return (\n <Primitive.div\n data-orientation={orientation}\n data-state={visible ? 'visible' : 'hidden'}\n {...rest}\n ref={forwardedRef}\n style={{\n position: 'absolute',\n [orientation === 'vertical' ? 'right' : 'bottom']: 0,\n [orientation === 'vertical' ? 'top' : 'left']: 0,\n [orientation === 'vertical' ? 'bottom' : 'right']: 0,\n touchAction: 'none',\n ...rest.style,\n }}\n />\n );\n },\n);\nScrollbar.displayName = 'ScrollArea.Scrollbar';\n\nconst Thumb = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useScrollAreaContext('ScrollArea.Thumb');\n const [size, setSize] = React.useState({ width: 0, height: 0, top: 0, left: 0 });\n React.useEffect(() => {\n const v = ctx.viewport;\n if (!v) return;\n const update = () => {\n const ratioY = v.clientHeight / v.scrollHeight;\n const ratioX = v.clientWidth / v.scrollWidth;\n setSize({\n width: ratioX * v.clientWidth,\n height: ratioY * v.clientHeight,\n top: (v.scrollTop / v.scrollHeight) * v.clientHeight,\n left: (v.scrollLeft / v.scrollWidth) * v.clientWidth,\n });\n };\n update();\n v.addEventListener('scroll', update);\n const ro = new ResizeObserver(update);\n ro.observe(v);\n return () => {\n v.removeEventListener('scroll', update);\n ro.disconnect();\n };\n }, [ctx]);\n return (\n <Primitive.div\n {...props}\n ref={forwardedRef}\n style={{\n height: size.height,\n width: size.width,\n transform: `translate(${size.left}px, ${size.top}px)`,\n ...props.style,\n }}\n />\n );\n },\n);\nThumb.displayName = 'ScrollArea.Thumb';\n\nconst Corner = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => <Primitive.div {...props} ref={forwardedRef} />,\n);\nCorner.displayName = 'ScrollArea.Corner';\n\nexport { Root, Viewport, Scrollbar, Thumb, Corner };\n","export * from './toolbar';\n","'use client';\n\nimport * as React from 'react';\nimport {\n createContext,\n Primitive,\n RovingFocusGroup,\n RovingFocusItem,\n useDirection,\n} from '@structyl/core';\n\ninterface ToolbarContextValue {\n orientation: 'horizontal' | 'vertical';\n dir: 'ltr' | 'rtl';\n loop: boolean;\n}\n\nconst [ToolbarProvider, useToolbarContext] = createContext<ToolbarContextValue>('Toolbar');\n\nexport interface ToolbarRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n loop?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, ToolbarRootProps>(\n (props, forwardedRef) => {\n const {\n orientation = 'horizontal',\n dir: dirProp,\n loop = true,\n ...rest\n } = props;\n const dir = useDirection(dirProp);\n return (\n <ToolbarProvider orientation={orientation} dir={dir} loop={loop}>\n <RovingFocusGroup\n asChild\n orientation={orientation}\n dir={dir}\n loop={loop}\n >\n <Primitive.div\n role=\"toolbar\"\n aria-orientation={orientation}\n dir={dir}\n {...rest}\n ref={forwardedRef}\n />\n </RovingFocusGroup>\n </ToolbarProvider>\n );\n },\n);\nRoot.displayName = 'Toolbar.Root';\n\nconst Button = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => (\n <RovingFocusItem asChild focusable={!props.disabled}>\n <Primitive.button type=\"button\" {...props} ref={forwardedRef} />\n </RovingFocusItem>\n ),\n);\nButton.displayName = 'Toolbar.Button';\n\nconst Link = React.forwardRef<HTMLAnchorElement, React.ComponentPropsWithoutRef<'a'>>(\n (props, forwardedRef) => (\n <RovingFocusItem asChild focusable>\n <Primitive.a {...props} ref={forwardedRef} />\n </RovingFocusItem>\n ),\n);\nLink.displayName = 'Toolbar.Link';\n\nconst Separator = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useToolbarContext('Toolbar.Separator');\n return (\n <Primitive.div\n role=\"separator\"\n aria-orientation={ctx.orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n {...props}\n ref={forwardedRef}\n />\n );\n },\n);\nSeparator.displayName = 'Toolbar.Separator';\n\nexport { Root, Button, Link, Separator };\n","export * from './resizable';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface ResizableContextValue {\n direction: 'horizontal' | 'vertical';\n panelRefs: React.RefObject<Map<string, HTMLDivElement>>;\n sizes: Map<string, number>;\n setSize: (id: string, size: number) => void;\n containerSize: number;\n onContainerSizeChange: (size: number) => void;\n}\n\nconst [ResizableProvider, useResizableContext] = createContext<ResizableContextValue>('Resizable');\n\nexport interface ResizableGroupProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n direction?: 'horizontal' | 'vertical';\n onLayout?: (sizes: number[]) => void;\n}\n\nconst Group = React.forwardRef<HTMLDivElement, ResizableGroupProps>(\n (props, forwardedRef) => {\n const { direction = 'horizontal', onLayout, ...rest } = props;\n const containerRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, containerRef);\n const panelRefs = React.useRef(new Map<string, HTMLDivElement>());\n const [sizes, setSizes] = React.useState(new Map<string, number>());\n const [containerSize, setContainerSize] = React.useState(0);\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const update = () => {\n setContainerSize(direction === 'horizontal' ? el.clientWidth : el.clientHeight);\n };\n update();\n const ro = new ResizeObserver(update);\n ro.observe(el);\n return () => ro.disconnect();\n }, [direction]);\n React.useEffect(() => {\n onLayout?.(Array.from(sizes.values()));\n }, [sizes, onLayout]);\n return (\n <ResizableProvider\n direction={direction}\n panelRefs={panelRefs}\n sizes={sizes}\n setSize={(id, size) => setSizes((prev) => new Map(prev).set(id, size))}\n containerSize={containerSize}\n onContainerSizeChange={setContainerSize}\n >\n <Primitive.div\n data-direction={direction}\n {...rest}\n ref={composedRef}\n style={{\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n ...rest.style,\n }}\n />\n </ResizableProvider>\n );\n },\n);\nGroup.displayName = 'Resizable.Group';\n\nexport interface ResizablePanelProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n id: string;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n}\n\nconst Panel = React.forwardRef<HTMLDivElement, ResizablePanelProps>(\n (props, forwardedRef) => {\n const { id, defaultSize = 50, minSize = 10, maxSize = 90, ...rest } = props;\n const ctx = useResizableContext('Resizable.Panel');\n const ref = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref, (node) => {\n if (node) ctx.panelRefs.current?.set(id, node);\n else ctx.panelRefs.current?.delete(id);\n });\n React.useEffect(() => {\n if (!ctx.sizes.has(id)) ctx.setSize(id, defaultSize);\n }, [ctx, id, defaultSize]);\n const size = ctx.sizes.get(id) ?? defaultSize;\n return (\n <Primitive.div\n data-panel-id={id}\n data-min-size={minSize}\n data-max-size={maxSize}\n tabIndex={rest.tabIndex ?? 0}\n {...rest}\n ref={composedRef}\n style={{\n flex: `${size} 1 0`,\n overflow: 'auto',\n ...rest.style,\n }}\n />\n );\n },\n);\nPanel.displayName = 'Resizable.Panel';\n\nexport interface ResizableHandleProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n /** Panel IDs on each side of the handle */\n between: [string, string];\n}\n\nconst Handle = React.forwardRef<HTMLDivElement, ResizableHandleProps>(\n (props, forwardedRef) => {\n const { between, ...rest } = props;\n const ctx = useResizableContext('Resizable.Handle');\n const startRef = React.useRef<{ pos: number; sizes: [number, number] } | null>(null);\n const [a, b] = between;\n const sumSizes = (ctx.sizes.get(a) ?? 0) + (ctx.sizes.get(b) ?? 0);\n return (\n <Primitive.div\n role=\"separator\"\n aria-orientation={ctx.direction === 'horizontal' ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(((ctx.sizes.get(a) ?? 0) / sumSizes) * 100) || 50}\n tabIndex={0}\n {...rest}\n ref={forwardedRef}\n style={{\n cursor: ctx.direction === 'horizontal' ? 'col-resize' : 'row-resize',\n touchAction: 'none',\n ...rest.style,\n }}\n onPointerDown={composeEventHandlers(rest.onPointerDown, (event) => {\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n startRef.current = {\n pos: ctx.direction === 'horizontal' ? event.clientX : event.clientY,\n sizes: [ctx.sizes.get(a) ?? 0, ctx.sizes.get(b) ?? 0],\n };\n })}\n onPointerMove={composeEventHandlers(rest.onPointerMove, (event) => {\n if (!startRef.current) return;\n if (!(event.currentTarget as HTMLElement).hasPointerCapture(event.pointerId)) return;\n const pos = ctx.direction === 'horizontal' ? event.clientX : event.clientY;\n const delta = pos - startRef.current.pos;\n const pxPerUnit = ctx.containerSize / ((startRef.current.sizes[0] ?? 0) + (startRef.current.sizes[1] ?? 0));\n const deltaUnits = delta / pxPerUnit;\n const newA = (startRef.current.sizes[0] ?? 0) + deltaUnits;\n const newB = (startRef.current.sizes[1] ?? 0) - deltaUnits;\n if (newA >= 5 && newB >= 5) {\n ctx.setSize(a, newA);\n ctx.setSize(b, newB);\n }\n })}\n onPointerUp={composeEventHandlers(rest.onPointerUp, (event) => {\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\n startRef.current = null;\n })}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n const isInline = ctx.direction === 'horizontal';\n const decrease = isInline ? 'ArrowLeft' : 'ArrowUp';\n const increase = isInline ? 'ArrowRight' : 'ArrowDown';\n const step = event.shiftKey ? 10 : 1;\n const sizeA = ctx.sizes.get(a) ?? 0;\n const sizeB = ctx.sizes.get(b) ?? 0;\n if (event.key === decrease && sizeA > 5) {\n ctx.setSize(a, sizeA - step);\n ctx.setSize(b, sizeB + step);\n event.preventDefault();\n } else if (event.key === increase && sizeB > 5) {\n ctx.setSize(a, sizeA + step);\n ctx.setSize(b, sizeB - step);\n event.preventDefault();\n }\n })}\n />\n );\n },\n);\nHandle.displayName = 'Resizable.Handle';\n\nexport { Group, Panel, Handle };\n","export * from './carousel';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useComposedRefs, useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface CarouselContextValue {\n index: number;\n setIndex: (i: number) => void;\n count: number;\n setCount: React.Dispatch<React.SetStateAction<number>>;\n orientation: 'horizontal' | 'vertical';\n loop: boolean;\n next: () => void;\n prev: () => void;\n goTo: (i: number) => void;\n}\n\nconst [CarouselProvider, useCarouselContext] = createContext<CarouselContextValue>('Carousel');\n\nexport interface CarouselRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n orientation?: 'horizontal' | 'vertical';\n loop?: boolean;\n index?: number;\n defaultIndex?: number;\n onIndexChange?: (i: number) => void;\n autoPlayInterval?: number;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, CarouselRootProps>(\n (props, forwardedRef) => {\n const {\n orientation = 'horizontal',\n loop = false,\n index: indexProp,\n defaultIndex = 0,\n onIndexChange,\n autoPlayInterval,\n ...rest\n } = props;\n const [index = 0, setIndex] = useControllableState<number>({\n prop: indexProp,\n defaultProp: defaultIndex,\n onChange: onIndexChange,\n });\n const [count, setCount] = React.useState(0);\n const next = React.useCallback(\n () => setIndex((i = 0) => (loop ? (i + 1) % count : Math.min(i + 1, count - 1))),\n [count, loop, setIndex],\n );\n const prev = React.useCallback(\n () => setIndex((i = 0) => (loop ? (i - 1 + count) % count : Math.max(i - 1, 0))),\n [count, loop, setIndex],\n );\n const goTo = React.useCallback((i: number) => setIndex(i), [setIndex]);\n React.useEffect(() => {\n if (!autoPlayInterval || autoPlayInterval <= 0) return undefined;\n const id = window.setInterval(next, autoPlayInterval);\n return () => window.clearInterval(id);\n }, [autoPlayInterval, next]);\n return (\n <CarouselProvider\n index={index}\n setIndex={setIndex as (i: number) => void}\n count={count}\n setCount={setCount as React.Dispatch<React.SetStateAction<number>>}\n orientation={orientation}\n loop={loop}\n next={next}\n prev={prev}\n goTo={goTo}\n >\n <Primitive.div\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-orientation={orientation}\n {...rest}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(rest.onKeyDown, (event) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault();\n prev();\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault();\n next();\n }\n })}\n />\n </CarouselProvider>\n );\n },\n);\nRoot.displayName = 'Carousel.Root';\n\nconst Viewport = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => (\n <Primitive.div\n {...props}\n ref={forwardedRef}\n style={{ overflow: 'hidden', ...props.style }}\n />\n ),\n);\nViewport.displayName = 'Carousel.Viewport';\n\nconst Container = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useCarouselContext('Carousel.Container');\n const translation =\n ctx.orientation === 'horizontal'\n ? `translateX(-${ctx.index * 100}%)`\n : `translateY(-${ctx.index * 100}%)`;\n return (\n <Primitive.div\n {...props}\n ref={forwardedRef}\n style={{\n display: 'flex',\n flexDirection: ctx.orientation === 'horizontal' ? 'row' : 'column',\n transform: translation,\n transition: 'transform 300ms ease',\n ...props.style,\n }}\n />\n );\n },\n);\nContainer.displayName = 'Carousel.Container';\n\nconst Slide = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useCarouselContext('Carousel.Slide');\n const ref = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n ctx.setCount(c => c + 1);\n return () => ctx.setCount(c => Math.max(0, c - 1));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n <Primitive.div\n role=\"group\"\n aria-roledescription=\"slide\"\n {...props}\n ref={composedRef}\n style={{ flex: '0 0 100%', minWidth: 0, ...props.style }}\n />\n );\n },\n);\nSlide.displayName = 'Carousel.Slide';\n\nconst Previous = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = useCarouselContext('Carousel.Previous');\n const disabled = !ctx.loop && ctx.index === 0;\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Previous slide\"\n disabled={disabled}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, ctx.prev)}\n />\n );\n },\n);\nPrevious.displayName = 'Carousel.Previous';\n\nconst Next = React.forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>(\n (props, forwardedRef) => {\n const ctx = useCarouselContext('Carousel.Next');\n const disabled = !ctx.loop && ctx.index === ctx.count - 1;\n return (\n <Primitive.button\n type=\"button\"\n aria-label=\"Next slide\"\n disabled={disabled}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, ctx.next)}\n />\n );\n },\n);\nNext.displayName = 'Carousel.Next';\n\nexport { Root, Viewport, Container, Slide, Previous, Next };\n","export * from './tree';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface TreeContextValue {\n expanded: Set<string>;\n setExpanded: (next: Set<string>) => void;\n selected?: string;\n setSelected: (id?: string) => void;\n focused?: string;\n setFocused: (id?: string) => void;\n}\n\nconst [TreeProvider, useTreeContext] = createContext<TreeContextValue>('Tree');\n\nexport interface TreeRootProps extends React.ComponentPropsWithoutRef<'ul'> {\n asChild?: boolean;\n defaultExpanded?: string[];\n expanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n defaultSelected?: string;\n selected?: string;\n onSelectedChange?: (id: string | undefined) => void;\n}\n\nconst Root = React.forwardRef<HTMLUListElement, TreeRootProps>(\n (props, forwardedRef) => {\n const {\n defaultExpanded = [],\n expanded: expandedProp,\n onExpandedChange,\n defaultSelected,\n selected: selectedProp,\n onSelectedChange,\n ...rest\n } = props;\n const [expandedArr = [], setExpandedArr] = useControllableState<string[]>({\n prop: expandedProp,\n defaultProp: defaultExpanded,\n onChange: onExpandedChange,\n });\n const [selected, setSelected] = useControllableState<string | undefined>({\n prop: selectedProp,\n defaultProp: defaultSelected,\n onChange: onSelectedChange,\n });\n const [focused, setFocused] = React.useState<string | undefined>();\n const expanded = React.useMemo(() => new Set(expandedArr), [expandedArr]);\n return (\n <TreeProvider\n expanded={expanded}\n setExpanded={(next) => setExpandedArr(Array.from(next))}\n selected={selected}\n setSelected={setSelected}\n focused={focused}\n setFocused={setFocused}\n >\n <Primitive.ul role=\"tree\" {...rest} ref={forwardedRef as React.Ref<HTMLUListElement>} />\n </TreeProvider>\n );\n },\n);\nRoot.displayName = 'Tree.Root';\n\ninterface TreeItemContextValue {\n id: string;\n level: number;\n hasChildren: boolean;\n}\nconst [TreeItemProvider, useTreeItemContext] = createContext<TreeItemContextValue>('TreeItem');\n\nexport interface TreeItemProps extends React.ComponentPropsWithoutRef<'li'> {\n asChild?: boolean;\n id: string;\n hasChildren?: boolean;\n level?: number;\n}\n\nconst Item = React.forwardRef<HTMLLIElement, TreeItemProps>(\n (props, forwardedRef) => {\n const { id, hasChildren = false, level = 1, ...rest } = props;\n const ctx = useTreeContext('Tree.Item');\n const expanded = ctx.expanded.has(id);\n const selected = ctx.selected === id;\n return (\n <TreeItemProvider id={id} level={level} hasChildren={hasChildren}>\n <Primitive.li\n role=\"treeitem\"\n aria-level={level}\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={selected}\n data-state={expanded ? 'open' : 'closed'}\n data-selected={selected ? '' : undefined}\n {...rest}\n ref={forwardedRef as React.Ref<HTMLLIElement>}\n />\n </TreeItemProvider>\n );\n },\n);\nItem.displayName = 'Tree.Item';\n\nconst Trigger = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n (props, forwardedRef) => {\n const ctx = useTreeContext('Tree.Trigger');\n const item = useTreeItemContext('Tree.Trigger');\n const expanded = ctx.expanded.has(item.id);\n return (\n <Primitive.div\n tabIndex={ctx.focused === item.id || (ctx.focused === undefined && item.level === 1) ? 0 : -1}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => {\n ctx.setSelected(item.id);\n if (item.hasChildren) {\n const next = new Set(ctx.expanded);\n if (next.has(item.id)) next.delete(item.id);\n else next.add(item.id);\n ctx.setExpanded(next);\n }\n })}\n onFocus={composeEventHandlers(props.onFocus, () => ctx.setFocused(item.id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (item.hasChildren && !expanded) {\n const next = new Set(ctx.expanded);\n next.add(item.id);\n ctx.setExpanded(next);\n }\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (item.hasChildren && expanded) {\n const next = new Set(ctx.expanded);\n next.delete(item.id);\n ctx.setExpanded(next);\n }\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n ctx.setSelected(item.id);\n }\n })}\n />\n );\n },\n);\nTrigger.displayName = 'Tree.Trigger';\n\nconst Group = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n (props, forwardedRef) => {\n const item = useTreeItemContext('Tree.Group');\n const ctx = useTreeContext('Tree.Group');\n const expanded = ctx.expanded.has(item.id);\n if (!expanded) return null;\n return <Primitive.ul role=\"group\" {...props} ref={forwardedRef as React.Ref<HTMLUListElement>} />;\n },\n);\nGroup.displayName = 'Tree.Group';\n\nexport { Root, Item, Trigger, Group };\n","export * from './editable';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface EditableContextValue {\n value: string;\n setValue: (v: string) => void;\n editing: boolean;\n setEditing: (b: boolean) => void;\n submitMode: 'enter' | 'blur' | 'both';\n inputRef: React.RefObject<HTMLInputElement | null>;\n onSubmit?: (value: string) => void;\n onCancel?: () => void;\n disabled?: boolean;\n}\n\nconst [EditableProvider, useEditableContext] = createContext<EditableContextValue>('Editable');\n\nexport interface EditableRootProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSubmit'> {\n asChild?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n editing?: boolean;\n defaultEditing?: boolean;\n onEditingChange?: (b: boolean) => void;\n submitMode?: 'enter' | 'blur' | 'both';\n onSubmit?: (value: string) => void;\n onCancel?: () => void;\n disabled?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, EditableRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = '',\n onValueChange,\n editing: editingProp,\n defaultEditing = false,\n onEditingChange,\n submitMode = 'both',\n onSubmit,\n onCancel,\n disabled,\n ...rest\n } = props;\n const [value = '', setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [editing = false, setEditing] = useControllableState<boolean>({\n prop: editingProp,\n defaultProp: defaultEditing,\n onChange: onEditingChange,\n });\n const inputRef = React.useRef<HTMLInputElement>(null);\n return (\n <EditableProvider\n value={value}\n setValue={(v) => setValue(v)}\n editing={editing}\n setEditing={(b) => setEditing(b)}\n submitMode={submitMode}\n inputRef={inputRef}\n onSubmit={onSubmit}\n onCancel={onCancel}\n disabled={disabled}\n >\n <Primitive.div data-editing={editing ? '' : undefined} {...rest} ref={forwardedRef} />\n </EditableProvider>\n );\n },\n);\nRoot.displayName = 'Editable.Root';\n\nconst Preview = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n (props, forwardedRef) => {\n const ctx = useEditableContext('Editable.Preview');\n if (ctx.editing) return null;\n return (\n <Primitive.span\n tabIndex={0}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => {\n if (!ctx.disabled) {\n ctx.setEditing(true);\n queueMicrotask(() => ctx.inputRef.current?.focus());\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n ctx.setEditing(true);\n }\n })}\n >\n {ctx.value || props.children}\n </Primitive.span>\n );\n },\n);\nPreview.displayName = 'Editable.Preview';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentPropsWithoutRef<'input'>>(\n (props, forwardedRef) => {\n const ctx = useEditableContext('Editable.Input');\n const composedRef = useComposedRefs(forwardedRef, ctx.inputRef);\n const [local, setLocal] = React.useState(ctx.value);\n React.useEffect(() => {\n if (ctx.editing) setLocal(ctx.value);\n }, [ctx.editing, ctx.value]);\n if (!ctx.editing) return null;\n const submit = () => {\n ctx.setValue(local);\n ctx.onSubmit?.(local);\n ctx.setEditing(false);\n };\n const cancel = () => {\n setLocal(ctx.value);\n ctx.onCancel?.();\n ctx.setEditing(false);\n };\n return (\n <Primitive.input\n value={local}\n disabled={ctx.disabled}\n {...props}\n ref={composedRef}\n onChange={composeEventHandlers(props.onChange, (event) => setLocal(event.currentTarget.value))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Enter' && (ctx.submitMode === 'enter' || ctx.submitMode === 'both')) {\n submit();\n } else if (event.key === 'Escape') cancel();\n })}\n onBlur={composeEventHandlers(props.onBlur, () => {\n if (ctx.submitMode === 'blur' || ctx.submitMode === 'both') submit();\n })}\n />\n );\n },\n);\nInput.displayName = 'Editable.Input';\n\nexport { Root, Preview, Input };\n","export * from './tags-input';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\ninterface TagsInputContextValue {\n tags: string[];\n addTag: (tag: string) => boolean;\n removeTag: (index: number) => void;\n removeLast: () => void;\n inputValue: string;\n setInputValue: (v: string) => void;\n delimiters: string[];\n disabled?: boolean;\n maxTags?: number;\n duplicateTags: boolean;\n}\n\nconst [TagsInputProvider, useTagsInputContext] = createContext<TagsInputContextValue>('TagsInput');\n\nexport interface TagsInputRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (tags: string[]) => void;\n delimiters?: string[];\n maxTags?: number;\n duplicateTags?: boolean;\n disabled?: boolean;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, TagsInputRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = [],\n onValueChange,\n delimiters = [',', 'Enter'],\n maxTags,\n duplicateTags = false,\n disabled,\n ...rest\n } = props;\n const [tags = [], setTags] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [inputValue, setInputValue] = React.useState('');\n const addTag = (raw: string): boolean => {\n const trimmed = raw.trim();\n if (!trimmed) return false;\n if (!duplicateTags && tags.includes(trimmed)) return false;\n if (maxTags && tags.length >= maxTags) return false;\n setTags([...tags, trimmed]);\n return true;\n };\n const removeTag = (i: number) => setTags(tags.filter((_, idx) => idx !== i));\n const removeLast = () => setTags(tags.slice(0, -1));\n return (\n <TagsInputProvider\n tags={tags}\n addTag={addTag}\n removeTag={removeTag}\n removeLast={removeLast}\n inputValue={inputValue}\n setInputValue={setInputValue}\n delimiters={delimiters}\n disabled={disabled}\n maxTags={maxTags}\n duplicateTags={duplicateTags}\n >\n <Primitive.div role=\"group\" {...rest} ref={forwardedRef} />\n </TagsInputProvider>\n );\n },\n);\nRoot.displayName = 'TagsInput.Root';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentPropsWithoutRef<'input'>>(\n (props, forwardedRef) => {\n const ctx = useTagsInputContext('TagsInput.Input');\n return (\n <Primitive.input\n value={ctx.inputValue}\n disabled={ctx.disabled}\n {...props}\n ref={forwardedRef}\n onChange={composeEventHandlers(props.onChange, (event) => ctx.setInputValue(event.currentTarget.value))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (ctx.delimiters.includes(event.key)) {\n if (ctx.addTag(ctx.inputValue)) {\n ctx.setInputValue('');\n event.preventDefault();\n }\n } else if (event.key === 'Backspace' && ctx.inputValue === '') {\n ctx.removeLast();\n }\n })}\n onPaste={composeEventHandlers(props.onPaste, (event) => {\n const text = event.clipboardData.getData('text');\n const parts = text.split(new RegExp(ctx.delimiters.filter((d) => d !== 'Enter').join('|') || ','));\n if (parts.length > 1) {\n event.preventDefault();\n parts.forEach((p) => ctx.addTag(p));\n ctx.setInputValue('');\n }\n })}\n />\n );\n },\n);\nInput.displayName = 'TagsInput.Input';\n\nconst Tag: React.FC<{ index: number; children?: React.ReactNode }> = ({ index, children }) => {\n const ctx = useTagsInputContext('TagsInput.Tag');\n const tag = ctx.tags[index];\n if (tag === undefined) return null;\n return (\n <Primitive.span data-tag-index={index}>\n {children ?? (\n <>\n {tag}{' '}\n <button type=\"button\" onClick={() => ctx.removeTag(index)} aria-label={`Remove ${tag}`}>\n ×\n </button>\n </>\n )}\n </Primitive.span>\n );\n};\nTag.displayName = 'TagsInput.Tag';\n\nconst Items: React.FC<{\n children: (tag: string, index: number) => React.ReactNode;\n}> = ({ children }) => {\n const ctx = useTagsInputContext('TagsInput.Items');\n return <>{ctx.tags.map(children)}</>;\n};\nItems.displayName = 'TagsInput.Items';\n\nexport { Root, Input, Tag, Items };\n","export * from './mentions';\n","'use client';\n\nimport * as React from 'react';\nimport { createContext, Primitive, Portal as PortalPrimitive, Presence } from '@structyl/core';\nimport { useControllableState, useComposedRefs } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nexport interface MentionSuggestion {\n id: string;\n label: string;\n}\n\ninterface MentionsContextValue {\n value: string;\n setValue: (v: string) => void;\n triggerChar: string;\n query: string;\n setQuery: (q: string) => void;\n open: boolean;\n setOpen: (o: boolean) => void;\n inputRef: React.RefObject<HTMLTextAreaElement | null>;\n insertAt: number;\n setInsertAt: (n: number) => void;\n selectSuggestion: (s: MentionSuggestion) => void;\n highlighted: number;\n setHighlighted: (n: number) => void;\n}\n\nconst [MentionsProvider, useMentionsContext] = createContext<MentionsContextValue>('Mentions');\n\nexport interface MentionsRootProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n triggerChar?: string;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, MentionsRootProps>(\n (props, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue = '',\n onValueChange,\n triggerChar = '@',\n ...rest\n } = props;\n const [value = '', setValue] = useControllableState<string>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n const [query, setQuery] = React.useState('');\n const [open, setOpen] = React.useState(false);\n const [insertAt, setInsertAt] = React.useState(0);\n const [highlighted, setHighlighted] = React.useState(0);\n const inputRef = React.useRef<HTMLTextAreaElement>(null);\n const selectSuggestion = (s: MentionSuggestion) => {\n const before = value.slice(0, insertAt);\n const queryEnd = insertAt + 1 + query.length;\n const after = value.slice(queryEnd);\n setValue(`${before}${triggerChar}${s.label} ${after}`);\n setOpen(false);\n setQuery('');\n };\n return (\n <MentionsProvider\n value={value}\n setValue={(v) => setValue(v)}\n triggerChar={triggerChar}\n query={query}\n setQuery={setQuery}\n open={open}\n setOpen={setOpen}\n inputRef={inputRef}\n insertAt={insertAt}\n setInsertAt={setInsertAt}\n selectSuggestion={selectSuggestion}\n highlighted={highlighted}\n setHighlighted={setHighlighted}\n >\n <Primitive.div {...rest} ref={forwardedRef} />\n </MentionsProvider>\n );\n },\n);\nRoot.displayName = 'Mentions.Root';\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.ComponentPropsWithoutRef<'textarea'>>(\n (props, forwardedRef) => {\n const ctx = useMentionsContext('Mentions.Textarea');\n const composedRef = useComposedRefs(forwardedRef, ctx.inputRef);\n return (\n <textarea\n value={ctx.value}\n {...props}\n ref={composedRef as React.Ref<HTMLTextAreaElement>}\n onChange={composeEventHandlers(props.onChange, (event) => {\n const v = event.currentTarget.value;\n ctx.setValue(v);\n const caret = event.currentTarget.selectionStart;\n // Look back for triggerChar\n const before = v.slice(0, caret);\n const lastTrigger = before.lastIndexOf(ctx.triggerChar);\n if (lastTrigger >= 0) {\n const after = before.slice(lastTrigger + 1);\n if (!after.includes(' ') && !after.includes('\\n')) {\n ctx.setQuery(after);\n ctx.setInsertAt(lastTrigger);\n ctx.setOpen(true);\n ctx.setHighlighted(0);\n return;\n }\n }\n ctx.setOpen(false);\n ctx.setQuery('');\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (!ctx.open) return;\n if (event.key === 'Escape') ctx.setOpen(false);\n else if (event.key === 'ArrowDown') {\n event.preventDefault();\n ctx.setHighlighted(ctx.highlighted + 1);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n ctx.setHighlighted(Math.max(0, ctx.highlighted - 1));\n }\n })}\n />\n );\n },\n);\nTextarea.displayName = 'Mentions.Textarea';\n\nconst SuggestionsContext = React.createContext<{ items: MentionSuggestion[] } | null>(null);\n\nexport interface SuggestionsProps {\n items: MentionSuggestion[];\n children?: React.ReactNode;\n container?: Element | DocumentFragment | null;\n /** Render inline (no Portal). Use this when the parent is position:relative. */\n disablePortal?: boolean;\n}\n\nconst Suggestions: React.FC<SuggestionsProps> = ({ items, children, container, disablePortal = false }) => {\n const ctx = useMentionsContext('Mentions.Suggestions');\n const filtered = items.filter((i) => i.label.toLowerCase().startsWith(ctx.query.toLowerCase()));\n return (\n <SuggestionsContext.Provider value={{ items: filtered }}>\n <Presence present={ctx.open && filtered.length > 0}>\n {disablePortal ? (\n children as React.ReactElement\n ) : (\n <PortalPrimitive container={container ?? undefined}>{children}</PortalPrimitive>\n )}\n </Presence>\n </SuggestionsContext.Provider>\n );\n};\nSuggestions.displayName = 'Mentions.Suggestions';\n\nconst Items: React.FC<{\n children: (item: MentionSuggestion, index: number, highlighted: boolean) => React.ReactNode;\n}> = ({ children }) => {\n const ctx = useMentionsContext('Mentions.Items');\n const items = React.useContext(SuggestionsContext)?.items ?? [];\n return <>{items.map((item, i) => children(item, i, ctx.highlighted === i))}</>;\n};\nItems.displayName = 'Mentions.Items';\n\nconst Item: React.FC<{\n suggestion: MentionSuggestion;\n index: number;\n children?: React.ReactNode;\n}> = ({ suggestion, index, children }) => {\n const ctx = useMentionsContext('Mentions.Item');\n return (\n <Primitive.div\n role=\"option\"\n data-highlighted={ctx.highlighted === index ? '' : undefined}\n onPointerMove={() => ctx.setHighlighted(index)}\n onClick={() => ctx.selectSuggestion(suggestion)}\n >\n {children ?? suggestion.label}\n </Primitive.div>\n );\n};\nItem.displayName = 'Mentions.Item';\n\nexport { Root, Textarea, Suggestions, Items, Item };\n","export { Root, Header, Title, Description, Content, Footer } from './card';\nexport type { CardRootProps, CardSectionProps } from './card.types';\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport type { CardRootProps, CardSectionProps } from './card.types';\n\nconst Root = React.forwardRef<HTMLDivElement, CardRootProps>((props, forwardedRef) => {\n return <Primitive.div {...props} ref={forwardedRef} data-structyl-card=\"\" />;\n});\nRoot.displayName = 'Card.Root';\n\nconst Header = React.forwardRef<HTMLDivElement, CardSectionProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} data-structyl-card-header=\"\" />\n));\nHeader.displayName = 'Card.Header';\n\nconst Title = React.forwardRef<HTMLDivElement, CardSectionProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} data-structyl-card-title=\"\" />\n));\nTitle.displayName = 'Card.Title';\n\nconst Description = React.forwardRef<HTMLDivElement, CardSectionProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} data-structyl-card-description=\"\" />\n));\nDescription.displayName = 'Card.Description';\n\nconst Content = React.forwardRef<HTMLDivElement, CardSectionProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} data-structyl-card-content=\"\" />\n));\nContent.displayName = 'Card.Content';\n\nconst Footer = React.forwardRef<HTMLDivElement, CardSectionProps>((props, forwardedRef) => (\n <Primitive.div {...props} ref={forwardedRef} data-structyl-card-footer=\"\" />\n));\nFooter.displayName = 'Card.Footer';\n\nexport { Root, Header, Title, Description, Content, Footer };\nexport type { CardRootProps, CardSectionProps };\n","'use client';\n\nimport * as React from 'react';\n\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ratio is width / height, e.g. 16/9 -> 16/9 */\n ratio?: number;\n}\n\nconst AspectRatio = React.forwardRef<HTMLDivElement, AspectRatioProps>((props, ref) => {\n const { ratio = 1, style, children, ...rest } = props;\n const paddingTop = `${(1 / ratio) * 100}%`;\n\n return (\n <div ref={ref} {...rest} style={{ position: 'relative', width: '100%', ...style }}>\n <div aria-hidden style={{ width: '100%', paddingTop }} />\n <div style={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 }}>{children}</div>\n </div>\n );\n});\nAspectRatio.displayName = 'AspectRatio';\n\nexport { AspectRatio };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\nimport type { SwitchProps } from './switch.types';\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>((props, forwardedRef) => {\n const {\n checked: checkedProp,\n defaultChecked,\n onCheckedChange,\n disabled,\n required,\n name,\n value = 'on',\n onClick,\n ...rest\n } = props;\n\n const [checked = false, setChecked] = useControllableState<boolean>({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange,\n });\n\n return (\n <>\n <Primitive.button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-required={required}\n data-state={checked ? 'checked' : 'unchecked'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...rest}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, () => {\n if (disabled) return;\n setChecked((prev) => !prev);\n })}\n />\n {name ? (\n <input\n type=\"checkbox\"\n aria-hidden\n tabIndex={-1}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n readOnly\n style={{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n width: 0,\n height: 0,\n }}\n />\n ) : null}\n </>\n );\n});\nSwitch.displayName = 'Switch';\n\nexport { Switch };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\nimport { useControllableState } from '@structyl/hooks';\nimport { composeEventHandlers } from '@structyl/utils';\n\nexport type CheckedState = boolean | 'indeterminate';\n\ninterface CheckboxContextValue {\n checked: CheckedState;\n disabled?: boolean;\n}\n\nconst CheckboxContext = React.createContext<CheckboxContextValue>({ checked: false });\n\nexport interface CheckboxProps\n extends Omit<React.ComponentPropsWithoutRef<'button'>, 'value' | 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n onCheckedChange?: (checked: CheckedState) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: string;\n asChild?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>((props, forwardedRef) => {\n const {\n checked: checkedProp,\n defaultChecked,\n onCheckedChange,\n disabled,\n required,\n name,\n value = 'on',\n onClick,\n onKeyDown,\n ...rest\n } = props;\n\n const [checked = false, setChecked] = useControllableState<CheckedState>({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange,\n });\n\n return (\n <CheckboxContext.Provider value={{ checked, disabled }}>\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={checked === 'indeterminate' ? 'mixed' : checked}\n aria-required={required}\n data-state={\n checked === 'indeterminate' ? 'indeterminate' : checked ? 'checked' : 'unchecked'\n }\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...rest}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // Per APG: Enter should NOT toggle checkbox (only Space)\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, () => {\n if (disabled) return;\n setChecked((prev) => (prev === 'indeterminate' ? true : !prev));\n })}\n />\n {name ? (\n <input\n type=\"checkbox\"\n aria-hidden\n tabIndex={-1}\n name={name}\n value={value}\n checked={checked === true}\n required={required}\n disabled={disabled}\n readOnly\n style={{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n width: 0,\n height: 0,\n }}\n />\n ) : null}\n </CheckboxContext.Provider>\n );\n});\nCheckbox.displayName = 'Checkbox';\n\ninterface CheckboxIndicatorProps extends React.ComponentPropsWithoutRef<'span'> {\n asChild?: boolean;\n forceMount?: boolean;\n 'data-disabled'?: string | boolean;\n}\n\nconst CheckboxIndicator = React.forwardRef<HTMLSpanElement, CheckboxIndicatorProps>(\n (props, forwardedRef) => {\n const { forceMount, 'data-disabled': dataDisabled, ...rest } = props;\n const { checked } = React.useContext(CheckboxContext);\n\n if (!forceMount && !checked) return null;\n\n return (\n <Primitive.span\n data-state={checked === 'indeterminate' ? 'indeterminate' : checked ? 'checked' : 'unchecked'}\n data-disabled={dataDisabled}\n {...rest}\n ref={forwardedRef}\n />\n );\n },\n);\nCheckboxIndicator.displayName = 'CheckboxIndicator';\n\nexport { Checkbox, CheckboxIndicator };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\n\nexport interface LabelProps extends React.ComponentPropsWithoutRef<'label'> {\n asChild?: boolean;\n}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>((props, forwardedRef) => (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // Prevent text selection on double-click but allow form control focus\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n props.onMouseDown?.(event);\n }}\n />\n));\nLabel.displayName = 'Label';\n\nexport { Label };\n","'use client';\n\nimport * as React from 'react';\nimport { Primitive } from '@structyl/core';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<'div'> {\n orientation?: Orientation;\n decorative?: boolean;\n asChild?: boolean;\n}\n\nconst Separator = React.forwardRef<HTMLDivElement, SeparatorProps>((props, forwardedRef) => {\n const { decorative, orientation = 'horizontal', ...rest } = props;\n const ariaProps = decorative\n ? { role: 'none' as const }\n : { 'aria-orientation': orientation, role: 'separator' as const };\n\n return (\n <Primitive.div\n data-orientation={orientation}\n {...ariaProps}\n {...rest}\n ref={forwardedRef}\n />\n );\n});\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n","import * as React from 'react';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'text' | 'rect' | 'circle';\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant = 'rect', ...props }, ref) => {\n const base = 'bg-muted/50 animate-pulse';\n const shape =\n variant === 'text'\n ? 'h-4 rounded-md'\n : variant === 'circle'\n ? 'h-10 w-10 rounded-full'\n : 'h-6 rounded-md';\n\n return (\n <div\n ref={ref}\n className={[base, shape, className].filter(Boolean).join(' ')}\n aria-hidden\n {...props}\n />\n );\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\nexport { Skeleton };\n","import * as React from 'react';\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size = 'md', ...props }, ref) => {\n const sizeClass = size === 'sm' ? 'h-3 w-3' : size === 'lg' ? 'h-6 w-6' : 'h-4 w-4';\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n className={[sizeClass, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n },\n);\n\nSpinner.displayName = 'Spinner';\n\nexport { Spinner };\n","import * as React from 'react';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: 'default' | 'outline';\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = 'default', children, ...props }, ref) => {\n const base = 'inline-flex items-center rounded-full px-2 py-0.5 text-sm font-medium';\n const style =\n variant === 'outline'\n ? 'bg-transparent border border-input'\n : 'bg-primary text-primary-foreground';\n\n return (\n <span ref={ref} className={[base, style, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </span>\n );\n },\n);\n\nBadge.displayName = 'Badge';\n\nexport { Badge };\n","import * as React from 'react';\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'success' | 'warning' | 'destructive' | 'info';\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ children, variant = 'default', ...props }, ref) => (\n <div ref={ref} role=\"alert\" data-variant={variant} {...props}>\n {children}\n </div>\n ),\n);\n\nAlert.displayName = 'Alert';\n\nexport { Alert };\n","'use client';\n\nimport * as React from 'react';\nimport { useControllableState } from '@structyl/hooks';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n value?: string;\n defaultValue?: string;\n /** Visual size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Marks the input as invalid for ARIA */\n invalid?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { value: valueProp, defaultValue, onChange, invalid, size: _size, ...rest } = props;\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => {\n if (onChange) {\n const synthetic = { target: { value: v } } as unknown as React.ChangeEvent<HTMLInputElement>;\n try { onChange(synthetic); } catch { /* ignore */ }\n }\n },\n });\n\n return (\n <input\n ref={ref}\n value={value ?? ''}\n aria-invalid={invalid || undefined}\n onChange={(e) => setValue(e.target.value)}\n {...rest}\n />\n );\n});\n\nInput.displayName = 'Input';\n\nexport { Input };\n","import * as React from 'react';\nimport { useControllableState } from '@structyl/hooks';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n value?: string;\n defaultValue?: string;\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>((props, ref) => {\n const { value: valueProp, defaultValue, onChange, ...rest } = props;\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: (v) => {\n if (onChange) {\n const synthetic = {\n target: { value: v },\n } as unknown as React.ChangeEvent<HTMLTextAreaElement>;\n try {\n onChange(synthetic);\n } catch {\n // ignore\n }\n }\n },\n });\n\n return (\n <textarea ref={ref} value={value ?? ''} onChange={(e) => setValue(e.target.value)} {...rest} />\n );\n});\n\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","/**\n * @structyl/primitives — Chart\n *\n * Headless SVG chart primitives. No external chart library dependencies.\n * Provides all layout algorithms, scale functions, and path generators.\n */\n\n// Main components\nexport {\n Root,\n Grid,\n XAxis,\n YAxis,\n Bar,\n Line,\n Area,\n Scatter,\n Bubble,\n Tooltip,\n Legend,\n PieRoot,\n Pie,\n PieCenterLabel,\n RadarRoot,\n PolarGrid,\n PolarAngleAxis,\n Radar,\n Heatmap,\n Treemap,\n Funnel,\n Gauge,\n GaugeContainer,\n GaugeValueArc,\n GaugeReferenceArc,\n GaugePointer,\n Candlestick,\n SparkLine,\n RangeBar,\n RangeArea,\n ReferenceLine,\n ReferenceArea,\n RadialBarRoot,\n RadialBar,\n RadialLineRoot,\n RadialLine,\n Waterfall,\n Sankey,\n Pyramid,\n Gantt,\n Histogram,\n Boxplot,\n Sunburst,\n Chord,\n LinearGauge,\n} from './chart';\n\n// Type exports\nexport type {\n ChartRootProps,\n ChartPieRootProps,\n ChartRadarRootProps,\n ChartMargin,\n ChartDimensions,\n ChartXAxisProps,\n ChartYAxisProps,\n ChartGridProps,\n ChartBarProps,\n ChartLineProps,\n ChartAreaProps,\n ChartScatterProps,\n ChartBubbleProps,\n ChartPieProps,\n ChartPolarGridProps,\n ChartPolarAngleAxisProps,\n ChartRadarProps,\n ChartHeatmapProps,\n ChartTreemapProps,\n ChartFunnelProps,\n ChartGaugeProps,\n ChartGaugeContainerProps,\n ChartGaugeValueArcProps,\n ChartGaugeReferenceArcProps,\n ChartGaugePointerProps,\n GaugeContextValue,\n ChartCandlestickProps,\n ChartTooltipProps,\n ChartLegendProps,\n CartesianContextValue,\n PieContextValue,\n RadarContextValue,\n TooltipState,\n TooltipPayloadEntry,\n TreemapNode,\n OhlcEntry,\n FunnelEntry,\n CurveType,\n AxisScale,\n LegendPosition,\n LabelPosition,\n HighlightScope,\n MarkShape,\n ScatterMarkerShape,\n ChartSparkLineProps,\n ChartRangeBarProps,\n ChartRangeAreaProps,\n ChartReferenceLineProps,\n ChartReferenceAreaProps,\n ChartRadialBarRootProps,\n ChartRadialBarProps,\n ChartRadialLineRootProps,\n ChartRadialLineProps,\n ChartWaterfallProps,\n ChartSankeyProps,\n ChartPyramidProps,\n ChartGanttProps,\n ChartHistogramProps,\n ChartBoxplotProps,\n BoxplotEntry,\n ChartSunburstProps,\n SunburstNode,\n ChartChordProps,\n ChartLinearGaugeProps,\n ChartPieCenterLabelProps,\n WaterfallEntry,\n SankeyNode,\n SankeyLink,\n GanttTask,\n} from './chart.types';\n\n// Scale utilities (useful for custom extensions)\nexport {\n linearScale,\n logScale,\n bandScale,\n ordinalScale,\n niceLinearTicks,\n niceDomain,\n extent,\n computeYDomain,\n} from './scales';\n\n// Path generators (useful for custom chart types)\nexport {\n buildLinePath,\n buildAreaPath,\n buildAreaPathFlat,\n buildArcPath,\n buildRadarPath,\n buildBarRect,\n fmt,\n} from './paths';\n\n// Layout algorithms\nexport {\n squarifyTreemap,\n computeFunnelLayout,\n computeGaugeArcs,\n computeCandlestickBars,\n computeHeatmapCells,\n} from './layout';\n\nexport type {\n TreemapLayoutNode,\n FunnelLayoutSegment,\n GaugeArcData,\n CandlestickBar,\n HeatmapCell,\n} from './layout';\n\nexport type { BarRectProps } from './paths';\n","/**\n * Minimal scale implementations — no d3 dependency.\n * Each scale maps a domain value to a range pixel value.\n */\n\n/* ─── Linear scale ─────────────────────────────────────────────────── */\n\n/**\n * Maps a continuous numeric domain to a continuous numeric range.\n */\nexport function linearScale(\n domain: [number, number],\n range: [number, number],\n): (value: number) => number {\n const [d0, d1] = domain;\n const [r0, r1] = range;\n const domainSpan = d1 - d0;\n const rangeSpan = r1 - r0;\n\n if (domainSpan === 0) {\n return () => (r0 + r1) / 2;\n }\n\n return (value: number): number => r0 + ((value - d0) / domainSpan) * rangeSpan;\n}\n\n/* ─── Log scale ─────────────────────────────────────────────────────── */\n\n/**\n * Logarithmic (base-10) scale. Domain must be > 0.\n */\nexport function logScale(\n domain: [number, number],\n range: [number, number],\n): (value: number) => number {\n const [d0, d1] = domain;\n const [r0, r1] = range;\n const logD0 = Math.log10(Math.max(d0, 1e-10));\n const logD1 = Math.log10(Math.max(d1, 1e-10));\n const domainSpan = logD1 - logD0;\n const rangeSpan = r1 - r0;\n\n if (domainSpan === 0) {\n return () => (r0 + r1) / 2;\n }\n\n return (value: number): number => {\n const logVal = Math.log10(Math.max(value, 1e-10));\n return r0 + ((logVal - logD0) / domainSpan) * rangeSpan;\n };\n}\n\n/* ─── Band scale ────────────────────────────────────────────────────── */\n\nexport interface BandScale {\n /** Maps a domain value to the start pixel of its band */\n scale: (value: string) => number;\n /** The width of each band (after inner padding) */\n bandwidth: number;\n /** The step size from one band start to the next */\n step: number;\n}\n\n/**\n * Divides a range evenly among discrete domain values with optional padding.\n *\n * @param domain Ordered list of category strings\n * @param range [start, end] pixel range\n * @param paddingInner Gap between bands as a fraction of step (0–1)\n * @param paddingOuter Gap at range edges as a fraction of step (0–1)\n */\nexport function bandScale(\n domain: string[],\n range: [number, number],\n paddingInner = 0.1,\n paddingOuter = 0.05,\n): BandScale {\n const n = domain.length;\n if (n === 0) {\n return { scale: () => 0, bandwidth: 0, step: 0 };\n }\n\n const [r0, r1] = range;\n const rangeLen = r1 - r0;\n\n // step = rangeLen / (n + paddingOuter * 2 + paddingInner * (n - 1))\n const step = rangeLen / (n + paddingOuter * 2 + paddingInner * (n - 1));\n const bandwidth = step * (1 - paddingInner);\n const start = r0 + step * paddingOuter;\n\n const indexMap = new Map<string, number>();\n domain.forEach((d, i) => indexMap.set(d, i));\n\n const scale = (value: string): number => {\n const i = indexMap.get(value);\n if (i === undefined) return 0;\n return start + i * (step + step * paddingInner);\n };\n\n return { scale, bandwidth, step };\n}\n\n/* ─── Ordinal scale ─────────────────────────────────────────────────── */\n\n/**\n * Maps domain strings to range values (usually colors) by cycling.\n */\nexport function ordinalScale(domain: string[], range: string[]): (value: string) => string {\n const indexMap = new Map<string, number>();\n domain.forEach((d, i) => indexMap.set(d, i));\n\n return (value: string): string => {\n const i = indexMap.get(value) ?? 0;\n return range[i % range.length] ?? range[0] ?? '';\n };\n}\n\n/* ─── Tick generation ───────────────────────────────────────────────── */\n\n/**\n * Generate \"nice\" linear tick values spanning [min, max].\n * Returns approximately `count` ticks on round numbers.\n */\nexport function niceLinearTicks(\n min: number,\n max: number,\n count = 5,\n): number[] {\n if (min === max) {\n return [min];\n }\n\n const rawStep = (max - min) / (count - 1);\n\n // Round step to a \"nice\" value\n const magnitude = Math.pow(10, Math.floor(Math.log10(rawStep)));\n const normalised = rawStep / magnitude;\n\n let niceStep: number;\n if (normalised <= 1) niceStep = magnitude;\n else if (normalised <= 2) niceStep = 2 * magnitude;\n else if (normalised <= 5) niceStep = 5 * magnitude;\n else niceStep = 10 * magnitude;\n\n const niceMin = Math.floor(min / niceStep) * niceStep;\n const niceMax = Math.ceil(max / niceStep) * niceStep;\n\n const ticks: number[] = [];\n let tick = niceMin;\n while (tick <= niceMax + niceStep * 0.001) {\n ticks.push(parseFloat(tick.toPrecision(12)));\n tick += niceStep;\n }\n\n return ticks;\n}\n\n/**\n * Round a domain extent to nice bounds for display.\n */\nexport function niceDomain(min: number, max: number, count = 5): [number, number] {\n const ticks = niceLinearTicks(min, max, count);\n return [ticks[0] ?? min, ticks[ticks.length - 1] ?? max];\n}\n\n/* ─── Extent helpers ────────────────────────────────────────────────── */\n\n/**\n * Returns [min, max] of a numeric array.\n */\nexport function extent(values: number[]): [number, number] {\n if (values.length === 0) return [0, 1];\n let min = Infinity;\n let max = -Infinity;\n for (const v of values) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n return [min, max];\n}\n\n/**\n * Computes y-domain from a data array using multiple data keys.\n * If any series has a stackId, domains are summed per index.\n */\nexport function computeYDomain(\n data: Record<string, unknown>[],\n dataKeys: string[],\n stackIds: (string | undefined)[],\n includeZero = true,\n): [number, number] {\n if (data.length === 0 || dataKeys.length === 0) return [0, 100];\n\n // Group keys by stackId\n const stackGroups = new Map<string, string[]>();\n const unstacked: string[] = [];\n\n dataKeys.forEach((key, i) => {\n const sid = stackIds[i];\n if (sid !== undefined) {\n const group = stackGroups.get(sid) ?? [];\n group.push(key);\n stackGroups.set(sid, group);\n } else {\n unstacked.push(key);\n }\n });\n\n const allValues: number[] = [];\n\n // For unstacked series: just collect values\n for (const key of unstacked) {\n for (const row of data) {\n const v = row[key];\n if (typeof v === 'number' && isFinite(v)) {\n allValues.push(v);\n }\n }\n }\n\n // For stacked groups: sum per row\n stackGroups.forEach((keys) => {\n for (const row of data) {\n let sum = 0;\n for (const key of keys) {\n const v = row[key];\n if (typeof v === 'number' && isFinite(v)) sum += v;\n }\n allValues.push(sum);\n }\n });\n\n if (allValues.length === 0) return [0, 100];\n\n let [min, max] = extent(allValues);\n if (includeZero) {\n min = Math.min(0, min);\n max = Math.max(0, max);\n }\n\n // Ensure domain has some height\n if (min === max) {\n min = min - 1;\n max = max + 1;\n }\n\n return niceDomain(min, max);\n}\n","/**\n * SVG path string generators — no external dependencies.\n */\n\nimport type { CurveType } from './chart.types';\n\ntype Point = [number, number];\n\n/* ─── Line path ─────────────────────────────────────────────────────── */\n\n/**\n * Build an SVG path `d` string from an array of [x, y] points.\n * Supports linear, catmullRom, step, stepBefore, and stepAfter interpolation.\n */\nexport function buildLinePath(points: Point[], curve: CurveType = 'linear'): string {\n const valid = points.filter((p) => isFinite(p[0]) && isFinite(p[1]));\n if (valid.length === 0) return '';\n const first = valid[0];\n if (valid.length === 1 && first) return `M ${first[0]} ${first[1]}`;\n\n switch (curve) {\n case 'catmullRom':\n return buildCatmullRomPath(valid);\n case 'step':\n return buildStepPath(valid, 'middle');\n case 'stepBefore':\n return buildStepPath(valid, 'before');\n case 'stepAfter':\n return buildStepPath(valid, 'after');\n case 'monotoneX':\n return buildMonotoneXPath(valid);\n case 'natural':\n return valid.length < 20 ? buildCatmullRomPath(valid) : buildNaturalPath(valid);\n case 'bumpX':\n return buildBumpXPath(valid);\n case 'linear':\n default:\n return buildLinearPath(valid);\n }\n}\n\nfunction buildLinearPath(points: Point[]): string {\n const first = points[0];\n if (!first) return '';\n let d = `M ${fmt(first[0])} ${fmt(first[1])}`;\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n if (p) d += ` L ${fmt(p[0])} ${fmt(p[1])}`;\n }\n return d;\n}\n\nfunction buildStepPath(points: Point[], variant: 'before' | 'middle' | 'after'): string {\n const first = points[0];\n if (!first) return '';\n let d = `M ${fmt(first[0])} ${fmt(first[1])}`;\n for (let i = 1; i < points.length; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n if (!prev || !curr) continue;\n const [x0] = prev;\n const [x1, y1] = curr;\n if (variant === 'after') {\n d += ` H ${fmt(x1)} V ${fmt(y1)}`;\n } else if (variant === 'before') {\n d += ` V ${fmt(y1)} H ${fmt(x1)}`;\n } else {\n // middle\n const mid = (x0 + x1) / 2;\n d += ` H ${fmt(mid)} V ${fmt(y1)} H ${fmt(x1)}`;\n }\n }\n return d;\n}\n\nfunction buildCatmullRomPath(points: Point[], alpha = 0.5): string {\n if (points.length < 2) return buildLinearPath(points);\n\n const first = points[0];\n if (!first) return '';\n let d = `M ${fmt(first[0])} ${fmt(first[1])}`;\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n\n if (!p0 || !p1 || !p2 || !p3) continue;\n\n const [cp1x, cp1y, cp2x, cp2y] = catmullRomControlPoints(p0, p1, p2, p3, alpha);\n d += ` C ${fmt(cp1x)} ${fmt(cp1y)}, ${fmt(cp2x)} ${fmt(cp2y)}, ${fmt(p2[0])} ${fmt(p2[1])}`;\n }\n\n return d;\n}\n\nfunction catmullRomControlPoints(\n p0: Point,\n p1: Point,\n p2: Point,\n p3: Point,\n alpha: number,\n): [number, number, number, number] {\n const t01 = Math.pow(dist(p0, p1), alpha);\n const t12 = Math.pow(dist(p1, p2), alpha);\n const t23 = Math.pow(dist(p2, p3), alpha);\n\n const m1x = t12 === 0 ? 0 : (p2[0] - p1[0] + t12 * ((p1[0] - p0[0]) / (t01 || 1) - (p2[0] - p0[0]) / ((t01 || 1) + t12)));\n const m1y = t12 === 0 ? 0 : (p2[1] - p1[1] + t12 * ((p1[1] - p0[1]) / (t01 || 1) - (p2[1] - p0[1]) / ((t01 || 1) + t12)));\n\n const m2x = t12 === 0 ? 0 : (p2[0] - p1[0] + t12 * ((p3[0] - p2[0]) / (t23 || 1) - (p3[0] - p1[0]) / (t12 + (t23 || 1))));\n const m2y = t12 === 0 ? 0 : (p2[1] - p1[1] + t12 * ((p3[1] - p2[1]) / (t23 || 1) - (p3[1] - p1[1]) / (t12 + (t23 || 1))));\n\n const cp1x = p1[0] + m1x / 3;\n const cp1y = p1[1] + m1y / 3;\n const cp2x = p2[0] - m2x / 3;\n const cp2y = p2[1] - m2y / 3;\n\n return [cp1x, cp1y, cp2x, cp2y];\n}\n\nfunction dist(a: Point, b: Point): number {\n return Math.sqrt(Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2));\n}\n\n/* ─── monotoneX (Fritsch-Carlson) ───────────────────────────────────── */\n\n/**\n * Fritsch-Carlson monotone cubic interpolation in X.\n * Preserves monotonicity so the curve never overshoots data extremes.\n */\nfunction buildMonotoneXPath(points: Point[]): string {\n const n = points.length;\n if (n < 2) return buildLinearPath(points);\n\n const first = points[0];\n if (!first) return '';\n\n // Compute secants (slopes between consecutive points)\n const m: number[] = new Array(n).fill(0);\n const secants: number[] = [];\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n if (!p0 || !p1) { secants.push(0); continue; }\n const dx = p1[0] - p0[0];\n secants.push(dx === 0 ? 0 : (p1[1] - p0[1]) / dx);\n }\n\n // Initialize tangents at endpoints\n m[0] = secants[0] ?? 0;\n m[n - 1] = secants[n - 2] ?? 0;\n\n // Interior tangents: average of adjacent secants\n for (let i = 1; i < n - 1; i++) {\n const s0 = secants[i - 1] ?? 0;\n const s1 = secants[i] ?? 0;\n if (s0 * s1 <= 0) {\n // Slope changes sign — set tangent to zero (prevents overshoot)\n m[i] = 0;\n } else {\n m[i] = (s0 + s1) / 2;\n }\n }\n\n // Fritsch-Carlson step: limit slopes to preserve monotonicity\n for (let i = 0; i < n - 1; i++) {\n const s = secants[i] ?? 0;\n if (s === 0) {\n m[i] = 0;\n m[i + 1] = 0;\n } else {\n const alpha = (m[i] ?? 0) / s;\n const beta = (m[i + 1] ?? 0) / s;\n const tau = alpha * alpha + beta * beta;\n if (tau > 9) {\n const factor = 3 / Math.sqrt(tau);\n m[i] = (m[i] ?? 0) * factor;\n m[i + 1] = (m[i + 1] ?? 0) * factor;\n }\n }\n }\n\n // Build cubic bezier path using computed tangents\n let d = `M ${fmt(first[0])} ${fmt(first[1])}`;\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n if (!p0 || !p1) continue;\n const dx = (p1[0] - p0[0]) / 3;\n const cp1x = p0[0] + dx;\n const cp1y = p0[1] + (m[i] ?? 0) * dx;\n const cp2x = p1[0] - dx;\n const cp2y = p1[1] - (m[i + 1] ?? 0) * dx;\n d += ` C ${fmt(cp1x)} ${fmt(cp1y)}, ${fmt(cp2x)} ${fmt(cp2y)}, ${fmt(p1[0])} ${fmt(p1[1])}`;\n }\n return d;\n}\n\n/* ─── natural cubic spline ──────────────────────────────────────────── */\n\n/**\n * Natural cubic spline interpolation.\n * Solves a tridiagonal system so the second derivative is zero at endpoints.\n * Falls back to catmullRom for datasets with < 20 points (see buildLinePath).\n */\nfunction buildNaturalPath(points: Point[]): string {\n const n = points.length;\n if (n < 2) return buildLinearPath(points);\n\n // For simplicity and performance we use catmullRom as a near-identical\n // approximation when this path is reached (≥20 pts already delegated above).\n return buildCatmullRomPath(points);\n}\n\n/* ─── bumpX (horizontal S-curve bezier) ─────────────────────────────── */\n\n/**\n * BumpX: connects points with a horizontal S-curve.\n * Control points sit at the horizontal midpoint so tangents are horizontal.\n */\nfunction buildBumpXPath(points: Point[]): string {\n const n = points.length;\n if (n < 2) return buildLinearPath(points);\n\n const first = points[0];\n if (!first) return '';\n let d = `M ${fmt(first[0])} ${fmt(first[1])}`;\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n if (!p0 || !p1) continue;\n const midX = (p0[0] + p1[0]) / 2;\n // Control point 1: horizontally right from p0\n // Control point 2: horizontally left from p1\n d += ` C ${fmt(midX)} ${fmt(p0[1])}, ${fmt(midX)} ${fmt(p1[1])}, ${fmt(p1[0])} ${fmt(p1[1])}`;\n }\n return d;\n}\n\n/* ─── Area path ─────────────────────────────────────────────────────── */\n\n/**\n * Build a closed SVG path for an area chart.\n * @param topPoints Upper edge [[x,y], ...]\n * @param bottomPoints Lower edge — same length as topPoints. For non-stacked\n * areas, provide a constant y0 value via `buildAreaPathFlat`.\n * @param curve Curve interpolation applied to the top edge\n */\nexport function buildAreaPath(\n topPoints: Point[],\n bottomPoints: Point[],\n curve: CurveType = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const topPath = buildLinePath(topPoints, curve);\n // Bottom edge is traversed in reverse (linear only for simplicity)\n const reversedBottom = [...bottomPoints].reverse();\n const bottomPath = reversedBottom.map((p) => `L ${fmt(p[0])} ${fmt(p[1])}`).join(' ');\n\n return `${topPath} ${bottomPath} Z`;\n}\n\n/**\n * Simpler area path where all bottom points share one y0 value.\n */\nexport function buildAreaPathFlat(\n topPoints: Point[],\n y0: number,\n curve: CurveType = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const bottomPoints: Point[] = [...topPoints]\n .reverse()\n .map((p) => [p[0], y0]);\n\n return buildAreaPath(topPoints, bottomPoints, curve);\n}\n\n/* ─── Arc path ──────────────────────────────────────────────────────── */\n\n/**\n * Build an SVG arc path for a pie/donut slice.\n * Angles are in radians, measured clockwise from the top (12 o'clock).\n */\nexport function buildArcPath(\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n startAngle: number,\n endAngle: number,\n cornerRadius = 0,\n): string {\n // Clamp corner radius so it fits\n const midRadius = (outerRadius + innerRadius) / 2;\n const arcLength = Math.abs(endAngle - startAngle) * midRadius;\n const cr = Math.min(cornerRadius, arcLength / 2, (outerRadius - innerRadius) / 2);\n\n const sinStart = Math.sin(startAngle);\n const cosStart = Math.cos(startAngle);\n const sinEnd = Math.sin(endAngle);\n const cosEnd = Math.cos(endAngle);\n\n const largeArc = endAngle - startAngle > Math.PI ? 1 : 0;\n\n if (innerRadius <= 0) {\n // Full pie slice (no hole)\n const x1 = cx + outerRadius * sinStart;\n const y1 = cy - outerRadius * cosStart;\n const x2 = cx + outerRadius * sinEnd;\n const y2 = cy - outerRadius * cosEnd;\n\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI - 0.001) {\n // Full circle\n return `M ${fmt(cx + outerRadius)} ${fmt(cy)} A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 1 1 ${fmt(cx - outerRadius)} ${fmt(cy)} A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 1 1 ${fmt(cx + outerRadius)} ${fmt(cy)} Z`;\n }\n\n return `M ${fmt(cx)} ${fmt(cy)} L ${fmt(x1)} ${fmt(y1)} A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 ${largeArc} 1 ${fmt(x2)} ${fmt(y2)} Z`;\n }\n\n // Donut slice\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI - 0.001) {\n // Full donut ring\n return [\n `M ${fmt(cx + outerRadius)} ${fmt(cy)}`,\n `A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 1 1 ${fmt(cx - outerRadius)} ${fmt(cy)}`,\n `A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 1 1 ${fmt(cx + outerRadius)} ${fmt(cy)}`,\n 'Z',\n `M ${fmt(cx + innerRadius)} ${fmt(cy)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 1 0 ${fmt(cx - innerRadius)} ${fmt(cy)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 1 0 ${fmt(cx + innerRadius)} ${fmt(cy)}`,\n 'Z',\n ].join(' ');\n }\n\n if (cr > 0) {\n return buildRoundedArcPath(cx, cy, outerRadius, innerRadius, startAngle, endAngle, cr, largeArc);\n }\n\n const ox1 = cx + outerRadius * sinStart;\n const oy1 = cy - outerRadius * cosStart;\n const ox2 = cx + outerRadius * sinEnd;\n const oy2 = cy - outerRadius * cosEnd;\n const ix1 = cx + innerRadius * sinEnd;\n const iy1 = cy - innerRadius * cosEnd;\n const ix2 = cx + innerRadius * sinStart;\n const iy2 = cy - innerRadius * cosStart;\n\n return [\n `M ${fmt(ox1)} ${fmt(oy1)}`,\n `A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 ${largeArc} 1 ${fmt(ox2)} ${fmt(oy2)}`,\n `L ${fmt(ix1)} ${fmt(iy1)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 ${largeArc} 0 ${fmt(ix2)} ${fmt(iy2)}`,\n 'Z',\n ].join(' ');\n}\n\nfunction buildRoundedArcPath(\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n startAngle: number,\n endAngle: number,\n cr: number,\n largeArc: number,\n): string {\n // Adjust angles for corner radius on outer arc\n const outerAdjust = cr / outerRadius;\n const innerAdjust = cr / Math.max(innerRadius, 1);\n\n const os = startAngle + outerAdjust;\n const oe = endAngle - outerAdjust;\n const is = endAngle - innerAdjust;\n const ie = startAngle + innerAdjust;\n\n const p = (r: number, a: number): [number, number] => [cx + r * Math.sin(a), cy - r * Math.cos(a)];\n\n const [ox1, oy1] = p(outerRadius, os);\n const [ox2, oy2] = p(outerRadius, oe);\n const [ix1, iy1] = p(innerRadius, is);\n const [ix2, iy2] = p(innerRadius, ie);\n\n // Corner arcs\n const [cs1x, cs1y] = p(outerRadius - cr, startAngle);\n const [ce1x, ce1y] = p(outerRadius - cr, endAngle);\n const [cs2x, cs2y] = p(innerRadius + cr, endAngle);\n const [ce2x, ce2y] = p(innerRadius + cr, startAngle);\n\n return [\n `M ${fmt(cs1x)} ${fmt(cs1y)}`,\n `A ${fmt(cr)} ${fmt(cr)} 0 0 1 ${fmt(ox1)} ${fmt(oy1)}`,\n `A ${fmt(outerRadius)} ${fmt(outerRadius)} 0 ${largeArc} 1 ${fmt(ox2)} ${fmt(oy2)}`,\n `A ${fmt(cr)} ${fmt(cr)} 0 0 1 ${fmt(ce1x)} ${fmt(ce1y)}`,\n `L ${fmt(cs2x)} ${fmt(cs2y)}`,\n `A ${fmt(cr)} ${fmt(cr)} 0 0 1 ${fmt(ix1)} ${fmt(iy1)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 ${largeArc} 0 ${fmt(ix2)} ${fmt(iy2)}`,\n `A ${fmt(cr)} ${fmt(cr)} 0 0 1 ${fmt(ce2x)} ${fmt(ce2y)}`,\n 'Z',\n ].join(' ');\n}\n\n/* ─── Radar / Spider path ───────────────────────────────────────────── */\n\n/**\n * Build a closed polygon SVG path for a radar chart series.\n * @param values Normalised values in [0, 1] for each axis\n * @param cx Center x\n * @param cy Center y\n * @param radius Max radius\n */\nexport function buildRadarPath(\n values: number[],\n cx: number,\n cy: number,\n radius: number,\n): string {\n if (values.length === 0) return '';\n\n const angleStep = (2 * Math.PI) / values.length;\n const points = values.map((v, i) => {\n const angle = i * angleStep - Math.PI / 2;\n return [cx + radius * v * Math.cos(angle), cy + radius * v * Math.sin(angle)] as Point;\n });\n\n return `M ${points.map((p) => `${fmt(p[0])} ${fmt(p[1])}`).join(' L ')} Z`;\n}\n\n/* ─── Bar rect helper ───────────────────────────────────────────────── */\n\n/**\n * Returns SVG rect props for a bar with optional rounded top corners.\n */\nexport interface BarRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n rx: number;\n ry: number;\n}\n\nexport function buildBarRect(\n x: number,\n y: number,\n width: number,\n height: number,\n radius = 0,\n _orientation: 'vertical' | 'horizontal' = 'vertical',\n): BarRectProps {\n const r = Math.min(radius, Math.abs(height) / 2, Math.abs(width) / 2);\n return { x, y, width, height, rx: r, ry: r };\n}\n\n/* ─── Formatting helper ─────────────────────────────────────────────── */\n\nfunction fmt(n: number): string {\n // Limit decimal places to keep SVG tidy\n return Number.isInteger(n) ? String(n) : n.toFixed(3).replace(/\\.?0+$/, '');\n}\n\nexport { fmt };\n","/**\n * Layout algorithms: Squarified Treemap, Funnel layout.\n * No external dependencies.\n */\n\n/* ─── Treemap ───────────────────────────────────────────────────────── */\n\nexport interface TreemapLayoutNode {\n name: string;\n value: number;\n x: number;\n y: number;\n width: number;\n height: number;\n depth: number;\n color?: string;\n children?: TreemapLayoutNode[];\n}\n\ninterface RawNode {\n name: string;\n value?: number;\n children?: RawNode[];\n color?: string;\n}\n\n/**\n * Compute a squarified treemap layout.\n * Returns a flat list of leaf nodes with computed x/y/width/height.\n */\nexport function squarifyTreemap(\n nodes: RawNode[],\n x: number,\n y: number,\n width: number,\n height: number,\n padding = 2,\n depth = 0,\n): TreemapLayoutNode[] {\n const prepared = prepareNodes(nodes, padding, depth);\n if (prepared.length === 0) return [];\n\n const totalValue = prepared.reduce((s, n) => s + n.value, 0);\n const result: TreemapLayoutNode[] = [];\n\n squarify(prepared, totalValue, x, y, width, height, padding, result);\n return result;\n}\n\ninterface PreparedNode {\n name: string;\n value: number;\n color?: string;\n children?: RawNode[];\n depth: number;\n}\n\nfunction prepareNodes(nodes: RawNode[], padding: number, depth: number): PreparedNode[] {\n return nodes\n .map((n) => {\n let value = n.value ?? 0;\n if (n.children && n.children.length > 0) {\n value = sumChildren(n.children);\n }\n return { name: n.name, value, color: n.color, children: n.children, depth };\n })\n .filter((n) => n.value > 0)\n .sort((a, b) => b.value - a.value);\n}\n\nfunction sumChildren(nodes: RawNode[]): number {\n return nodes.reduce((s, n) => {\n if (n.children && n.children.length > 0) return s + sumChildren(n.children);\n return s + (n.value ?? 0);\n }, 0);\n}\n\nfunction squarify(\n nodes: PreparedNode[],\n totalValue: number,\n x: number,\n y: number,\n width: number,\n height: number,\n padding: number,\n result: TreemapLayoutNode[],\n): void {\n if (nodes.length === 0 || width <= 0 || height <= 0) return;\n if (nodes.length === 1) {\n const only = nodes[0];\n if (only) placeNode(only, x, y, width, height, padding, result);\n return;\n }\n\n let remaining = [...nodes];\n let rx = x;\n let ry = y;\n let rw = width;\n let rh = height;\n let remainingValue = totalValue;\n\n while (remaining.length > 0) {\n const isWide = rw >= rh;\n const stripe = isWide ? rh : rw;\n\n // Find optimal row/column via worst-aspect-ratio minimization\n let row: PreparedNode[] = [];\n let rowValue = 0;\n let bestWorst = Infinity;\n\n for (let i = 0; i < remaining.length; i++) {\n const candidate = remaining.slice(0, i + 1);\n const candValue = candidate.reduce((s, n) => s + n.value, 0);\n const worst = worstAspectRatio(candidate, candValue, remainingValue, stripe, rw * rh);\n\n if (worst <= bestWorst) {\n bestWorst = worst;\n row = candidate;\n rowValue = candValue;\n } else {\n break; // Aspect ratio is worsening — stop\n }\n }\n\n // Place the row\n const rowFraction = rowValue / remainingValue;\n const rowSize = isWide ? rw * rowFraction : rh * rowFraction;\n let offset = isWide ? ry : rx;\n\n for (const node of row) {\n const nodeFraction = node.value / rowValue;\n const nodeSize = stripe * nodeFraction;\n if (isWide) {\n placeNode(node, rx, offset, rowSize, nodeSize, padding, result);\n offset += nodeSize;\n } else {\n placeNode(node, offset, ry, nodeSize, rowSize, padding, result);\n offset += nodeSize;\n }\n }\n\n // Shrink remaining rectangle\n if (isWide) {\n rx += rowSize;\n rw -= rowSize;\n } else {\n ry += rowSize;\n rh -= rowSize;\n }\n\n remainingValue -= rowValue;\n remaining = remaining.slice(row.length);\n }\n}\n\nfunction worstAspectRatio(\n row: PreparedNode[],\n rowValue: number,\n totalValue: number,\n stripe: number,\n area: number,\n): number {\n if (row.length === 0 || rowValue === 0 || totalValue === 0) return Infinity;\n\n const rowArea = (rowValue / totalValue) * area;\n const rowWidth = rowArea / stripe;\n\n let worst = 0;\n for (const node of row) {\n const nodeArea = (node.value / rowValue) * rowArea;\n const nodeHeight = nodeArea / rowWidth;\n const aspect = Math.max(rowWidth / nodeHeight, nodeHeight / rowWidth);\n if (aspect > worst) worst = aspect;\n }\n return worst;\n}\n\nfunction placeNode(\n node: PreparedNode,\n x: number,\n y: number,\n width: number,\n height: number,\n padding: number,\n result: TreemapLayoutNode[],\n): void {\n const px = x + padding;\n const py = y + padding;\n const pw = Math.max(0, width - padding * 2);\n const ph = Math.max(0, height - padding * 2);\n\n if (node.children && node.children.length > 0) {\n // Recurse into children\n const children = squarifyTreemap(node.children, px, py, pw, ph, padding, node.depth + 1);\n result.push({\n name: node.name,\n value: node.value,\n x: px,\n y: py,\n width: pw,\n height: ph,\n depth: node.depth,\n color: node.color,\n children,\n });\n } else {\n result.push({\n name: node.name,\n value: node.value,\n x: px,\n y: py,\n width: pw,\n height: ph,\n depth: node.depth,\n color: node.color,\n });\n }\n}\n\n/* ─── Funnel layout ─────────────────────────────────────────────────── */\n\nexport interface FunnelLayoutSegment {\n name: string;\n value: number;\n color?: string;\n /** Trapezoid top-left x */\n x1: number;\n /** Trapezoid top-right x */\n x2: number;\n /** Trapezoid bottom-left x */\n x3: number;\n /** Trapezoid bottom-right x */\n x4: number;\n /** Top y */\n y1: number;\n /** Bottom y */\n y2: number;\n /** SVG path string */\n path: string;\n /** Percentage of first item */\n percentage: number;\n}\n\n/**\n * Compute funnel trapezoid positions.\n * Each segment is a trapezoid that narrows from top to bottom proportionally.\n */\nexport function computeFunnelLayout(\n data: Array<{ name: string; value: number; color?: string }>,\n x: number,\n y: number,\n width: number,\n height: number,\n gap = 4,\n): FunnelLayoutSegment[] {\n if (data.length === 0) return [];\n\n const maxValue = Math.max(...data.map((d) => d.value));\n if (maxValue === 0) return [];\n\n const segmentHeight = (height - gap * (data.length - 1)) / data.length;\n const cx = x + width / 2;\n\n return data.map((item, i) => {\n const ratio = item.value / maxValue;\n const nextItem = i < data.length - 1 ? data[i + 1] : undefined;\n const nextRatio = nextItem ? nextItem.value / maxValue : ratio;\n\n const topHalfWidth = (width / 2) * ratio;\n const bottomHalfWidth = (width / 2) * nextRatio;\n\n const segY1 = y + i * (segmentHeight + gap);\n const segY2 = segY1 + segmentHeight;\n\n const x1 = cx - topHalfWidth;\n const x2 = cx + topHalfWidth;\n const x3 = cx + bottomHalfWidth;\n const x4 = cx - bottomHalfWidth;\n\n const path = [\n `M ${fmt(x1)} ${fmt(segY1)}`,\n `L ${fmt(x2)} ${fmt(segY1)}`,\n `L ${fmt(x3)} ${fmt(segY2)}`,\n `L ${fmt(x4)} ${fmt(segY2)}`,\n 'Z',\n ].join(' ');\n\n return {\n name: item.name,\n value: item.value,\n color: item.color,\n x1,\n x2,\n x3,\n x4,\n y1: segY1,\n y2: segY2,\n path,\n percentage: (item.value / maxValue) * 100,\n };\n });\n}\n\n/* ─── Gauge arc ─────────────────────────────────────────────────────── */\n\nexport interface GaugeArcData {\n /** Background (track) arc path */\n trackPath: string;\n /** Filled arc path */\n fillPath: string;\n /** Center x */\n cx: number;\n /** Center y */\n cy: number;\n /** Outer radius */\n outerRadius: number;\n /** Inner radius */\n innerRadius: number;\n /** Normalised value [0, 1] */\n fraction: number;\n}\n\n/**\n * Compute paths for an arc-style gauge.\n * Angles use SVG convention: measured clockwise from top (12 o'clock).\n *\n * @param value Current value\n * @param min Minimum value\n * @param max Maximum value\n * @param startDeg Start angle in degrees (clockwise from top)\n * @param endDeg End angle in degrees\n * @param outerRadius Outer edge radius\n * @param thickness Arc thickness (pixels)\n */\nexport function computeGaugeArcs(\n value: number,\n min: number,\n max: number,\n startDeg: number,\n endDeg: number,\n outerRadius: number,\n thickness: number,\n): GaugeArcData {\n const fraction = Math.min(1, Math.max(0, (value - min) / (max - min)));\n const innerRadius = outerRadius - thickness;\n const cx = outerRadius;\n const cy = outerRadius;\n\n const toRad = (deg: number) => (deg * Math.PI) / 180;\n\n const startRad = toRad(startDeg);\n const endRad = toRad(endDeg);\n const fillEndRad = startRad + (endRad - startRad) * fraction;\n\n const trackPath = buildGaugeArcPath(cx, cy, outerRadius, innerRadius, startRad, endRad);\n const fillPath =\n fraction > 0\n ? buildGaugeArcPath(cx, cy, outerRadius, innerRadius, startRad, fillEndRad)\n : '';\n\n return { trackPath, fillPath, cx, cy, outerRadius, innerRadius, fraction };\n}\n\nfunction buildGaugeArcPath(\n cx: number,\n cy: number,\n outerR: number,\n innerR: number,\n startRad: number,\n endRad: number,\n): string {\n // SVG arc angles: 0 = right (3 o'clock). We use clockwise from top.\n // Convert \"clockwise from top\" to standard SVG angles.\n const toSvgAngle = (rad: number) => rad - Math.PI / 2;\n\n const s = toSvgAngle(startRad);\n const e = toSvgAngle(endRad);\n\n const sweep = Math.abs(endRad - startRad);\n const largeArc = sweep > Math.PI ? 1 : 0;\n\n const ox1 = cx + outerR * Math.cos(s);\n const oy1 = cy + outerR * Math.sin(s);\n const ox2 = cx + outerR * Math.cos(e);\n const oy2 = cy + outerR * Math.sin(e);\n const ix1 = cx + innerR * Math.cos(e);\n const iy1 = cy + innerR * Math.sin(e);\n const ix2 = cx + innerR * Math.cos(s);\n const iy2 = cy + innerR * Math.sin(s);\n\n return [\n `M ${fmt(ox1)} ${fmt(oy1)}`,\n `A ${fmt(outerR)} ${fmt(outerR)} 0 ${largeArc} 1 ${fmt(ox2)} ${fmt(oy2)}`,\n `L ${fmt(ix1)} ${fmt(iy1)}`,\n `A ${fmt(innerR)} ${fmt(innerR)} 0 ${largeArc} 0 ${fmt(ix2)} ${fmt(iy2)}`,\n 'Z',\n ].join(' ');\n}\n\n/* ─── Candlestick layout ────────────────────────────────────────────── */\n\nexport interface CandlestickBar {\n x: number;\n candleWidth: number;\n openY: number;\n closeY: number;\n highY: number;\n lowY: number;\n bullish: boolean;\n}\n\n/**\n * Compute candlestick bar positions from OHLC data.\n */\nexport function computeCandlestickBars(\n data: Array<{ open: number; high: number; low: number; close: number }>,\n xScale: (index: number) => number,\n yScale: (value: number) => number,\n bandWidth: number,\n): CandlestickBar[] {\n return data.map((d, i) => ({\n x: xScale(i),\n candleWidth: bandWidth * 0.8,\n openY: yScale(d.open),\n closeY: yScale(d.close),\n highY: yScale(d.high),\n lowY: yScale(d.low),\n bullish: d.close >= d.open,\n }));\n}\n\n/* ─── Heatmap layout ────────────────────────────────────────────────── */\n\nexport interface HeatmapCell {\n xValue: string;\n yValue: string;\n value: number;\n x: number;\n y: number;\n width: number;\n height: number;\n normalised: number;\n}\n\n/**\n * Compute heatmap cell positions.\n */\nexport function computeHeatmapCells(\n data: Record<string, unknown>[],\n xKey: string,\n yKey: string,\n valueKey: string,\n xScale: (v: string) => number,\n yScale: (v: string) => number,\n cellWidth: number,\n cellHeight: number,\n): HeatmapCell[] {\n const values = data.map((d) => {\n const v = d[valueKey];\n return typeof v === 'number' ? v : 0;\n });\n const minVal = Math.min(...values);\n const maxVal = Math.max(...values);\n const range = maxVal - minVal || 1;\n\n return data.map((d) => {\n const xVal = String(d[xKey] ?? '');\n const yVal = String(d[yKey] ?? '');\n const value = typeof d[valueKey] === 'number' ? (d[valueKey] as number) : 0;\n\n return {\n xValue: xVal,\n yValue: yVal,\n value,\n x: xScale(xVal),\n y: yScale(yVal),\n width: cellWidth,\n height: cellHeight,\n normalised: (value - minVal) / range,\n };\n });\n}\n\n/* ─── Internal helper ───────────────────────────────────────────────── */\n\nfunction fmt(n: number): string {\n return Number.isInteger(n) ? String(n) : n.toFixed(3).replace(/\\.?0+$/, '');\n}\n","'use client';\n\nimport * as React from 'react';\nimport { createContext } from '@structyl/core';\nimport type {\n CartesianContextValue,\n ChartAreaProps,\n ChartBarProps,\n ChartBoxplotProps,\n ChartBubbleProps,\n ChartCandlestickProps,\n ChartChordProps,\n ChartDimensions,\n ChartFunnelProps,\n ChartGanttProps,\n ChartGaugeContainerProps,\n ChartGaugePointerProps,\n ChartGaugeProps,\n ChartGaugeReferenceArcProps,\n ChartGaugeValueArcProps,\n ChartGridProps,\n ChartHeatmapProps,\n ChartHistogramProps,\n ChartLegendProps,\n ChartLinearGaugeProps,\n ChartLineProps,\n ChartMargin,\n ChartPieCenterLabelProps,\n ChartPieProps,\n ChartPieRootProps,\n ChartPolarAngleAxisProps,\n ChartPolarGridProps,\n ChartRadarProps,\n ChartRadarRootProps,\n ChartRadialBarProps,\n ChartRadialBarRootProps,\n ChartRadialLineProps,\n ChartRadialLineRootProps,\n ChartRangeAreaProps,\n ChartRangeBarProps,\n ChartReferenceAreaProps,\n ChartReferenceLineProps,\n ChartRootProps,\n ChartSankeyProps,\n ChartScatterProps,\n ChartSparkLineProps,\n ChartSunburstProps,\n ChartTooltipProps,\n ChartTreemapProps,\n ChartWaterfallProps,\n ChartXAxisProps,\n ChartYAxisProps,\n ChartPyramidProps,\n GaugeContextValue,\n HighlightScope,\n MarkShape,\n PieContextValue,\n RadarContextValue,\n SankeyNode,\n ScatterMarkerShape,\n SunburstNode,\n TooltipState,\n} from './chart.types';\nimport type { TreemapLayoutNode } from './layout';\nimport {\n bandScale,\n computeYDomain,\n linearScale,\n niceLinearTicks,\n} from './scales';\nimport { buildArcPath, buildAreaPathFlat, buildAreaPath, buildLinePath, buildRadarPath, fmt } from './paths';\nimport {\n computeCandlestickBars,\n computeFunnelLayout,\n computeGaugeArcs,\n computeHeatmapCells,\n squarifyTreemap,\n} from './layout';\n\n/* ─── Color palette ─────────────────────────────────────────────────── */\n\nconst DEFAULT_PALETTE = [\n 'hsl(var(--chart-1))',\n 'hsl(var(--chart-2))',\n 'hsl(var(--chart-3))',\n 'hsl(var(--chart-4))',\n 'hsl(var(--chart-5))',\n 'hsl(var(--chart-6, 200 70% 50%))',\n 'hsl(var(--chart-7, 60 80% 50%))',\n 'hsl(var(--chart-8, 300 65% 55%))',\n];\n\n// A11y pattern fills for colorblind mode\nconst A11Y_PATTERNS = [\n 'url(#chart-pattern-0)',\n 'url(#chart-pattern-1)',\n 'url(#chart-pattern-2)',\n 'url(#chart-pattern-3)',\n 'url(#chart-pattern-4)',\n];\n\nconst DEFAULT_MARGIN: ChartMargin = { top: 10, right: 10, bottom: 30, left: 40 };\n\n/* ─── Cartesian context ─────────────────────────────────────────────── */\n\nconst [CartesianProvider, useCartesianContext] =\n createContext<CartesianContextValue>('Chart');\n\n/* ─── Pie context ───────────────────────────────────────────────────── */\n\nconst [PieProvider, usePieContext] = createContext<PieContextValue>('ChartPie');\n\n/* ─── Radar context ─────────────────────────────────────────────────── */\n\nconst [RadarProvider, useRadarContext] = createContext<RadarContextValue>('ChartRadar');\n\n/* ─── Gauge composition context ─────────────────────────────────────── */\n\nconst [GaugeProvider, useGaugeContext] = createContext<GaugeContextValue>('ChartGaugeContainer');\n\n/* ─── Shared tooltip + legend context (works across all root types) ──── */\n\nexport interface LegendEntryData {\n name: string;\n color: string;\n dataKey: string;\n}\n\ninterface SharedTooltipCtxValue {\n tooltip: TooltipState;\n setTooltip: (state: TooltipState) => void;\n legendEntries: LegendEntryData[];\n}\n\nconst [SharedTooltipProvider, useSharedTooltip] =\n createContext<SharedTooltipCtxValue>('Chart');\n\n/* ─── Helper: collect legend entries from cartesian series children ───── */\n\nfunction collectPieLegendEntries(\n rows: Record<string, unknown>[],\n children: React.ReactNode,\n): LegendEntryData[] {\n const entries: LegendEntryData[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const dn = (child.type as { displayName?: string })?.displayName ?? '';\n if (dn === 'Chart.Pie') {\n const p = child.props as ChartPieProps;\n const pieColors = p.colors ?? DEFAULT_PALETTE;\n rows.forEach((d, i) => {\n const nameKey = p.nameKey ?? 'name';\n const name = String(d[nameKey] ?? i);\n entries.push({\n name,\n color: pieColors[i % pieColors.length] ?? 'hsl(var(--chart-1))',\n dataKey: p.dataKey,\n });\n });\n }\n });\n return entries;\n}\n\nfunction collectRadarLegendEntries(children: React.ReactNode): LegendEntryData[] {\n const entries: LegendEntryData[] = [];\n let idx = 0;\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const dn = (child.type as { displayName?: string })?.displayName ?? '';\n if (dn === 'Chart.Radar') {\n const p = child.props as { name?: string; dataKey?: string; color?: string };\n const label = p.name ?? p.dataKey ?? '';\n if (label) {\n entries.push({\n name: label,\n color: p.color ?? DEFAULT_PALETTE[idx % DEFAULT_PALETTE.length] ?? 'hsl(var(--chart-1))',\n dataKey: p.dataKey ?? '',\n });\n }\n idx++;\n }\n });\n return entries;\n}\n\n/* ─── Tooltip state ─────────────────────────────────────────────────── */\n\nconst TOOLTIP_HIDDEN: TooltipState = { visible: false, x: 0, y: 0, payload: [], label: '' };\n\n/* ─── Helper: split children into SVG vs HTML overlay ───────────────── */\n\nconst OVERLAY_DISPLAY_NAMES = new Set(['Chart.Tooltip', 'Chart.Legend']);\n\nfunction splitChildren(children: React.ReactNode): {\n svgChildren: React.ReactNode[];\n overlayChildren: React.ReactNode[];\n} {\n const svgChildren: React.ReactNode[] = [];\n const overlayChildren: React.ReactNode[] = [];\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n OVERLAY_DISPLAY_NAMES.has(\n (child.type as { displayName?: string })?.displayName ?? '',\n )\n ) {\n overlayChildren.push(child);\n } else {\n svgChildren.push(child);\n }\n });\n return { svgChildren, overlayChildren };\n}\n\nconst CARTESIAN_SERIES_NAMES = new Set([\n 'Chart.Bar', 'Chart.Line', 'Chart.Area', 'Chart.Scatter',\n 'Chart.Bubble', 'Chart.RangeBar', 'Chart.RangeArea',\n]);\n\n/* ─── Root ──────────────────────────────────────────────────────────── */\n\n/**\n * Root container for cartesian charts (Bar, Line, Area, Scatter, Bubble).\n * Sets up scales, context, and the SVG viewport.\n */\nconst Root = React.forwardRef<HTMLDivElement, ChartRootProps>(\n (\n {\n data,\n width: widthProp,\n height: heightProp = 300,\n margin: marginProp,\n className,\n accessibilityLabel = 'Chart',\n accessibilityMode = false,\n children,\n },\n ref,\n ) => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useMergedRef(ref, containerRef);\n\n const [containerWidth, setContainerWidth] = React.useState(widthProp ?? 600);\n\n // ResizeObserver for responsive mode\n React.useEffect(() => {\n if (widthProp !== undefined) return;\n const el = containerRef.current;\n if (!el) return;\n\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n setContainerWidth(entry.contentRect.width);\n }\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [widthProp]);\n\n const width = widthProp ?? containerWidth;\n const height = heightProp;\n\n const margin: ChartMargin = { ...DEFAULT_MARGIN, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n const dimensions: ChartDimensions = {\n width,\n height,\n margin,\n innerWidth,\n innerHeight,\n };\n\n // Single children scan: extracts all derived values in one pass.\n const {\n seriesInfo,\n allSeriesKeys,\n xDataKey,\n yDomainProp,\n legendEntries: legendEntriesFromScan,\n legendPosition,\n } = React.useMemo(() => {\n const info: { dataKey: string; stackId?: string; type: string }[] = [];\n const keys: string[] = [];\n const entries: LegendEntryData[] = [];\n let xdk = '';\n let yDomProp: [number | 'auto', number | 'auto'] | undefined;\n let legPos: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n let seriesIdx = 0;\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const p = child.props as Record<string, unknown>;\n const dn = (child.type as { displayName?: string })?.displayName ?? '';\n\n if (dn === 'Chart.XAxis') {\n xdk = typeof p['dataKey'] === 'string' ? p['dataKey'] : '';\n } else if (dn === 'Chart.YAxis') {\n yDomProp = p['domain'] as [number | 'auto', number | 'auto'] | undefined;\n } else if (dn === 'Chart.Legend') {\n legPos = (p['position'] as 'top' | 'bottom' | 'left' | 'right') ?? 'bottom';\n }\n\n // Palette index key for all series types\n if (CARTESIAN_SERIES_NAMES.has(dn) || dn === 'Chart.RangeBar' || dn === 'Chart.RangeArea') {\n const key = typeof p['dataKey'] === 'string' ? p['dataKey']\n : typeof p['name'] === 'string' ? p['name']\n : typeof p['xKey'] === 'string' ? String(p['xKey'])\n : typeof p['lowKey'] === 'string' ? String(p['lowKey'])\n : `series-${keys.length}`;\n keys.push(key);\n\n // Legend entry for cartesian series\n const label = (typeof p['name'] === 'string' ? p['name'] : null)\n ?? (typeof p['dataKey'] === 'string' ? p['dataKey'] : null)\n ?? '';\n if (label) {\n entries.push({\n name: label,\n color: (typeof p['color'] === 'string' ? p['color'] : null)\n ?? DEFAULT_PALETTE[seriesIdx % DEFAULT_PALETTE.length]\n ?? 'hsl(var(--chart-1))',\n dataKey: typeof p['dataKey'] === 'string' ? p['dataKey'] : key,\n });\n seriesIdx++;\n }\n }\n\n // dataKey-only for yDomain computation\n if (typeof p['dataKey'] === 'string') {\n info.push({\n dataKey: p['dataKey'] as string,\n stackId: p['stackId'] as string | undefined,\n type: dn,\n });\n }\n });\n\n return {\n seriesInfo: info,\n allSeriesKeys: keys,\n xDataKey: xdk,\n yDomainProp: yDomProp,\n legendEntries: entries,\n legendPosition: legPos as 'top' | 'bottom' | 'left' | 'right',\n };\n }, [children]);\n\n const rows = data as Record<string, unknown>[];\n const xValues = xDataKey\n ? rows.map((d) => d[xDataKey])\n : rows.map((_, i) => String(i));\n\n const isBand = xValues.length > 0 && typeof xValues[0] === 'string';\n\n const { xScale, xDomain, bandWidth } = React.useMemo(() => {\n if (isBand) {\n const domain = xValues.map(String);\n const bs = bandScale(domain, [0, innerWidth]);\n return {\n xScale: (value: unknown) => bs.scale(String(value)) + bs.bandwidth / 2,\n xDomain: domain as unknown[],\n bandWidth: bs.bandwidth,\n };\n } else {\n const numericX = xValues.map(Number).filter(isFinite);\n const minX = numericX.length ? Math.min(...numericX) : 0;\n const maxX = numericX.length ? Math.max(...numericX) : 1;\n const ls = linearScale([minX, maxX], [0, innerWidth]);\n return {\n xScale: (value: unknown) => ls(Number(value)),\n xDomain: [minX, maxX] as unknown[],\n bandWidth: 0,\n };\n }\n }, [isBand, xValues, innerWidth]);\n\n const yDomain = React.useMemo((): [number, number] => {\n if (yDomainProp) {\n const [d0, d1] = yDomainProp;\n const dataKeys = seriesInfo.map((s) => s.dataKey);\n const stackIds = seriesInfo.map((s) => s.stackId);\n const auto = computeYDomain(rows, dataKeys, stackIds);\n return [d0 === 'auto' ? auto[0] : d0, d1 === 'auto' ? auto[1] : d1];\n }\n const dataKeys = seriesInfo.map((s) => s.dataKey);\n const stackIds = seriesInfo.map((s) => s.stackId);\n return computeYDomain(rows, dataKeys, stackIds);\n }, [rows, seriesInfo, yDomainProp]);\n\n const yScale = React.useMemo(\n () => linearScale(yDomain, [innerHeight, 0]),\n [yDomain, innerHeight],\n );\n\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const [tooltip, setTooltip] = React.useState<TooltipState>(TOOLTIP_HIDDEN);\n\n // Stable series index: look up key position in allSeriesKeys.\n // Pure and idempotent — safe to call on every render, no mutable counter needed.\n const registerSeries = React.useCallback((key: string): number => {\n const idx = allSeriesKeys.indexOf(key);\n return idx >= 0 ? idx : 0;\n }, [allSeriesKeys]);\n\n const contextValue: CartesianContextValue = {\n data: data as Record<string, unknown>[],\n dimensions,\n xScale,\n yScale,\n yDomain,\n xDomain,\n xDataKey,\n isBand,\n bandWidth,\n palette: DEFAULT_PALETTE,\n activeIndex,\n setActiveIndex,\n tooltip,\n setTooltip,\n seriesCount: allSeriesKeys.length,\n registerSeries,\n accessibilityMode,\n };\n\n const { svgChildren, overlayChildren } = splitChildren(children);\n const isRow = legendPosition === 'left' || legendPosition === 'right';\n\n return (\n <SharedTooltipProvider tooltip={tooltip} setTooltip={setTooltip} legendEntries={legendEntriesFromScan}>\n <CartesianProvider {...contextValue}>\n <div\n ref={composedRef}\n className={className}\n style={{\n position: 'relative',\n width: widthProp ? width : '100%',\n display: 'flex',\n flexDirection: isRow ? 'row' : 'column',\n alignItems: isRow ? 'center' : 'stretch',\n }}\n >\n {accessibilityMode && <A11yPatternDefs />}\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ overflow: 'visible', display: 'block', flexShrink: 0 }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>{svgChildren}</g>\n </svg>\n {overlayChildren}\n </div>\n </CartesianProvider>\n </SharedTooltipProvider>\n );\n },\n);\nRoot.displayName = 'Chart.Root';\n\n/* ─── A11y pattern defs ─────────────────────────────────────────────── */\n\nfunction A11yPatternDefs() {\n return (\n <svg width={0} height={0} style={{ position: 'absolute' }}>\n <defs>\n <pattern id=\"chart-pattern-0\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <path d=\"M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </pattern>\n <pattern id=\"chart-pattern-1\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect width=\"4\" height=\"4\" fill=\"none\" />\n <circle cx=\"2\" cy=\"2\" r=\"1\" fill=\"currentColor\" />\n </pattern>\n <pattern id=\"chart-pattern-2\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <path d=\"M0,2 H4 M2,0 V4\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </pattern>\n <pattern id=\"chart-pattern-3\" width=\"8\" height=\"8\" patternUnits=\"userSpaceOnUse\">\n <path d=\"M0,8 L8,0\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </pattern>\n <pattern id=\"chart-pattern-4\" width=\"4\" height=\"8\" patternUnits=\"userSpaceOnUse\">\n <rect width=\"2\" height=\"8\" fill=\"currentColor\" />\n </pattern>\n </defs>\n </svg>\n );\n}\n\n/* ─── Grid ──────────────────────────────────────────────────────────── */\n\nconst Grid = React.forwardRef<SVGGElement, ChartGridProps>(\n (\n {\n horizontal = true,\n vertical = false,\n strokeDasharray = '3 3',\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Grid');\n const { dimensions, yDomain, xDomain, isBand, xScale } = ctx;\n const { innerWidth, innerHeight } = dimensions;\n\n const yTicks = niceLinearTicks(yDomain[0], yDomain[1], 5);\n\n return (\n <g ref={ref} aria-hidden=\"true\" className={className}>\n {horizontal &&\n yTicks.map((tick) => {\n const y = linearScale(yDomain, [innerHeight, 0])(tick);\n return (\n <line\n key={tick}\n x1={0}\n y1={y}\n x2={innerWidth}\n y2={y}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray={strokeDasharray}\n />\n );\n })}\n {vertical &&\n (isBand ? (xDomain as string[]) : []).map((d) => {\n const x = xScale(d);\n return (\n <line\n key={String(d)}\n x1={x}\n y1={0}\n x2={x}\n y2={innerHeight}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray={strokeDasharray}\n />\n );\n })}\n </g>\n );\n },\n);\nGrid.displayName = 'Chart.Grid';\n\n/* ─── XAxis ─────────────────────────────────────────────────────────── */\n\nconst XAxis = React.forwardRef<SVGGElement, ChartXAxisProps>(\n (\n {\n dataKey: _dataKey,\n label,\n tickCount = 5,\n tickFormatter,\n hideLine = false,\n hideTicks = false,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.XAxis');\n const { dimensions, xDomain, isBand, xScale } = ctx;\n const { innerWidth, innerHeight } = dimensions;\n\n const ticks: unknown[] = isBand ? (xDomain as string[]) : (xDomain as [number, number]);\n\n const displayTicks = isBand\n ? (ticks as string[])\n : niceLinearTicks(\n (ticks as [number, number])[0],\n (ticks as [number, number])[1],\n tickCount,\n );\n\n const formatTick = (v: unknown): string => {\n if (tickFormatter) return tickFormatter(v);\n return String(v);\n };\n\n return (\n <g ref={ref} transform={`translate(0, ${innerHeight})`} className={className}>\n {!hideLine && (\n <line x1={0} y1={0} x2={innerWidth} y2={0} stroke=\"currentColor\" strokeOpacity={0.3} />\n )}\n {!hideTicks &&\n displayTicks.map((tick, i) => {\n const x = xScale(tick);\n return (\n <g key={i} transform={`translate(${x}, 0)`}>\n <line y1={0} y2={4} stroke=\"currentColor\" strokeOpacity={0.5} />\n <text\n y={16}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.65}\n >\n {formatTick(tick)}\n </text>\n </g>\n );\n })}\n {label && (\n <text\n x={innerWidth / 2}\n y={28}\n textAnchor=\"middle\"\n fontSize={12}\n fill=\"currentColor\"\n fillOpacity={0.8}\n >\n {label}\n </text>\n )}\n </g>\n );\n },\n);\nXAxis.displayName = 'Chart.XAxis';\n\n/* ─── YAxis ─────────────────────────────────────────────────────────── */\n\nconst YAxis = React.forwardRef<SVGGElement, ChartYAxisProps>(\n (\n {\n label,\n tickCount = 5,\n tickFormatter,\n hideLine = false,\n hideTicks = false,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.YAxis');\n const { yDomain, dimensions } = ctx;\n const { innerHeight } = dimensions;\n\n const ticks = niceLinearTicks(yDomain[0], yDomain[1], tickCount);\n\n const formatTick = (v: number): string => {\n if (tickFormatter) return tickFormatter(v);\n // Auto-abbreviate large numbers\n if (Math.abs(v) >= 1_000_000) return `${(v / 1_000_000).toFixed(1)}M`;\n if (Math.abs(v) >= 1_000) return `${(v / 1_000).toFixed(1)}k`;\n return String(v);\n };\n\n const yScale = linearScale(yDomain, [innerHeight, 0]);\n\n return (\n <g ref={ref} className={className}>\n {!hideLine && (\n <line x1={0} y1={0} x2={0} y2={innerHeight} stroke=\"currentColor\" strokeOpacity={0.3} />\n )}\n {!hideTicks &&\n ticks.map((tick) => {\n const y = yScale(tick);\n return (\n <g key={tick} transform={`translate(0, ${y})`}>\n <line x1={-4} y1={0} x2={0} y2={0} stroke=\"currentColor\" strokeOpacity={0.5} />\n <text\n x={-8}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.65}\n >\n {formatTick(tick)}\n </text>\n </g>\n );\n })}\n {label && (\n <text\n transform={`translate(-32, ${innerHeight / 2}) rotate(-90)`}\n textAnchor=\"middle\"\n fontSize={12}\n fill=\"currentColor\"\n fillOpacity={0.8}\n >\n {label}\n </text>\n )}\n </g>\n );\n },\n);\nYAxis.displayName = 'Chart.YAxis';\n\n/* ─── Mark shape renderer ────────────────────────────────────────────── */\n\nfunction renderMarkShape(\n shape: MarkShape | ScatterMarkerShape,\n cx: number,\n cy: number,\n r: number,\n color: string,\n strokeColor: string,\n key: number,\n extraProps?: React.SVGProps<SVGElement>,\n): React.ReactNode {\n const common = {\n fill: color,\n stroke: strokeColor,\n strokeWidth: 1.5,\n ...extraProps,\n };\n\n switch (shape) {\n case 'square':\n return (\n <rect\n key={key}\n x={cx - r}\n y={cy - r}\n width={r * 2}\n height={r * 2}\n {...(common as React.SVGProps<SVGRectElement>)}\n />\n );\n case 'diamond':\n return (\n <polygon\n key={key}\n points={`${cx},${cy - r} ${cx + r},${cy} ${cx},${cy + r} ${cx - r},${cy}`}\n {...(common as React.SVGProps<SVGPolygonElement>)}\n />\n );\n case 'cross':\n return (\n <g key={key} role=\"img\" {...(extraProps as React.SVGProps<SVGGElement>)}>\n <line x1={cx - r} y1={cy} x2={cx + r} y2={cy} stroke={color} strokeWidth={2} />\n <line x1={cx} y1={cy - r} x2={cx} y2={cy + r} stroke={color} strokeWidth={2} />\n </g>\n );\n case 'star':\n // Simplified as diamond for geometric clarity\n return (\n <polygon\n key={key}\n points={`${cx},${cy - r} ${cx + r * 0.4},${cy - r * 0.4} ${cx + r},${cy} ${cx + r * 0.4},${cy + r * 0.4} ${cx},${cy + r} ${cx - r * 0.4},${cy + r * 0.4} ${cx - r},${cy} ${cx - r * 0.4},${cy - r * 0.4}`}\n {...(common as React.SVGProps<SVGPolygonElement>)}\n />\n );\n case 'triangle':\n return (\n <polygon\n key={key}\n points={`${cx},${cy - r} ${cx + r},${cy + r} ${cx - r},${cy + r}`}\n {...(common as React.SVGProps<SVGPolygonElement>)}\n />\n );\n case 'circle':\n default:\n return (\n <circle\n key={key}\n cx={cx}\n cy={cy}\n r={r}\n {...(common as React.SVGProps<SVGCircleElement>)}\n />\n );\n }\n}\n\n/* ─── Highlight opacity helper ───────────────────────────────────────── */\n\nfunction resolveOpacity(\n seriesIndex: number,\n itemIndex: number,\n activeSeriesIndex: number | null,\n activeItemIndex: number | null,\n highlightScope?: HighlightScope,\n): number {\n if (!highlightScope || activeItemIndex === null) return 1;\n const { highlight = 'none', fade = 'none' } = highlightScope;\n\n const isActiveSeries = seriesIndex === activeSeriesIndex;\n const isActiveItem = activeItemIndex === itemIndex;\n\n if (highlight === 'item') {\n if (isActiveItem) return 1;\n if (fade === 'global') return 0.4;\n if (fade === 'series' && isActiveSeries) return 0.4;\n return 0.4;\n }\n\n if (highlight === 'series') {\n if (isActiveSeries) return 1;\n if (fade === 'global' || fade === 'series') return 0.4;\n return 0.4;\n }\n\n return 1;\n}\n\n/* ─── Bar ───────────────────────────────────────────────────────────── */\n\nconst Bar = React.forwardRef<SVGGElement, ChartBarProps>(\n (\n {\n dataKey,\n color,\n name,\n stackId: _stackId,\n orientation = 'vertical',\n radius = 4,\n showLabel = false,\n labelPosition = 'outside',\n labelFormatter,\n highlightScope,\n onClick,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Bar');\n const {\n data,\n dimensions,\n xScale,\n yScale,\n yDomain,\n xDataKey,\n isBand,\n bandWidth,\n palette,\n activeIndex,\n setActiveIndex,\n setTooltip,\n accessibilityMode,\n } = ctx;\n const { innerHeight, innerWidth } = dimensions;\n\n const seriesIndex = ctx.registerSeries(dataKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n const fill = accessibilityMode\n ? A11Y_PATTERNS[seriesIndex % A11Y_PATTERNS.length]\n : resolvedColor;\n\n // ── Horizontal orientation ──────────────────────────────────────────\n if (orientation === 'horizontal') {\n const xValueScale = linearScale(yDomain, [0, innerWidth]);\n const x0 = xValueScale(0);\n\n return (\n <g ref={ref} className={className} aria-label={name ?? dataKey}>\n {data.map((row, i) => {\n const value = row[dataKey];\n if (typeof value !== 'number') return null;\n\n const xVal = isBand ? row[xDataKey] : i;\n // Map band horizontal position proportionally to vertical space\n const xBandCenter = xScale(xVal);\n const yCenter = innerWidth > 0 ? (xBandCenter / innerWidth) * innerHeight : i * 40;\n const barH = isBand\n ? Math.max(1, (bandWidth / innerWidth) * innerHeight)\n : Math.max(2, 20);\n const barX = Math.min(x0, xValueScale(value));\n const barW = Math.max(1, Math.abs(xValueScale(value) - x0));\n const barY = yCenter - barH / 2;\n const r = Math.min(radius, barH / 2, barW / 2);\n\n const isActive = activeIndex === i;\n const baseOpacity = isActive || activeIndex === null ? 1 : 0.6;\n const hlOpacity = resolveOpacity(seriesIndex, i, null, activeIndex, highlightScope);\n const finalOpacity = highlightScope ? hlOpacity : baseOpacity;\n\n const labelText = showLabel\n ? labelFormatter ? labelFormatter(value) : String(value)\n : null;\n const labelX =\n labelPosition === 'center' || labelPosition === 'inside'\n ? barX + barW / 2\n : barX + barW + 5;\n\n return (\n <g key={i}>\n <rect\n x={barX}\n y={barY}\n width={barW}\n height={Math.max(1, barH)}\n rx={r}\n ry={r}\n fill={fill}\n fillOpacity={finalOpacity}\n style={{ transition: 'fill-opacity 150ms ease' }}\n onMouseEnter={(e) => {\n setActiveIndex(i);\n const svgEl = (e.currentTarget as SVGRectElement).closest('svg');\n const svgRect = svgEl?.getBoundingClientRect();\n const elRect = (e.currentTarget as SVGRectElement).getBoundingClientRect();\n if (svgRect) {\n setTooltip({\n visible: true,\n x: elRect.right - svgRect.left,\n y: elRect.top - svgRect.top + elRect.height / 2,\n payload: [{ name: name ?? dataKey, value, color: resolvedColor, dataKey }],\n label: String(isBand ? row[xDataKey] : i),\n });\n }\n }}\n onMouseLeave={() => { setActiveIndex(null); setTooltip(TOOLTIP_HIDDEN); }}\n onClick={() => onClick?.(row, i)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick?.(row, i); } }}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n aria-label={`${name ?? dataKey}: ${value}`}\n />\n {showLabel && labelText !== null && (\n <text\n x={labelX}\n y={yCenter}\n textAnchor={labelPosition === 'center' || labelPosition === 'inside' ? 'middle' : 'start'}\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {labelText}\n </text>\n )}\n </g>\n );\n })}\n </g>\n );\n }\n\n // ── Vertical orientation (default) ──────────────────────────────────\n const y0 = yScale(0);\n\n return (\n <g ref={ref} className={className} aria-label={name ?? dataKey}>\n {data.map((row, i) => {\n const value = row[dataKey];\n if (typeof value !== 'number') return null;\n\n const xVal = isBand ? row[xDataKey] : i;\n const xCenter = xScale(xVal);\n const barW = isBand ? Math.max(1, bandWidth) : Math.max(2, bandWidth || 20);\n const yTop = yScale(value);\n const barH = Math.abs(y0 - yTop);\n const barY = value >= 0 ? yTop : y0;\n\n const isActive = activeIndex === i;\n const r = Math.min(radius, barH / 2, barW / 2);\n\n const baseOpacity = isActive || activeIndex === null ? 1 : 0.6;\n const hlOpacity = resolveOpacity(seriesIndex, i, null, activeIndex, highlightScope);\n const finalOpacity = highlightScope ? hlOpacity : baseOpacity;\n\n const labelText = showLabel\n ? labelFormatter\n ? labelFormatter(value)\n : String(value)\n : null;\n\n // Label y position\n const labelY =\n labelPosition === 'outside'\n ? barY - 5\n : labelPosition === 'center' || labelPosition === 'inside'\n ? barY + barH / 2\n : barY - 5;\n\n return (\n <g key={i}>\n <rect\n x={xCenter - barW / 2}\n y={barY}\n width={barW}\n height={Math.max(1, barH)}\n rx={r}\n ry={r}\n fill={fill}\n fillOpacity={finalOpacity}\n style={{ transition: 'fill-opacity 150ms ease, y 300ms ease, height 300ms ease' }}\n onMouseEnter={(e) => {\n setActiveIndex(i);\n const rect = (e.currentTarget as SVGRectElement)\n .closest('svg')\n ?.getBoundingClientRect();\n const svgRect = (e.currentTarget as SVGRectElement).getBoundingClientRect();\n if (rect) {\n setTooltip({\n visible: true,\n x: svgRect.left - rect.left + svgRect.width / 2,\n y: svgRect.top - rect.top,\n payload: [{ name: name ?? dataKey, value, color: resolvedColor, dataKey }],\n label: String(isBand ? row[xDataKey] : i),\n });\n }\n }}\n onMouseLeave={() => {\n setActiveIndex(null);\n setTooltip(TOOLTIP_HIDDEN);\n }}\n onClick={() => onClick?.(row, i)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick?.(row, i); } }}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n aria-label={`${name ?? dataKey}: ${value}`}\n />\n {showLabel && labelText !== null && (\n <text\n x={xCenter}\n y={labelY}\n textAnchor=\"middle\"\n dominantBaseline={\n labelPosition === 'center' || labelPosition === 'inside'\n ? 'middle'\n : 'auto'\n }\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {labelText}\n </text>\n )}\n </g>\n );\n })}\n </g>\n );\n },\n);\nBar.displayName = 'Chart.Bar';\n\n/* ─── Line ──────────────────────────────────────────────────────────── */\n\nconst Line = React.forwardRef<SVGGElement, ChartLineProps>(\n (\n {\n dataKey,\n color,\n name,\n curve = 'catmullRom',\n dot: dotProp = true,\n showDot,\n dotRadius = 4,\n markShape = 'circle',\n connectNulls = false,\n strokeWidth = 2,\n strokeDasharray,\n highlightScope,\n onClick,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Line');\n const {\n data,\n xScale,\n yScale,\n xDataKey,\n isBand,\n palette,\n activeIndex,\n setActiveIndex,\n setTooltip,\n } = ctx;\n\n const seriesIndex = ctx.registerSeries(dataKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n // Accept either `dot` or `showDot` — both toggle dot rendering\n const dot = showDot !== undefined ? showDot : dotProp;\n\n // Build points — may include nulls if connectNulls=false\n const rawPoints = data.map((row, i) => {\n const value = row[dataKey];\n if (typeof value !== 'number') return null;\n const x = xScale(isBand ? row[xDataKey] : i);\n return { x, y: yScale(value), dataIndex: i, value } as { x: number; y: number; dataIndex: number; value: number };\n });\n\n // For path building: if connectNulls, filter out nulls; otherwise segment at nulls\n const pathD = connectNulls\n ? buildLinePath(\n rawPoints.filter((p): p is NonNullable<typeof p> => p !== null).map((p) => [p.x, p.y]),\n curve,\n )\n : rawPoints.reduce((acc, point, idx) => {\n if (point === null) {\n return acc; // gap — the path will have a visible break if we start a new M\n }\n const prev = rawPoints[idx - 1];\n if (prev === null || idx === 0) {\n return acc + ` M ${point.x.toFixed(3)} ${point.y.toFixed(3)}`;\n }\n return acc + ` L ${point.x.toFixed(3)} ${point.y.toFixed(3)}`;\n }, '');\n\n const validPoints = rawPoints.filter((p): p is NonNullable<typeof p> => p !== null);\n\n // Nothing to render if all values are null\n if (validPoints.length === 0) return null;\n\n // highlightScope: fade the whole series line when another item is active\n const lineOpacity = highlightScope && activeIndex !== null\n ? resolveOpacity(seriesIndex, seriesIndex, seriesIndex, activeIndex, highlightScope)\n : 1;\n\n return (\n <g ref={ref} className={className} aria-label={name ?? dataKey}>\n <path\n d={pathD}\n fill=\"none\"\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n strokeOpacity={lineOpacity}\n style={{ transition: 'd 300ms ease, stroke-opacity 150ms ease' }}\n />\n {dot &&\n validPoints.map((pt, idx) => {\n const { x: px, y: py, dataIndex: i, value } = pt;\n const isActive = activeIndex === i;\n const r = isActive ? dotRadius + 2 : dotRadius;\n const dotOpacity = highlightScope && activeIndex !== null\n ? resolveOpacity(seriesIndex, i, seriesIndex, activeIndex, highlightScope)\n : 1;\n\n const shapeEl = renderMarkShape(\n markShape,\n px,\n py,\n r,\n resolvedColor,\n 'white',\n idx,\n {\n style: { transition: 'r 150ms ease', opacity: dotOpacity },\n onMouseEnter: (e: React.MouseEvent<SVGElement>) => {\n setActiveIndex(i);\n const svgEl = (e.currentTarget as SVGElement).closest('svg');\n const svgRect = svgEl?.getBoundingClientRect();\n const elRect = (e.currentTarget as SVGElement).getBoundingClientRect();\n if (svgRect) {\n setTooltip({\n visible: true,\n x: elRect.left - svgRect.left + elRect.width / 2,\n y: elRect.top - svgRect.top,\n payload: [\n {\n name: name ?? dataKey,\n value,\n color: resolvedColor,\n dataKey,\n },\n ],\n label: String(isBand ? data[i]?.[xDataKey] : i),\n });\n }\n },\n onMouseLeave: () => {\n setActiveIndex(null);\n setTooltip(TOOLTIP_HIDDEN);\n },\n onClick: () => data[i] && onClick?.(data[i], i),\n onKeyDown: (e: React.KeyboardEvent<SVGElement>) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); if (data[i]) onClick?.(data[i], i); } },\n role: onClick ? 'button' : undefined,\n tabIndex: onClick ? 0 : undefined,\n 'aria-label': `${name ?? dataKey}: ${value}`,\n } as React.SVGProps<SVGElement>,\n );\n\n return shapeEl;\n })}\n </g>\n );\n },\n);\nLine.displayName = 'Chart.Line';\n\n/* ─── Area ──────────────────────────────────────────────────────────── */\n\nconst Area = React.forwardRef<SVGGElement, ChartAreaProps>(\n (\n {\n dataKey,\n color,\n name,\n curve = 'catmullRom',\n fillOpacity = 0.3,\n stackId: _stackId,\n strokeWidth = 2,\n baseline,\n connectNulls: _connectNulls = false,\n highlightScope,\n fillByValue = false,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Area');\n const {\n data,\n xScale,\n yScale,\n xDataKey,\n isBand,\n palette,\n dimensions,\n activeIndex,\n } = ctx;\n\n const seriesIndex = ctx.registerSeries(dataKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n const { innerHeight } = dimensions;\n\n const rawPoints = data.map((row, i) => {\n const value = row[dataKey];\n if (typeof value !== 'number') return null;\n const x = xScale(isBand ? row[xDataKey] : i);\n return [x, yScale(value)] as [number, number];\n });\n\n const points: [number, number][] = rawPoints.filter((p): p is [number, number] => p !== null);\n\n if (points.length === 0) return null;\n\n const pathD = buildLinePath(points, curve);\n\n // Resolve baseline y pixel value\n const baselineY =\n baseline !== undefined && baseline !== 'auto' && typeof baseline === 'number'\n ? yScale(baseline)\n : innerHeight;\n\n const areaD = buildAreaPathFlat(points, baselineY, curve);\n\n // Unique gradient ID per series\n const gradientId = `area-gradient-${seriesIndex}`;\n const zeroY = yScale(0);\n\n const aboveColor = resolvedColor;\n const belowColor = palette[2] ?? 'hsl(var(--chart-3))';\n\n const areaOpacity = highlightScope && activeIndex !== null\n ? resolveOpacity(seriesIndex, seriesIndex, seriesIndex, activeIndex, highlightScope)\n : 1;\n\n return (\n <g ref={ref} className={className} aria-label={name ?? dataKey} style={{ opacity: areaOpacity, transition: 'opacity 150ms ease' }}>\n {fillByValue && (\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset={`${(zeroY / innerHeight) * 100}%`} stopColor={aboveColor} stopOpacity={fillOpacity} />\n <stop offset={`${(zeroY / innerHeight) * 100}%`} stopColor={belowColor} stopOpacity={fillOpacity} />\n </linearGradient>\n </defs>\n )}\n <path\n d={areaD}\n fill={fillByValue ? `url(#${gradientId})` : resolvedColor}\n fillOpacity={fillByValue ? 1 : fillOpacity}\n style={{ transition: 'd 300ms ease' }}\n />\n <path\n d={pathD}\n fill=\"none\"\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n style={{ transition: 'd 300ms ease' }}\n />\n </g>\n );\n },\n);\nArea.displayName = 'Chart.Area';\n\n/* ─── Scatter ───────────────────────────────────────────────────────── */\n\nconst Scatter = React.forwardRef<SVGGElement, ChartScatterProps>(\n (\n {\n xKey,\n yKey,\n name,\n color,\n radius = 5,\n markerShape = 'circle',\n highlightScope,\n onClick,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Scatter');\n const {\n data,\n xScale,\n yScale,\n palette,\n activeIndex,\n setActiveIndex,\n setTooltip,\n } = ctx;\n\n const seriesIndex = ctx.registerSeries(name ?? xKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n return (\n <g ref={ref} className={className} aria-label={name ?? `${xKey} vs ${yKey}`}>\n {data.map((row, i) => {\n const xVal = row[xKey];\n const yVal = row[yKey];\n if (typeof xVal !== 'number' || typeof yVal !== 'number') return null;\n\n const cx = xScale(xVal);\n const cy = yScale(yVal);\n const isActive = activeIndex === i;\n const r = isActive ? radius + 2 : radius;\n const ptOpacity = highlightScope && activeIndex !== null\n ? resolveOpacity(seriesIndex, i, seriesIndex, activeIndex, highlightScope) * 0.8\n : (isActive || activeIndex === null ? 0.9 : 0.6);\n\n return renderMarkShape(\n markerShape,\n cx,\n cy,\n r,\n resolvedColor,\n resolvedColor,\n i,\n {\n fillOpacity: ptOpacity,\n strokeWidth: 1,\n style: { transition: 'r 150ms ease, fill-opacity 150ms ease' },\n onMouseEnter: (e: React.MouseEvent<SVGElement>) => {\n setActiveIndex(i);\n const svgEl = (e.currentTarget as SVGElement).closest('svg');\n const svgRect = svgEl?.getBoundingClientRect();\n const elRect = (e.currentTarget as SVGElement).getBoundingClientRect();\n if (svgRect) {\n setTooltip({\n visible: true,\n x: elRect.left - svgRect.left + elRect.width / 2,\n y: elRect.top - svgRect.top,\n payload: [\n { name: xKey, value: xVal, color: resolvedColor, dataKey: xKey },\n { name: yKey, value: yVal, color: resolvedColor, dataKey: yKey },\n ],\n label: String(i),\n });\n }\n },\n onMouseLeave: () => {\n setActiveIndex(null);\n setTooltip(TOOLTIP_HIDDEN);\n },\n onClick: () => onClick?.(row, i),\n onKeyDown: (e: React.KeyboardEvent<SVGElement>) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick?.(row, i); } },\n role: onClick ? 'button' : undefined,\n tabIndex: onClick ? 0 : undefined,\n 'aria-label': `${xKey}: ${xVal}, ${yKey}: ${yVal}`,\n } as React.SVGProps<SVGElement>,\n );\n })}\n </g>\n );\n },\n);\nScatter.displayName = 'Chart.Scatter';\n\n/* ─── Bubble ─────────────────────────────────────────────────────────── */\n\nconst Bubble = React.forwardRef<SVGGElement, ChartBubbleProps>(\n (\n {\n xKey,\n yKey,\n sizeKey,\n name,\n color,\n minRadius = 4,\n maxRadius = 40,\n onClick,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.Bubble');\n const {\n data,\n xScale,\n yScale,\n palette,\n activeIndex,\n setActiveIndex,\n setTooltip,\n } = ctx;\n\n const seriesIndex = ctx.registerSeries(name ?? xKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n const sizeValues = data.map((d) => {\n const v = d[sizeKey];\n return typeof v === 'number' ? v : 0;\n });\n const minSize = Math.min(...sizeValues);\n const maxSize = Math.max(...sizeValues);\n const sizeRange = maxSize - minSize || 1;\n\n const sizeScale = (value: number) =>\n minRadius + ((value - minSize) / sizeRange) * (maxRadius - minRadius);\n\n return (\n <g ref={ref} className={className} aria-label={name ?? `${xKey} vs ${yKey}`}>\n {data.map((row, i) => {\n const xVal = row[xKey];\n const yVal = row[yKey];\n const sizeVal = row[sizeKey];\n if (\n typeof xVal !== 'number' ||\n typeof yVal !== 'number' ||\n typeof sizeVal !== 'number'\n )\n return null;\n\n const cx = xScale(xVal);\n const cy = yScale(yVal);\n const r = sizeScale(sizeVal);\n const isActive = activeIndex === i;\n\n return (\n <circle\n key={i}\n cx={cx}\n cy={cy}\n r={isActive ? r + 3 : r}\n fill={resolvedColor}\n fillOpacity={0.6}\n stroke={resolvedColor}\n strokeWidth={1.5}\n style={{ transition: 'r 150ms ease' }}\n onMouseEnter={(e) => {\n setActiveIndex(i);\n const svgEl = (e.currentTarget as SVGCircleElement).closest('svg');\n const svgRect = svgEl?.getBoundingClientRect();\n const circleRect = (e.currentTarget as SVGCircleElement).getBoundingClientRect();\n if (svgRect) {\n setTooltip({\n visible: true,\n x: circleRect.left - svgRect.left,\n y: circleRect.top - svgRect.top,\n payload: [\n { name: xKey, value: xVal, color: resolvedColor, dataKey: xKey },\n { name: yKey, value: yVal, color: resolvedColor, dataKey: yKey },\n { name: sizeKey, value: sizeVal, color: resolvedColor, dataKey: sizeKey },\n ],\n label: String(i),\n });\n }\n }}\n onMouseLeave={() => {\n setActiveIndex(null);\n setTooltip(TOOLTIP_HIDDEN);\n }}\n onClick={() => onClick?.(row, i)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick?.(row, i); } }}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n aria-label={`${xKey}: ${xVal}, ${yKey}: ${yVal}, size: ${sizeVal}`}\n />\n );\n })}\n </g>\n );\n },\n);\nBubble.displayName = 'Chart.Bubble';\n\n/* ─── Tooltip (cartesian) ───────────────────────────────────────────── */\n\nconst Tooltip = React.forwardRef<HTMLDivElement, ChartTooltipProps>(\n (\n {\n content,\n className,\n background,\n border,\n borderRadius = 8,\n boxShadow = '0 4px 12px rgba(0,0,0,0.15)',\n fontSize = 12,\n },\n ref,\n ) => {\n const ctx = useSharedTooltip('Chart.Tooltip');\n const { tooltip } = ctx;\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted || !tooltip.visible) {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {tooltip.label && `${tooltip.label}: ${tooltip.payload.map((p) => `${p.name} ${p.value}`).join(', ')}`}\n </div>\n );\n }\n\n const style: React.CSSProperties = {\n position: 'absolute',\n left: tooltip.x,\n top: tooltip.y,\n transform: 'translate(-50%, calc(-100% - 8px))',\n pointerEvents: 'none',\n zIndex: 50,\n };\n\n if (content) {\n return (\n <div ref={ref} style={style} className={className}>\n {content(tooltip)}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n style={style}\n className={className}\n >\n <div\n style={{\n background: background ?? 'hsl(var(--background, 0 0% 100%))',\n border: `1px solid ${border ?? 'hsl(var(--border, 220 13% 91%))'}`,\n borderRadius,\n padding: '8px 12px',\n boxShadow,\n fontSize,\n minWidth: 120,\n }}\n >\n {tooltip.label && (\n <div style={{ fontWeight: 600, marginBottom: 4, opacity: 0.8 }}>\n {tooltip.label}\n </div>\n )}\n {tooltip.payload.map((entry, i) => (\n <div key={i} style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <span\n style={{\n display: 'inline-block',\n width: 10,\n height: 10,\n borderRadius: '50%',\n background: entry.color,\n flexShrink: 0,\n }}\n />\n <span style={{ opacity: 0.7 }}>{entry.name}:</span>\n <span style={{ fontWeight: 500 }}>\n {typeof entry.value === 'number'\n ? entry.value.toLocaleString()\n : entry.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n },\n);\nTooltip.displayName = 'Chart.Tooltip';\n\n/* ─── Legend (cartesian) ────────────────────────────────────────────── */\n\nconst Legend = React.forwardRef<HTMLDivElement, ChartLegendProps>(\n (\n {\n position = 'bottom',\n content,\n renderEntry,\n iconType = 'square',\n iconSize = 12,\n className,\n },\n ref,\n ) => {\n const ctx = useSharedTooltip('Chart.Legend');\n const entries = ctx.legendEntries;\n\n const icon = (color: string) => {\n if (iconType === 'circle') {\n return (\n <span\n style={{\n display: 'inline-block',\n width: iconSize,\n height: iconSize,\n borderRadius: '50%',\n background: color,\n flexShrink: 0,\n }}\n />\n );\n }\n if (iconType === 'line') {\n return (\n <span\n style={{\n display: 'inline-block',\n width: iconSize * 1.5,\n height: 3,\n borderRadius: 2,\n background: color,\n flexShrink: 0,\n }}\n />\n );\n }\n return (\n <span\n style={{\n display: 'inline-block',\n width: iconSize,\n height: iconSize,\n borderRadius: 3,\n background: color,\n flexShrink: 0,\n }}\n />\n );\n };\n\n // order drives flex position: top/left renders before SVG, bottom/right after\n const order = position === 'top' || position === 'left' ? -1 : 1;\n const isVertical = position === 'left' || position === 'right';\n\n if (content) {\n return (\n <div ref={ref} className={className} style={{ order }} aria-label=\"Chart legend\">\n {content(entries)}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={className}\n style={{\n display: 'flex',\n flexDirection: isVertical ? 'column' : 'row',\n flexWrap: 'wrap',\n gap: 12,\n justifyContent: 'center',\n padding: isVertical ? '0 8px' : '8px 0',\n order,\n }}\n aria-label=\"Chart legend\"\n >\n {entries.map((entry, i) =>\n renderEntry ? (\n <React.Fragment key={i}>{renderEntry(entry, i)}</React.Fragment>\n ) : (\n <div key={i} style={{ display: 'flex', alignItems: 'center', gap: 6, fontSize: 12 }}>\n {icon(entry.color)}\n <span>{entry.name}</span>\n </div>\n ),\n )}\n </div>\n );\n },\n);\nLegend.displayName = 'Chart.Legend';\n\n/* ─── PieRoot ───────────────────────────────────────────────────────── */\n\nconst PieRoot = React.forwardRef<HTMLDivElement, ChartPieRootProps>(\n (\n {\n data,\n width = 400,\n height = 400,\n className,\n accessibilityLabel = 'Pie chart',\n children,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const [tooltip, setTooltip] = React.useState<TooltipState>(TOOLTIP_HIDDEN);\n\n const contextValue: PieContextValue = {\n data: data as Record<string, unknown>[],\n cx,\n cy,\n palette: DEFAULT_PALETTE,\n tooltip,\n setTooltip,\n };\n\n const rows = data as Record<string, unknown>[];\n const { svgChildren, overlayChildren } = splitChildren(children);\n const legendEntries = collectPieLegendEntries(rows, children);\n\n const legendPosition = ((): 'top' | 'bottom' | 'left' | 'right' => {\n let pos: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) &&\n (child.type as { displayName?: string })?.displayName === 'Chart.Legend') {\n pos = (child.props as ChartLegendProps).position ?? 'bottom';\n }\n });\n return pos;\n })();\n const isRow = legendPosition === 'left' || legendPosition === 'right';\n\n return (\n <SharedTooltipProvider tooltip={tooltip} setTooltip={setTooltip} legendEntries={legendEntries}>\n <PieProvider {...contextValue}>\n <div\n ref={ref}\n className={className}\n style={{\n position: 'relative',\n display: 'inline-flex',\n flexDirection: isRow ? 'row' : 'column',\n alignItems: isRow ? 'center' : 'center',\n }}\n >\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block', flexShrink: 0 }}\n >\n <title>{accessibilityLabel}</title>\n {svgChildren}\n </svg>\n {overlayChildren}\n </div>\n </PieProvider>\n </SharedTooltipProvider>\n );\n },\n);\nPieRoot.displayName = 'Chart.PieRoot';\n\n/* ─── Pie ───────────────────────────────────────────────────────────── */\n\nconst Pie = React.forwardRef<SVGGElement, ChartPieProps>(\n (\n {\n dataKey,\n nameKey = 'name',\n innerRadius = 0,\n outerRadius,\n padAngle = 0,\n cornerRadius = 0,\n colors,\n startAngle: startAngleProp = -90,\n endAngle: endAngleProp = 270,\n arcLabel,\n arcLabelMinAngle = 5,\n onClick,\n className,\n },\n ref,\n ) => {\n const ctx = usePieContext('Chart.Pie');\n const { data, cx, cy, palette, setTooltip } = ctx;\n\n const resolvedColors = colors ?? palette;\n\n const total = data.reduce((s, d) => {\n const v = d[dataKey];\n return s + (typeof v === 'number' ? v : 0);\n }, 0);\n\n const radius = outerRadius ?? Math.min(cx, cy) * 0.85;\n const padRad = (padAngle * Math.PI) / 180;\n const [hovered, setHovered] = React.useState<number | null>(null);\n\n // Convert degrees to radians; distribute slices over [startAngle, endAngle]\n const toRad = (deg: number) => (deg * Math.PI) / 180;\n const arcStartRad = toRad(startAngleProp);\n const arcSpanRad = toRad(endAngleProp - startAngleProp);\n\n let currentAngle = arcStartRad;\n\n const slices = data.map((d, i) => {\n const value = typeof d[dataKey] === 'number' ? (d[dataKey] as number) : 0;\n const sliceAngle = total > 0 ? (value / total) * arcSpanRad : 0;\n const sliceStart = currentAngle + padRad / 2;\n const sliceEnd = currentAngle + sliceAngle - padRad / 2;\n currentAngle += sliceAngle;\n\n const nameVal = d[nameKey];\n const sliceName = typeof nameVal === 'string' || typeof nameVal === 'number' ? String(nameVal) : `Slice ${i}`;\n const sliceColor = resolvedColors[i % resolvedColors.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n const sliceAngleDeg = Math.abs(sliceAngle * (180 / Math.PI));\n\n return { startAngle: sliceStart, endAngle: sliceEnd, value, name: sliceName, color: sliceColor, index: i, d, sliceAngleDeg };\n });\n\n return (\n <g ref={ref} className={className}>\n {slices.map((slice) => {\n const isHovered = hovered === slice.index;\n const expandedRadius = isHovered ? radius + 6 : radius;\n const expandedInner = isHovered && innerRadius > 0 ? innerRadius - 2 : innerRadius;\n\n const pathD = buildArcPath(\n cx,\n cy,\n expandedRadius,\n expandedInner,\n slice.startAngle,\n slice.endAngle,\n cornerRadius,\n );\n\n // Arc label\n let arcLabelEl: React.ReactNode = null;\n if (arcLabel && slice.sliceAngleDeg >= arcLabelMinAngle) {\n const midAngle = (slice.startAngle + slice.endAngle) / 2;\n const labelRadius = innerRadius > 0 ? (innerRadius + radius) / 2 : radius * 0.6;\n const lx = Math.round((cx + labelRadius * Math.sin(midAngle)) * 1e4) / 1e4;\n const ly = Math.round((cy - labelRadius * Math.cos(midAngle)) * 1e4) / 1e4;\n\n let labelText: string;\n if (typeof arcLabel === 'function') {\n labelText = arcLabel({ name: slice.name, value: slice.value, total });\n } else if (arcLabel === 'percentage') {\n labelText = `${Math.round((slice.value / total) * 100)}%`;\n } else {\n labelText = String(slice.value);\n }\n\n arcLabelEl = (\n <text\n x={lx}\n y={ly}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"white\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {labelText}\n </text>\n );\n }\n\n return (\n <g key={slice.index}>\n <path\n d={pathD}\n fill={slice.color}\n style={{ transition: 'd 200ms ease, transform 200ms ease' }}\n onMouseEnter={(e) => {\n setHovered(slice.index);\n const svgEl = (e.currentTarget as SVGPathElement).closest('svg');\n const svgRect = svgEl?.getBoundingClientRect();\n const pathRect = (e.currentTarget as SVGPathElement).getBoundingClientRect();\n if (svgRect) {\n setTooltip({\n visible: true,\n x: pathRect.left - svgRect.left + pathRect.width / 2,\n y: pathRect.top - svgRect.top + pathRect.height / 2,\n payload: [\n { name: slice.name, value: slice.value, color: slice.color, dataKey },\n ],\n label: slice.name,\n });\n }\n }}\n onMouseLeave={() => {\n setHovered(null);\n setTooltip(TOOLTIP_HIDDEN);\n }}\n onClick={() => onClick?.(slice.d, slice.index)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick?.(slice.d, slice.index); } }}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n aria-label={`${slice.name}: ${slice.value}`}\n />\n {arcLabelEl}\n </g>\n );\n })}\n </g>\n );\n },\n);\nPie.displayName = 'Chart.Pie';\n\n/* ─── RadarRoot ─────────────────────────────────────────────────────── */\n\nconst RadarRoot = React.forwardRef<HTMLDivElement, ChartRadarRootProps>(\n (\n {\n data,\n width = 400,\n height = 400,\n className,\n accessibilityLabel = 'Radar chart',\n children,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const radius = Math.min(cx, cy) * 0.8;\n\n const rows = data as Record<string, unknown>[];\n\n // Collect angle keys from PolarAngleAxis child\n const angleKeys: string[] = [];\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n (child.type as { displayName?: string })?.displayName === 'Chart.PolarAngleAxis'\n ) {\n const dKey = (child.props as ChartPolarAngleAxisProps).dataKey;\n if (dKey) {\n // Use data to get unique values of this key as axis labels\n rows.forEach((d) => {\n const val = d[dKey];\n if (typeof val === 'string' && !angleKeys.includes(val)) {\n angleKeys.push(val);\n }\n });\n }\n }\n });\n\n const contextValue: RadarContextValue = {\n data: rows,\n cx,\n cy,\n radius,\n angleKeys,\n palette: DEFAULT_PALETTE,\n };\n\n const [tooltip, setTooltip] = React.useState<TooltipState>(TOOLTIP_HIDDEN);\n const { svgChildren, overlayChildren } = splitChildren(children);\n const legendEntries = collectRadarLegendEntries(children);\n\n const legendPosition = ((): 'top' | 'bottom' | 'left' | 'right' => {\n let pos: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) &&\n (child.type as { displayName?: string })?.displayName === 'Chart.Legend') {\n pos = (child.props as ChartLegendProps).position ?? 'bottom';\n }\n });\n return pos;\n })();\n const isRow = legendPosition === 'left' || legendPosition === 'right';\n\n return (\n <SharedTooltipProvider tooltip={tooltip} setTooltip={setTooltip} legendEntries={legendEntries}>\n <RadarProvider {...contextValue}>\n <div\n ref={ref}\n className={className}\n style={{\n position: 'relative',\n display: 'inline-flex',\n flexDirection: isRow ? 'row' : 'column',\n alignItems: 'center',\n }}\n >\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block', flexShrink: 0 }}\n >\n <title>{accessibilityLabel}</title>\n {svgChildren}\n </svg>\n {overlayChildren}\n </div>\n </RadarProvider>\n </SharedTooltipProvider>\n );\n },\n);\nRadarRoot.displayName = 'Chart.RadarRoot';\n\n/* ─── PolarGrid ─────────────────────────────────────────────────────── */\n\nconst PolarGrid = React.forwardRef<SVGGElement, ChartPolarGridProps>(\n ({ rings = 5, shape = 'sharp', className }, ref) => {\n const ctx = useRadarContext('Chart.PolarGrid');\n const { cx, cy, radius, angleKeys } = ctx;\n\n const angleStep = (2 * Math.PI) / Math.max(angleKeys.length, 3);\n const spokeCount = Math.max(angleKeys.length, 3);\n\n return (\n <g ref={ref} className={className} aria-hidden=\"true\">\n {/* Rings */}\n {Array.from({ length: rings }, (_, i) => {\n const r = (radius / rings) * (i + 1);\n\n if (shape === 'circular') {\n return (\n <circle\n key={i}\n cx={cx}\n cy={cy}\n r={r}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeOpacity={0.15}\n strokeWidth={1}\n />\n );\n }\n\n // Polygon ring\n const points = Array.from({ length: spokeCount }, (__, j) => {\n const angle = j * angleStep - Math.PI / 2;\n return [cx + r * Math.cos(angle), cy + r * Math.sin(angle)];\n });\n const d = points.map((p, j) => `${j === 0 ? 'M' : 'L'} ${fmt(p[0] ?? 0)} ${fmt(p[1] ?? 0)}`).join(' ') + ' Z';\n return (\n <path\n key={i}\n d={d}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeOpacity={0.15}\n strokeWidth={1}\n />\n );\n })}\n {/* Spokes */}\n {Array.from({ length: spokeCount }, (_, i) => {\n const angle = i * angleStep - Math.PI / 2;\n return (\n <line\n key={i}\n x1={cx}\n y1={cy}\n x2={cx + radius * Math.cos(angle)}\n y2={cy + radius * Math.sin(angle)}\n stroke=\"currentColor\"\n strokeOpacity={0.15}\n strokeWidth={1}\n />\n );\n })}\n </g>\n );\n },\n);\nPolarGrid.displayName = 'Chart.PolarGrid';\n\n/* ─── PolarAngleAxis ────────────────────────────────────────────────── */\n\nconst PolarAngleAxis = React.forwardRef<SVGGElement, ChartPolarAngleAxisProps>(\n ({ dataKey: _dataKey, className }, ref) => {\n const ctx = useRadarContext('Chart.PolarAngleAxis');\n const { cx, cy, radius, angleKeys } = ctx;\n\n const angleStep = (2 * Math.PI) / Math.max(angleKeys.length, 1);\n\n return (\n <g ref={ref} className={className}>\n {angleKeys.map((key, i) => {\n const angle = i * angleStep - Math.PI / 2;\n const labelRadius = radius + 18;\n const x = Math.round((cx + labelRadius * Math.cos(angle)) * 1e4) / 1e4;\n const y = Math.round((cy + labelRadius * Math.sin(angle)) * 1e4) / 1e4;\n\n return (\n <text\n key={key}\n x={x}\n y={y}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.7}\n >\n {key}\n </text>\n );\n })}\n </g>\n );\n },\n);\nPolarAngleAxis.displayName = 'Chart.PolarAngleAxis';\n\n/* ─── Radar series ──────────────────────────────────────────────────── */\n\nconst Radar = React.forwardRef<SVGGElement, ChartRadarProps>(\n ({ dataKey, color, name, fillOpacity = 0.25, fillArea = true, showMark: showMarkProp = true, dot: dotAlias, className }, ref) => {\n const showMark = dotAlias !== undefined ? dotAlias : showMarkProp;\n const ctx = useRadarContext('Chart.Radar');\n const { data, cx, cy, radius, angleKeys, palette } = ctx;\n\n // Each entry in data has one row per axis\n // We map angleKeys to their values in data\n const values = angleKeys.map((key) => {\n const row = data.find((d) => {\n // Try to find a row where the subject/label column matches this key\n const firstKey = Object.keys(d)[0];\n return firstKey !== undefined && d[firstKey] === key;\n });\n if (!row) return 0;\n const val = row[dataKey];\n return typeof val === 'number' ? val : 0;\n });\n\n // Normalise to [0, 1]\n const maxVal = Math.max(...values, 1);\n const normalised = values.map((v) => v / maxVal);\n\n const seriesColor = color ?? palette[0] ?? 'hsl(var(--chart-1))';\n const pathD = buildRadarPath(normalised, cx, cy, radius);\n\n return (\n <g ref={ref} className={className} aria-label={name ?? dataKey}>\n <path\n d={pathD}\n fill={seriesColor}\n fillOpacity={fillArea ? fillOpacity : 0}\n stroke={seriesColor}\n strokeWidth={2}\n />\n {showMark && normalised.map((norm, i) => {\n const angle = (i * (2 * Math.PI)) / normalised.length - Math.PI / 2;\n const px = cx + radius * norm * Math.cos(angle);\n const py = cy + radius * norm * Math.sin(angle);\n return (\n <circle\n key={i}\n cx={px}\n cy={py}\n r={3}\n fill={seriesColor}\n aria-label={`${angleKeys[i]}: ${values[i]}`}\n />\n );\n })}\n </g>\n );\n },\n);\nRadar.displayName = 'Chart.Radar';\n\n/* ─── Standalone: Heatmap ───────────────────────────────────────────── */\n\nconst Heatmap = React.forwardRef<HTMLDivElement, ChartHeatmapProps>(\n (\n {\n data,\n xKey,\n yKey,\n valueKey,\n colorRange = ['hsl(var(--chart-1))', 'hsl(var(--chart-2))'],\n width = 500,\n height = 300,\n margin: marginProp,\n className,\n accessibilityLabel = 'Heatmap',\n },\n ref,\n ) => {\n const margin: ChartMargin = { ...DEFAULT_MARGIN, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n const rows = data as Record<string, unknown>[];\n const xValues = [...new Set(rows.map((d) => String(d[xKey] ?? '')))];\n const yValues = [...new Set(rows.map((d) => String(d[yKey] ?? '')))];\n\n const xBand = bandScale(xValues, [0, innerWidth], 0.05, 0.05);\n const yBand = bandScale(yValues, [0, innerHeight], 0.05, 0.05);\n\n const cells = computeHeatmapCells(\n rows,\n xKey,\n yKey,\n valueKey,\n xBand.scale,\n yBand.scale,\n xBand.bandwidth,\n yBand.bandwidth,\n );\n\n // Simple linear interpolation between two CSS colors\n // We use opacity as a proxy since we can't parse CSS vars at runtime\n const cellFill = (_norm: number): string => {\n // Use opacity variation on the first color\n return colorRange[0];\n };\n\n const cellOpacity = (norm: number): number => 0.1 + norm * 0.9;\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* X axis labels */}\n {xValues.map((v) => (\n <text\n key={v}\n x={xBand.scale(v) + xBand.bandwidth / 2}\n y={innerHeight + 16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {v}\n </text>\n ))}\n {/* Y axis labels */}\n {yValues.map((v) => (\n <text\n key={v}\n x={-8}\n y={yBand.scale(v) + yBand.bandwidth / 2}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {v}\n </text>\n ))}\n {/* Cells */}\n {cells.map((cell, i) => (\n <rect\n key={i}\n x={cell.x}\n y={cell.y}\n width={cell.width}\n height={cell.height}\n rx={2}\n fill={cellFill(cell.normalised)}\n fillOpacity={cellOpacity(cell.normalised)}\n aria-label={`${cell.xValue}, ${cell.yValue}: ${cell.value}`}\n />\n ))}\n </g>\n </svg>\n </div>\n );\n },\n);\nHeatmap.displayName = 'Chart.Heatmap';\n\n/* ─── Standalone: Treemap ───────────────────────────────────────────── */\n\nconst Treemap = React.forwardRef<HTMLDivElement, ChartTreemapProps>(\n (\n {\n data,\n width = 600,\n height = 400,\n padding = 4,\n colors,\n className,\n accessibilityLabel = 'Treemap',\n onNodeClick,\n },\n ref,\n ) => {\n const palette = colors ?? DEFAULT_PALETTE;\n const nodes = squarifyTreemap(data, 0, 0, width, height, padding);\n\n const renderNode = (node: TreemapLayoutNode, depth: number): React.ReactNode => {\n const fill = node.color ?? palette[depth % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n return (\n <g key={`${node.name}-${node.x}-${node.y}`}>\n <rect\n x={node.x}\n y={node.y}\n width={node.width}\n height={node.height}\n fill={fill}\n fillOpacity={0.85 - depth * 0.15}\n rx={4}\n stroke=\"white\"\n strokeWidth={2}\n onClick={() => onNodeClick?.(node)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onNodeClick?.(node); } }}\n role={onNodeClick ? 'button' : undefined}\n tabIndex={onNodeClick ? 0 : undefined}\n aria-label={`${node.name}: ${node.value}`}\n style={{ cursor: onNodeClick ? 'pointer' : 'default' }}\n />\n {node.width > 40 && node.height > 24 && (\n <text\n x={node.x + node.width / 2}\n y={node.y + node.height / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={Math.min(14, node.width / 5, node.height / 3)}\n fill=\"white\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {node.name}\n </text>\n )}\n {node.children?.map((child) => renderNode(child, depth + 1))}\n </g>\n );\n };\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {nodes.map((node) => renderNode(node, 0))}\n </svg>\n </div>\n );\n },\n);\nTreemap.displayName = 'Chart.Treemap';\n\n/* ─── Standalone: Funnel ────────────────────────────────────────────── */\n\n/**\n * Build a funnel section SVG path with optional curve type.\n */\nfunction buildFunnelSectionPath(\n x1: number,\n x2: number,\n x3: number,\n x4: number,\n y1: number,\n y2: number,\n curve: 'linear' | 'linear-sharp' | 'bump' | 'step',\n): string {\n if (curve === 'bump') {\n const yMid = (y1 + y2) / 2;\n return [\n `M ${fmt(x1)} ${fmt(y1)}`,\n `C ${fmt(x1)} ${fmt(yMid)}, ${fmt(x4)} ${fmt(yMid)}, ${fmt(x4)} ${fmt(y2)}`,\n `L ${fmt(x3)} ${fmt(y2)}`,\n `C ${fmt(x3)} ${fmt(yMid)}, ${fmt(x2)} ${fmt(yMid)}, ${fmt(x2)} ${fmt(y1)}`,\n 'Z',\n ].join(' ');\n }\n\n if (curve === 'step') {\n const yMid = (y1 + y2) / 2;\n return [\n `M ${fmt(x1)} ${fmt(y1)}`,\n `L ${fmt(x2)} ${fmt(y1)}`,\n `L ${fmt(x2)} ${fmt(yMid)}`,\n `L ${fmt(x3)} ${fmt(yMid)}`,\n `L ${fmt(x3)} ${fmt(y2)}`,\n `L ${fmt(x4)} ${fmt(y2)}`,\n `L ${fmt(x4)} ${fmt(yMid)}`,\n `L ${fmt(x1)} ${fmt(yMid)}`,\n 'Z',\n ].join(' ');\n }\n\n // linear / linear-sharp (straight trapezoid)\n return [\n `M ${fmt(x1)} ${fmt(y1)}`,\n `L ${fmt(x2)} ${fmt(y1)}`,\n `L ${fmt(x3)} ${fmt(y2)}`,\n `L ${fmt(x4)} ${fmt(y2)}`,\n 'Z',\n ].join(' ');\n}\n\nconst Funnel = React.forwardRef<HTMLDivElement, ChartFunnelProps>(\n (\n {\n data,\n width = 400,\n height = 300,\n labelPosition: _labelPosition = 'center',\n variant = 'filled',\n curve = 'linear',\n gap = 0,\n className,\n accessibilityLabel = 'Funnel chart',\n onSegmentClick,\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 10, right: 80, bottom: 10, left: 80 };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n // Use a gap-aware layout\n const segments = computeFunnelLayout(data, margin.left, margin.top, innerWidth, innerHeight, Math.max(gap, 0));\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {segments.map((seg, i) => {\n const resolvedColor = seg.color ?? DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ?? DEFAULT_PALETTE[0] ?? 'hsl(var(--chart-1))';\n const segCx = (seg.x1 + seg.x2) / 2;\n const segCy = (seg.y1 + seg.y2) / 2;\n\n const customPath = buildFunnelSectionPath(\n seg.x1, seg.x2, seg.x3, seg.x4, seg.y1, seg.y2, curve,\n );\n\n const isOutlined = variant === 'outlined';\n\n return (\n <g key={i}>\n <path\n d={customPath}\n fill={isOutlined ? 'transparent' : resolvedColor}\n fillOpacity={isOutlined ? 0 : 0.85}\n stroke={resolvedColor}\n strokeWidth={isOutlined ? 2 : 0}\n onClick={() => onSegmentClick?.(data[i]!, i)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onSegmentClick?.(data[i]!, i); } }}\n role={onSegmentClick ? 'button' : undefined}\n tabIndex={onSegmentClick ? 0 : undefined}\n aria-label={`${seg.name}: ${seg.value}`}\n style={{ cursor: onSegmentClick ? 'pointer' : 'default', transition: 'fill-opacity 150ms' }}\n />\n {/* Center label */}\n <text\n x={segCx}\n y={segCy - 6}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={13}\n fontWeight={600}\n fill={isOutlined ? resolvedColor : 'white'}\n style={{ pointerEvents: 'none' }}\n >\n {seg.name}\n </text>\n <text\n x={segCx}\n y={segCy + 10}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill={isOutlined ? resolvedColor : 'white'}\n fillOpacity={0.85}\n style={{ pointerEvents: 'none' }}\n >\n {seg.value.toLocaleString()} ({seg.percentage.toFixed(1)}%)\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nFunnel.displayName = 'Chart.Funnel';\n\n/* ─── Standalone: Gauge ─────────────────────────────────────────────── */\n\nconst Gauge = React.forwardRef<HTMLDivElement, ChartGaugeProps>(\n (\n {\n value,\n min = 0,\n max = 100,\n startAngle = -135,\n endAngle = 135,\n thickness = 20,\n colorStops,\n showLabel = true,\n label,\n width = 200,\n height = 150,\n className,\n accessibilityLabel,\n },\n ref,\n ) => {\n const outerRadius = Math.min(width, height * 1.3) / 2 - 4;\n const gaugeData = computeGaugeArcs(\n value,\n min,\n max,\n startAngle,\n endAngle,\n outerRadius,\n thickness,\n );\n\n const fraction = gaugeData.fraction;\n\n // Determine fill color from colorStops\n let fillColor = DEFAULT_PALETTE[0];\n if (colorStops && colorStops.length > 0) {\n const pct = fraction * 100;\n let chosen = colorStops[0]?.[1] ?? fillColor;\n for (const [stopPct, stopColor] of colorStops) {\n if (pct >= stopPct) chosen = stopColor;\n }\n fillColor = chosen;\n }\n\n const cx = width / 2;\n const cy = height * 0.65;\n\n // Recompute with centered cx/cy\n const trackPath = computeGaugeArcs(value, min, max, startAngle, endAngle, outerRadius, thickness).trackPath;\n const fillPath = computeGaugeArcs(value, min, max, startAngle, endAngle, outerRadius, thickness).fillPath;\n\n const labelText = (() => {\n if (!showLabel) return null;\n if (typeof label === 'function') return label(value, min, max);\n if (typeof label === 'string') return label;\n return value.toLocaleString();\n })();\n\n const a11yLabel = accessibilityLabel ?? `Gauge: ${value} out of ${max}`;\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={a11yLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{a11yLabel}</title>\n <g transform={`translate(${cx - outerRadius}, ${cy - outerRadius})`}>\n {/* Track */}\n <path\n d={trackPath}\n fill=\"currentColor\"\n fillOpacity={0.1}\n />\n {/* Fill */}\n {fillPath && (\n <path\n d={fillPath}\n fill={fillColor}\n style={{ transition: 'd 400ms ease' }}\n />\n )}\n </g>\n {/* Center label */}\n {showLabel && labelText && (\n <text\n x={cx}\n y={cy + 4}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={Math.max(14, outerRadius / 3)}\n fontWeight={700}\n fill=\"currentColor\"\n >\n {labelText}\n </text>\n )}\n {/* Min/max labels */}\n <text\n x={cx - outerRadius + thickness / 2}\n y={cy + 16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.5}\n >\n {min}\n </text>\n <text\n x={cx + outerRadius - thickness / 2}\n y={cy + 16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.5}\n >\n {max}\n </text>\n </svg>\n </div>\n );\n },\n);\nGauge.displayName = 'Chart.Gauge';\n\n/* ─── GaugeContainer / GaugeValueArc / GaugeReferenceArc ────────────── */\n\n/**\n * Headless gauge wrapper that provides a GaugeContext to child arc components.\n * Renders an SVG centered with the given width/height.\n */\nconst GaugeContainer = React.forwardRef<HTMLDivElement, ChartGaugeContainerProps>(\n (\n {\n value,\n min = 0,\n max = 100,\n startAngle = -135,\n endAngle = 135,\n width = 200,\n height = 200,\n thickness = 20,\n className,\n accessibilityLabel,\n children,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const outerRadius = Math.min(cx, cy) - 4;\n const innerRadius = outerRadius - thickness;\n const fraction = Math.min(1, Math.max(0, (value - min) / (max - min)));\n\n const a11yLabel = accessibilityLabel ?? `Gauge: ${value} out of ${max}`;\n\n const contextValue: GaugeContextValue = {\n value,\n min,\n max,\n startAngle,\n endAngle,\n cx,\n cy,\n outerRadius,\n innerRadius,\n fraction,\n };\n\n return (\n <GaugeProvider {...contextValue}>\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={a11yLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{a11yLabel}</title>\n {children}\n </svg>\n </div>\n </GaugeProvider>\n );\n },\n);\nGaugeContainer.displayName = 'Chart.GaugeContainer';\n\n/**\n * The colored value arc inside a GaugeContainer.\n * Reads value/angle context from GaugeContainer.\n */\nconst GaugeValueArc = React.forwardRef<SVGPathElement, ChartGaugeValueArcProps>(\n ({ color, colorStops, className }, ref) => {\n const ctx = useGaugeContext('Chart.GaugeValueArc');\n const { cx, cy, outerRadius, innerRadius, fraction, startAngle, endAngle } = ctx;\n\n let fillColor = color ?? DEFAULT_PALETTE[0] ?? 'hsl(var(--chart-1))';\n if (colorStops && colorStops.length > 0) {\n const pct = fraction * 100;\n let chosen = colorStops[0]?.[1] ?? fillColor;\n for (const [stopPct, stopColor] of colorStops) {\n if (pct >= stopPct) chosen = stopColor;\n }\n fillColor = chosen;\n }\n\n const toRad = (deg: number) => (deg * Math.PI) / 180;\n const startRad = toRad(startAngle);\n const endRad = toRad(endAngle);\n const fillEndRad = startRad + (endRad - startRad) * fraction;\n\n if (fraction <= 0) return null;\n\n const fillPath = buildGaugeContainerArcPath(cx, cy, outerRadius, innerRadius, startRad, fillEndRad);\n\n return (\n <path\n ref={ref}\n d={fillPath}\n fill={fillColor}\n className={className}\n style={{ transition: 'd 400ms ease' }}\n />\n );\n },\n);\nGaugeValueArc.displayName = 'Chart.GaugeValueArc';\n\n/**\n * The gray background track arc inside a GaugeContainer.\n */\nconst GaugeReferenceArc = React.forwardRef<SVGPathElement, ChartGaugeReferenceArcProps>(\n ({ color, className }, ref) => {\n const ctx = useGaugeContext('Chart.GaugeReferenceArc');\n const { cx, cy, outerRadius, innerRadius, startAngle, endAngle } = ctx;\n\n const toRad = (deg: number) => (deg * Math.PI) / 180;\n const startRad = toRad(startAngle);\n const endRad = toRad(endAngle);\n\n const trackPath = buildGaugeContainerArcPath(cx, cy, outerRadius, innerRadius, startRad, endRad);\n\n return (\n <path\n ref={ref}\n d={trackPath}\n fill={color ?? 'currentColor'}\n fillOpacity={color ? 1 : 0.1}\n className={className}\n />\n );\n },\n);\nGaugeReferenceArc.displayName = 'Chart.GaugeReferenceArc';\n\n/**\n * Internal helper: build a donut arc for the GaugeContainer composition components.\n * Uses the same \"clockwise from top\" angle convention as computeGaugeArcs.\n */\nfunction buildGaugeContainerArcPath(\n cx: number,\n cy: number,\n outerR: number,\n innerR: number,\n startRad: number,\n endRad: number,\n): string {\n // Convert \"clockwise from top\" to SVG convention (0 = right)\n const toSvg = (r: number) => r - Math.PI / 2;\n const s = toSvg(startRad);\n const e = toSvg(endRad);\n const sweep = Math.abs(endRad - startRad);\n const largeArc = sweep > Math.PI ? 1 : 0;\n\n const ox1 = cx + outerR * Math.cos(s);\n const oy1 = cy + outerR * Math.sin(s);\n const ox2 = cx + outerR * Math.cos(e);\n const oy2 = cy + outerR * Math.sin(e);\n const ix1 = cx + innerR * Math.cos(e);\n const iy1 = cy + innerR * Math.sin(e);\n const ix2 = cx + innerR * Math.cos(s);\n const iy2 = cy + innerR * Math.sin(s);\n\n return [\n `M ${fmt(ox1)} ${fmt(oy1)}`,\n `A ${fmt(outerR)} ${fmt(outerR)} 0 ${largeArc} 1 ${fmt(ox2)} ${fmt(oy2)}`,\n `L ${fmt(ix1)} ${fmt(iy1)}`,\n `A ${fmt(innerR)} ${fmt(innerR)} 0 ${largeArc} 0 ${fmt(ix2)} ${fmt(iy2)}`,\n 'Z',\n ].join(' ');\n}\n\n/* ─── Standalone: Candlestick ───────────────────────────────────────── */\n\nconst CandlestickChart = React.forwardRef<HTMLDivElement, ChartCandlestickProps>(\n (\n {\n data,\n width = 600,\n height = 300,\n margin: marginProp,\n bullColor = 'hsl(var(--chart-2, 160 60% 45%))',\n bearColor = 'hsl(var(--chart-5, 340 75% 55%))',\n className,\n accessibilityLabel = 'Candlestick chart',\n },\n ref,\n ) => {\n const margin: ChartMargin = { ...DEFAULT_MARGIN, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n // Y domain from all prices\n const allPrices = data.flatMap((d) => [d.open, d.high, d.low, d.close]);\n const minPrice = Math.min(...allPrices);\n const maxPrice = Math.max(...allPrices);\n const yScale = linearScale(\n [minPrice - (maxPrice - minPrice) * 0.05, maxPrice + (maxPrice - minPrice) * 0.05],\n [innerHeight, 0],\n );\n\n const n = data.length;\n const step = innerWidth / Math.max(n, 1);\n const candleWidth = step * 0.7;\n const xScale = (i: number) => step * i + step / 2;\n\n const bars = computeCandlestickBars(\n data,\n xScale,\n yScale,\n candleWidth,\n );\n\n // Y axis ticks\n const yTicks = niceLinearTicks(minPrice, maxPrice, 5);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* Grid lines */}\n {yTicks.map((tick) => {\n const y = yScale(tick);\n return (\n <line\n key={tick}\n x1={0}\n y1={y}\n x2={innerWidth}\n y2={y}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray=\"3 3\"\n />\n );\n })}\n {/* Y Axis */}\n {yTicks.map((tick) => {\n const y = yScale(tick);\n return (\n <text\n key={tick}\n x={-8}\n y={y}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {tick.toFixed(2)}\n </text>\n );\n })}\n {/* Candles */}\n {bars.map((bar, i) => {\n const color = bar.bullish ? bullColor : bearColor;\n const bodyY = Math.min(bar.openY, bar.closeY);\n const bodyH = Math.max(1, Math.abs(bar.openY - bar.closeY));\n const xCenter = bar.x;\n\n return (\n <g key={i} aria-label={`${data[i]?.date ?? i}: O${data[i]?.open} H${data[i]?.high} L${data[i]?.low} C${data[i]?.close}`}>\n {/* Wick */}\n <line\n x1={xCenter}\n y1={bar.highY}\n x2={xCenter}\n y2={bar.lowY}\n stroke={color}\n strokeWidth={1}\n />\n {/* Body */}\n <rect\n x={xCenter - bar.candleWidth / 2}\n y={bodyY}\n width={bar.candleWidth}\n height={bodyH}\n fill={color}\n rx={1}\n />\n </g>\n );\n })}\n {/* X axis labels */}\n {data.map((d, i) => (\n <text\n key={i}\n x={xScale(i)}\n y={innerHeight + 16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.5}\n >\n {String(d.date)}\n </text>\n ))}\n </g>\n </svg>\n </div>\n );\n },\n);\nCandlestickChart.displayName = 'Chart.Candlestick';\n\n/* ─── SparkLine ─────────────────────────────────────────────────────── */\n\n/**\n * Compact inline sparkline chart (no axes, no tooltip).\n * Renders a tiny SVG line or bar chart from a plain number array.\n */\nconst SparkLine = React.forwardRef<SVGSVGElement, ChartSparkLineProps>(\n (\n {\n data,\n type = 'line',\n width = 120,\n height = 40,\n color = 'hsl(var(--chart-1))',\n strokeWidth = 1.5,\n area = true,\n showTooltip = false,\n showHighlight = false,\n yMin,\n yMax,\n className,\n },\n ref,\n ) => {\n const [hoverState, setHoverState] = React.useState<{\n index: number;\n x: number;\n y: number;\n value: number;\n } | null>(null);\n\n if (data.length === 0) {\n return <svg ref={ref} width={width} height={height} className={className} />;\n }\n\n const minVal = yMin !== undefined ? yMin : Math.min(...data);\n const maxVal = yMax !== undefined ? yMax : Math.max(...data);\n const range = maxVal - minVal || 1;\n\n const pad = 2;\n const innerW = width - pad * 2;\n const innerH = height - pad * 2;\n\n const toX = (i: number) => pad + (i / Math.max(data.length - 1, 1)) * innerW;\n const toY = (v: number) => pad + (1 - (v - minVal) / range) * innerH;\n\n if (type === 'bar') {\n const barWidth = Math.max(1, innerW / data.length - 1);\n return (\n <svg\n ref={ref}\n width={width}\n height={height}\n className={className}\n aria-hidden=\"true\"\n style={{ display: 'block' }}\n >\n {data.map((v, i) => {\n const barH = Math.max(1, ((v - minVal) / range) * innerH);\n const x = pad + (i / data.length) * innerW;\n const y = pad + innerH - barH;\n return (\n <rect\n key={i}\n x={x}\n y={y}\n width={barWidth}\n height={barH}\n fill={color}\n fillOpacity={0.8}\n rx={1}\n />\n );\n })}\n </svg>\n );\n }\n\n // Line sparkline\n const points = data.map((v, i) => `${fmt(toX(i))},${fmt(toY(v))}`).join(' ');\n const areaPoints = [\n `${fmt(toX(0))},${fmt(pad + innerH)}`,\n ...data.map((v, i) => `${fmt(toX(i))},${fmt(toY(v))}`),\n `${fmt(toX(data.length - 1))},${fmt(pad + innerH)}`,\n ].join(' ');\n\n const handleMouseMove = (e: React.MouseEvent<SVGSVGElement>) => {\n if (!showTooltip && !showHighlight) return;\n const svgRect = e.currentTarget.getBoundingClientRect();\n const mouseX = e.clientX - svgRect.left;\n // Find nearest data point\n let nearestIdx = 0;\n let minDist = Infinity;\n for (let i = 0; i < data.length; i++) {\n const px = toX(i);\n const d = Math.abs(px - mouseX);\n if (d < minDist) {\n minDist = d;\n nearestIdx = i;\n }\n }\n const val = data[nearestIdx];\n if (val !== undefined) {\n setHoverState({\n index: nearestIdx,\n x: toX(nearestIdx),\n y: toY(val),\n value: val,\n });\n }\n };\n\n const handleMouseLeave = () => setHoverState(null);\n\n return (\n <svg\n ref={ref}\n width={width}\n height={height}\n className={className}\n aria-hidden=\"true\"\n style={{ display: 'block', position: 'relative' }}\n onMouseMove={(showTooltip || showHighlight) ? handleMouseMove : undefined}\n onMouseLeave={(showTooltip || showHighlight) ? handleMouseLeave : undefined}\n >\n {area && (\n <polygon points={areaPoints} fill={color} fillOpacity={0.15} />\n )}\n <polyline\n points={points}\n fill=\"none\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n {/* Highlight dot */}\n {showHighlight && hoverState && (\n <circle\n cx={hoverState.x}\n cy={hoverState.y}\n r={3}\n fill={color}\n stroke=\"white\"\n strokeWidth={1.5}\n />\n )}\n {/* Simple tooltip label */}\n {showTooltip && hoverState && (\n <g>\n <rect\n x={Math.min(hoverState.x - 18, width - 40)}\n y={Math.max(hoverState.y - 22, 2)}\n width={36}\n height={16}\n rx={3}\n fill=\"currentColor\"\n fillOpacity={0.75}\n />\n <text\n x={Math.min(hoverState.x, width - 22)}\n y={Math.max(hoverState.y - 10, 14)}\n textAnchor=\"middle\"\n fontSize={9}\n fill=\"white\"\n style={{ pointerEvents: 'none' }}\n >\n {hoverState.value}\n </text>\n </g>\n )}\n </svg>\n );\n },\n);\nSparkLine.displayName = 'Chart.SparkLine';\n\n/* ─── RangeBar ──────────────────────────────────────────────────────── */\n\n/**\n * Floating bar series — renders bars from yScale(low) to yScale(high).\n * Must be used inside Chart.Root.\n */\nconst RangeBar = React.forwardRef<SVGGElement, ChartRangeBarProps>(\n (\n {\n lowKey,\n highKey,\n color,\n name,\n radius = 3,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.RangeBar');\n const {\n data,\n dimensions,\n xScale,\n yScale,\n xDataKey,\n isBand,\n bandWidth,\n palette,\n } = ctx;\n const { innerHeight: _innerHeight } = dimensions;\n\n const seriesIndex = ctx.registerSeries(name ?? lowKey);\n const resolvedColor =\n color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n return (\n <g ref={ref} className={className} aria-label={name ?? `${lowKey}–${highKey}`}>\n {data.map((row, i) => {\n const low = row[lowKey];\n const high = row[highKey];\n if (typeof low !== 'number' || typeof high !== 'number') return null;\n\n const xVal = isBand ? row[xDataKey] : i;\n const xCenter = xScale(xVal);\n const barW = isBand ? Math.max(1, bandWidth * 0.7) : Math.max(2, (bandWidth || 20) * 0.7);\n const yTop = yScale(Math.max(low, high));\n const yBottom = yScale(Math.min(low, high));\n const barH = Math.max(1, yBottom - yTop);\n const r = Math.min(radius, barH / 2, barW / 2);\n\n return (\n <rect\n key={i}\n x={xCenter - barW / 2}\n y={yTop}\n width={barW}\n height={barH}\n rx={r}\n ry={r}\n fill={resolvedColor}\n fillOpacity={0.8}\n aria-label={`${name ?? `${lowKey}–${highKey}`}: ${low}–${high}`}\n />\n );\n })}\n </g>\n );\n },\n);\nRangeBar.displayName = 'Chart.RangeBar';\n\n/* ─── ReferenceLine ─────────────────────────────────────────────────── */\n\n/**\n * Horizontal or vertical reference line drawn across the plot area.\n * Must be used inside Chart.Root.\n */\nconst ReferenceLine = React.forwardRef<SVGGElement, ChartReferenceLineProps>(\n (\n {\n y: yValue,\n x: xValue,\n label,\n stroke = 'hsl(var(--chart-5, 340 75% 55%))',\n strokeDasharray = '4 4',\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.ReferenceLine');\n const { dimensions, yScale, xScale } = ctx;\n const { innerWidth, innerHeight } = dimensions;\n\n if (yValue !== undefined) {\n const y = yScale(yValue);\n return (\n <g ref={ref} className={className} aria-label={label ? `Reference: ${label}` : 'Reference line'}>\n <line\n x1={0}\n y1={y}\n x2={innerWidth}\n y2={y}\n stroke={stroke}\n strokeWidth={1.5}\n strokeDasharray={strokeDasharray}\n />\n {label && (\n <text\n x={innerWidth}\n y={y - 4}\n textAnchor=\"end\"\n fontSize={11}\n fill={stroke}\n fillOpacity={0.85}\n >\n {label}\n </text>\n )}\n </g>\n );\n }\n\n if (xValue !== undefined) {\n const x = xScale(xValue);\n return (\n <g ref={ref} className={className} aria-label={label ? `Reference: ${label}` : 'Reference line'}>\n <line\n x1={x}\n y1={0}\n x2={x}\n y2={innerHeight}\n stroke={stroke}\n strokeWidth={1.5}\n strokeDasharray={strokeDasharray}\n />\n {label && (\n <text\n x={x + 4}\n y={8}\n textAnchor=\"start\"\n fontSize={11}\n fill={stroke}\n fillOpacity={0.85}\n >\n {label}\n </text>\n )}\n </g>\n );\n }\n\n return null;\n },\n);\nReferenceLine.displayName = 'Chart.ReferenceLine';\n\n/* ─── ReferenceArea ─────────────────────────────────────────────────── */\n\n/**\n * Shaded rectangular region drawn on the plot area.\n * Must be used inside Chart.Root.\n */\nconst ReferenceArea = React.forwardRef<SVGGElement, ChartReferenceAreaProps>(\n (\n {\n y1: y1Prop,\n y2: y2Prop,\n x1: x1Prop,\n x2: x2Prop,\n fill = 'hsl(var(--chart-1))',\n fillOpacity = 0.15,\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.ReferenceArea');\n const { dimensions, yScale, xScale } = ctx;\n const { innerWidth, innerHeight } = dimensions;\n\n const x1 = x1Prop !== undefined ? xScale(x1Prop) : 0;\n const x2 = x2Prop !== undefined ? xScale(x2Prop) : innerWidth;\n const y1 = y1Prop !== undefined ? yScale(y1Prop) : 0;\n const y2 = y2Prop !== undefined ? yScale(y2Prop) : innerHeight;\n\n const rectX = Math.min(x1, x2);\n const rectY = Math.min(y1, y2);\n const rectW = Math.abs(x2 - x1);\n const rectH = Math.abs(y2 - y1);\n\n return (\n <g ref={ref} className={className} aria-hidden=\"true\">\n <rect\n x={rectX}\n y={rectY}\n width={rectW}\n height={rectH}\n fill={fill}\n fillOpacity={fillOpacity}\n />\n </g>\n );\n },\n);\nReferenceArea.displayName = 'Chart.ReferenceArea';\n\n/* ─── RadialBar context ─────────────────────────────────────────────── */\n\ninterface RadialBarContextValue {\n data: Record<string, unknown>[];\n cx: number;\n cy: number;\n maxRadius: number;\n palette: string[];\n gap: number;\n}\n\nconst [RadialBarProvider, useRadialBarContext] =\n createContext<RadialBarContextValue>('ChartRadialBar');\n\n/* ─── RadialBarRoot ─────────────────────────────────────────────────── */\n\n/**\n * Root container for radial bar (polar bar) charts.\n */\nconst RadialBarRoot = React.forwardRef<HTMLDivElement, ChartRadialBarRootProps>(\n (\n {\n data,\n width = 400,\n height = 400,\n gap = 4,\n className,\n accessibilityLabel = 'Radial bar chart',\n children,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const maxRadius = Math.min(cx, cy) * 0.95;\n\n return (\n <RadialBarProvider\n data={data as Record<string, unknown>[]}\n cx={cx}\n cy={cy}\n maxRadius={maxRadius}\n palette={DEFAULT_PALETTE}\n gap={gap}\n >\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {children}\n </svg>\n </div>\n </RadialBarProvider>\n );\n },\n);\nRadialBarRoot.displayName = 'Chart.RadialBarRoot';\n\n/* ─── RadialBar ─────────────────────────────────────────────────────── */\n\n/**\n * Radial bar series — each data row gets one arc at a different radius level.\n * Must be used inside Chart.RadialBarRoot.\n */\nconst RadialBar = React.forwardRef<SVGGElement, ChartRadialBarProps>(\n (\n {\n dataKey,\n nameKey = 'name',\n colors,\n innerRadius: innerRadiusFraction = 0.2,\n outerRadius: outerRadiusFraction = 0.9,\n layout = 'vertical',\n className,\n },\n ref,\n ) => {\n const ctx = useRadialBarContext('Chart.RadialBar');\n const { data, cx, cy, maxRadius, palette, gap } = ctx;\n\n const resolvedColors = colors ?? palette;\n\n if (data.length === 0) return null;\n\n const values = data.map((row) => {\n const v = row[dataKey];\n return typeof v === 'number' ? v : 0;\n });\n const maxValue = Math.max(...values, 1);\n\n const outerR = maxRadius * outerRadiusFraction;\n const innerR = maxRadius * innerRadiusFraction;\n const totalThickness = outerR - innerR;\n const trackThickness = Math.max(1, (totalThickness - gap * (data.length - 1)) / data.length);\n const barThickness = trackThickness;\n\n // Full arc: -90deg (top) to 270deg (full circle) → in radians: -π/2 to 3π/2\n const startAngle = -Math.PI / 2;\n const fullAngle = 2 * Math.PI;\n\n return (\n <g ref={ref} className={className}>\n {data.map((row, i) => {\n const value = values[i] ?? 0;\n const fraction = value / maxValue;\n const trackOuterR = outerR - i * (trackThickness + gap);\n const trackInnerR = trackOuterR - barThickness;\n const fillColor =\n resolvedColors[i % resolvedColors.length] ??\n resolvedColors[0] ??\n 'hsl(var(--chart-1))';\n const label = String(row[nameKey] ?? i);\n\n let trackPath: string;\n let fillPath: string;\n\n if (layout === 'horizontal') {\n // Horizontal layout: angle sweeps from start by fraction of full circle\n const fullEnd = startAngle + fullAngle - 0.001;\n const fillEnd = startAngle + fullAngle * fraction;\n trackPath = buildRadialArcPath(cx, cy, trackOuterR, trackInnerR, startAngle, fullEnd);\n fillPath = fraction > 0 ? buildRadialArcPath(cx, cy, trackOuterR, trackInnerR, startAngle, fillEnd) : '';\n } else {\n // Vertical layout (default): radius encodes value — all bars same angle, but different radius\n // Track: full circle\n const fullEnd = startAngle + fullAngle - 0.001;\n const scaledOuterR = trackInnerR + barThickness * fraction;\n trackPath = buildRadialArcPath(cx, cy, trackOuterR, trackInnerR, startAngle, fullEnd);\n fillPath = fraction > 0 ? buildRadialArcPath(cx, cy, scaledOuterR, trackInnerR, startAngle, fullEnd) : '';\n }\n\n return (\n <g key={i} aria-label={`${label}: ${value}`}>\n {/* Track */}\n <path\n d={trackPath}\n fill=\"currentColor\"\n fillOpacity={0.07}\n />\n {/* Fill */}\n {fillPath && (\n <path\n d={fillPath}\n fill={fillColor}\n fillOpacity={0.85}\n style={{ transition: 'd 400ms ease' }}\n />\n )}\n {/* Label */}\n {trackOuterR > 20 && (\n <text\n x={cx}\n y={cy - (trackOuterR + trackInnerR) / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n style={{ pointerEvents: 'none' }}\n >\n {label}\n </text>\n )}\n </g>\n );\n })}\n </g>\n );\n },\n);\nRadialBar.displayName = 'Chart.RadialBar';\n\n/**\n * Build a donut arc SVG path from startAngle to endAngle.\n * Angles are in radians, measured from SVG convention (right = 0).\n */\nfunction buildRadialArcPath(\n cx: number,\n cy: number,\n outerR: number,\n innerR: number,\n startRad: number,\n endRad: number,\n): string {\n const sweep = endRad - startRad;\n const largeArc = Math.abs(sweep) > Math.PI ? 1 : 0;\n const sweepDir = sweep > 0 ? 1 : 0;\n\n const ox1 = cx + outerR * Math.cos(startRad);\n const oy1 = cy + outerR * Math.sin(startRad);\n const ox2 = cx + outerR * Math.cos(endRad);\n const oy2 = cy + outerR * Math.sin(endRad);\n const ix1 = cx + innerR * Math.cos(endRad);\n const iy1 = cy + innerR * Math.sin(endRad);\n const ix2 = cx + innerR * Math.cos(startRad);\n const iy2 = cy + innerR * Math.sin(startRad);\n\n return [\n `M ${fmt(ox1)} ${fmt(oy1)}`,\n `A ${fmt(outerR)} ${fmt(outerR)} 0 ${largeArc} ${sweepDir} ${fmt(ox2)} ${fmt(oy2)}`,\n `L ${fmt(ix1)} ${fmt(iy1)}`,\n `A ${fmt(innerR)} ${fmt(innerR)} 0 ${largeArc} ${sweepDir === 1 ? 0 : 1} ${fmt(ix2)} ${fmt(iy2)}`,\n 'Z',\n ].join(' ');\n}\n\n/* ─── Standalone: Waterfall ─────────────────────────────────────────── */\n\n/**\n * Waterfall chart — bars start where the previous bar ended.\n * Positive values go up, negative go down. Connector lines link bars.\n */\nconst Waterfall = React.forwardRef<HTMLDivElement, ChartWaterfallProps>(\n (\n {\n data,\n width = 500,\n height = 300,\n margin: marginProp,\n className,\n accessibilityLabel = 'Waterfall chart',\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 20, right: 20, bottom: 40, left: 50, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n if (data.length === 0) {\n return <div ref={ref} className={className} />;\n }\n\n // Compute running totals\n const bars: {\n name: string;\n value: number;\n start: number;\n end: number;\n color?: string;\n }[] = [];\n\n let running = 0;\n for (const item of data) {\n const start = running;\n const end = running + item.value;\n bars.push({ name: item.name, value: item.value, start, end, color: item.color });\n running = end;\n }\n\n // Y domain\n const allY = bars.flatMap((b) => [b.start, b.end]);\n const yMin = Math.min(0, ...allY);\n const yMax = Math.max(0, ...allY);\n const yPad = (yMax - yMin) * 0.1 || 1;\n const yDomain: [number, number] = [yMin - yPad, yMax + yPad];\n\n const xScale = bandScale(\n data.map((d) => d.name),\n [0, innerWidth],\n );\n const yScale = linearScale(yDomain, [innerHeight, 0]);\n const y0 = yScale(0);\n\n const barW = xScale.bandwidth * 0.7;\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* Zero line */}\n <line\n x1={0}\n y1={y0}\n x2={innerWidth}\n y2={y0}\n stroke=\"currentColor\"\n strokeOpacity={0.25}\n />\n {/* Bars */}\n {bars.map((bar, i) => {\n const xPos = xScale.scale(bar.name) + (xScale.bandwidth - barW) / 2;\n const yTop = yScale(Math.max(bar.start, bar.end));\n const yBottom = yScale(Math.min(bar.start, bar.end));\n const barH = Math.max(1, yBottom - yTop);\n const isPositive = bar.value >= 0;\n const defaultColor = isPositive\n ? DEFAULT_PALETTE[1] ?? 'hsl(var(--chart-2))'\n : DEFAULT_PALETTE[4] ?? 'hsl(var(--chart-5))';\n const fill = bar.color ?? defaultColor;\n\n // Connector line to next bar\n const nextBar = bars[i + 1];\n const connectorY = yScale(bar.end);\n\n return (\n <g key={i}>\n <rect\n x={xPos}\n y={yTop}\n width={barW}\n height={barH}\n fill={fill}\n fillOpacity={0.85}\n rx={3}\n aria-label={`${bar.name}: ${bar.value >= 0 ? '+' : ''}${bar.value}`}\n />\n {/* Value label */}\n <text\n x={xPos + barW / 2}\n y={yTop - 4}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.75}\n >\n {bar.value >= 0 ? '+' : ''}{bar.value}\n </text>\n {/* Connector */}\n {nextBar && (\n <line\n x1={xPos + barW}\n y1={connectorY}\n x2={xScale.scale(nextBar.name) + (xScale.bandwidth - barW) / 2}\n y2={connectorY}\n stroke=\"currentColor\"\n strokeOpacity={0.35}\n strokeDasharray=\"3 3\"\n strokeWidth={1}\n />\n )}\n {/* X label */}\n <text\n x={xPos + barW / 2}\n y={innerHeight + 16}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.65}\n >\n {bar.name}\n </text>\n </g>\n );\n })}\n {/* Y axis ticks */}\n {niceLinearTicks(yDomain[0], yDomain[1], 5).map((tick) => {\n const y = yScale(tick);\n return (\n <g key={tick} transform={`translate(0, ${y})`}>\n <line x1={-4} y1={0} x2={0} y2={0} stroke=\"currentColor\" strokeOpacity={0.4} />\n <text\n x={-8}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {tick >= 1000 ? `${(tick / 1000).toFixed(1)}k` : tick}\n </text>\n </g>\n );\n })}\n </g>\n </svg>\n </div>\n );\n },\n);\nWaterfall.displayName = 'Chart.Waterfall';\n\n/* ─── Standalone: Sankey ────────────────────────────────────────────── */\n\ninterface SankeyLayoutNode extends SankeyNode {\n layer: number;\n x: number;\n y: number;\n nodeHeight: number;\n totalIn: number;\n totalOut: number;\n inOffset: number;\n outOffset: number;\n}\n\n/**\n * Basic Sankey diagram — nodes + bezier curved links proportional to value.\n */\nconst Sankey = React.forwardRef<HTMLDivElement, ChartSankeyProps>(\n (\n {\n nodes,\n links,\n width = 600,\n height = 400,\n nodePadding = 8,\n nodeWidth = 24,\n nodeAlignment = 'justify',\n showLinkValues = false,\n className,\n accessibilityLabel = 'Sankey diagram',\n },\n ref,\n ) => {\n // BFS to compute layers\n const nodeMap = new Map<string, SankeyLayoutNode>();\n for (const n of nodes) {\n nodeMap.set(n.id, {\n ...n,\n layer: -1,\n x: 0,\n y: 0,\n nodeHeight: 0,\n totalIn: 0,\n totalOut: 0,\n inOffset: 0,\n outOffset: 0,\n });\n }\n\n // Accumulate link values\n for (const link of links) {\n const src = nodeMap.get(link.source);\n const tgt = nodeMap.get(link.target);\n if (src) src.totalOut += link.value;\n if (tgt) tgt.totalIn += link.value;\n }\n\n // BFS forward layer assignment (min distance from source)\n const targets = new Set(links.map((l) => l.target));\n const sources = nodes.filter((n) => !targets.has(n.id)).map((n) => n.id);\n\n const queue: string[] = [...sources];\n for (const id of queue) {\n const node = nodeMap.get(id);\n if (!node) continue;\n if (node.layer === -1) node.layer = 0;\n for (const link of links) {\n if (link.source === id) {\n const tgt = nodeMap.get(link.target);\n if (tgt) {\n tgt.layer = Math.max(tgt.layer, node.layer + 1);\n if (!queue.includes(link.target)) queue.push(link.target);\n }\n }\n }\n }\n\n // Group by layer\n const layers = new Map<number, SankeyLayoutNode[]>();\n for (const node of nodeMap.values()) {\n const l = node.layer < 0 ? 0 : node.layer;\n node.layer = l;\n if (!layers.has(l)) layers.set(l, []);\n layers.get(l)!.push(node);\n }\n\n const maxLayer = Math.max(...Array.from(layers.keys()));\n const _numLayers = maxLayer + 1;\n const sankeyMargin = { top: 10, right: 10, bottom: 10, left: 10 };\n const innerW = width - sankeyMargin.left - sankeyMargin.right;\n const innerH = height - sankeyMargin.top - sankeyMargin.bottom;\n\n // Apply nodeAlignment: 'left' = min BFS layer (already done), 'right' = max dist from sink,\n // 'justify' = source left, sink right (default behavior), 'center' = center intermediates\n if (nodeAlignment === 'right') {\n // Reverse BFS: compute max distance from sinks\n const sinkIds = new Set(\n Array.from(nodeMap.keys()).filter((id) => !links.some((l) => l.source === id)),\n );\n // Reset layers and recompute from sinks backwards\n for (const node of nodeMap.values()) node.layer = -1;\n const rqueue = Array.from(sinkIds);\n for (const id of rqueue) {\n const node = nodeMap.get(id);\n if (!node) continue;\n if (node.layer === -1) node.layer = 0;\n for (const link of links) {\n if (link.target === id) {\n const src = nodeMap.get(link.source);\n if (src) {\n src.layer = Math.max(src.layer, node.layer + 1);\n if (!rqueue.includes(link.source)) rqueue.push(link.source);\n }\n }\n }\n }\n // Flip: layer = maxLayer - layer\n const newMax = Math.max(...Array.from(nodeMap.values()).map((n) => n.layer), 0);\n for (const node of nodeMap.values()) node.layer = newMax - node.layer;\n } else if (nodeAlignment === 'center') {\n // Center: average of min forward and max backward distance\n const fwdLayer = new Map<string, number>();\n for (const [id, node] of nodeMap) fwdLayer.set(id, node.layer);\n // Just keep existing BFS layers as is; center intermediates won't move sources/sinks\n }\n // 'left' is already the default BFS assignment (min distance)\n // 'justify': sources at 0, sinks at maxLayer (default BFS already does this)\n\n // Rebuild layers map after alignment adjustments\n layers.clear();\n for (const node of nodeMap.values()) {\n const l = node.layer < 0 ? 0 : node.layer;\n node.layer = l;\n if (!layers.has(l)) layers.set(l, []);\n layers.get(l)!.push(node);\n }\n\n const newMaxLayer = Math.max(...Array.from(layers.keys()));\n const newNumLayers = newMaxLayer + 1;\n\n // X positions per layer\n const layerX = (layer: number) =>\n sankeyMargin.left + (newNumLayers <= 1 ? 0 : (layer / (newNumLayers - 1)) * (innerW - nodeWidth));\n\n // Total value for scaling\n const totalValue = Math.max(\n 1,\n ...Array.from(layers.values()).map((layerNodes) =>\n layerNodes.reduce((s, n) => s + Math.max(n.totalIn, n.totalOut), 0),\n ),\n );\n\n // Compute node heights and y positions\n for (const [, layerNodes] of layers) {\n const totalHeight =\n layerNodes.reduce((s, n) => s + Math.max(n.totalIn, n.totalOut, 1), 0) /\n totalValue *\n innerH;\n const availH = Math.min(innerH, totalHeight + nodePadding * (layerNodes.length - 1));\n const scale = availH / (totalHeight + nodePadding * (layerNodes.length - 1)) || 1;\n\n let yOffset = sankeyMargin.top;\n for (const node of layerNodes) {\n node.x = layerX(node.layer);\n node.nodeHeight = Math.max(\n 8,\n (Math.max(node.totalIn, node.totalOut, 1) / totalValue) * innerH * scale,\n );\n node.y = yOffset;\n yOffset += node.nodeHeight + nodePadding;\n node.inOffset = 0;\n node.outOffset = 0;\n }\n }\n\n // Build link paths\n const linkPaths: { path: string; color: string; opacity: number; value: number; key: string; midX: number; midY: number }[] = [];\n\n for (const link of links) {\n const src = nodeMap.get(link.source);\n const tgt = nodeMap.get(link.target);\n if (!src || !tgt) continue;\n\n const totalVal = Math.max(\n 1,\n Math.max(src.totalOut, src.totalIn, 1),\n );\n const linkThickness = Math.max(\n 2,\n (link.value / totalVal) * src.nodeHeight,\n );\n\n const x1 = src.x + nodeWidth;\n const y1 = src.y + src.outOffset + linkThickness / 2;\n src.outOffset += linkThickness;\n\n const x2 = tgt.x;\n const y2 = tgt.y + tgt.inOffset + linkThickness / 2;\n tgt.inOffset += linkThickness;\n\n const cpx = (x1 + x2) / 2;\n\n const path = [\n `M ${fmt(x1)} ${fmt(y1 - linkThickness / 2)}`,\n `C ${fmt(cpx)} ${fmt(y1 - linkThickness / 2)}, ${fmt(cpx)} ${fmt(y2 - linkThickness / 2)}, ${fmt(x2)} ${fmt(y2 - linkThickness / 2)}`,\n `L ${fmt(x2)} ${fmt(y2 + linkThickness / 2)}`,\n `C ${fmt(cpx)} ${fmt(y2 + linkThickness / 2)}, ${fmt(cpx)} ${fmt(y1 + linkThickness / 2)}, ${fmt(x1)} ${fmt(y1 + linkThickness / 2)}`,\n 'Z',\n ].join(' ');\n\n linkPaths.push({\n path,\n color: src.color ?? DEFAULT_PALETTE[Array.from(nodeMap.keys()).indexOf(link.source) % DEFAULT_PALETTE.length] ?? 'hsl(var(--chart-1))',\n opacity: 0.35,\n value: link.value,\n key: `${link.source}-${link.target}`,\n midX: cpx,\n midY: (y1 + y2) / 2,\n });\n }\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {/* Links */}\n {linkPaths.map((lp) => (\n <g key={lp.key}>\n <path\n d={lp.path}\n fill={lp.color}\n fillOpacity={lp.opacity}\n stroke=\"none\"\n />\n {showLinkValues && (\n <text\n x={lp.midX}\n y={lp.midY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.75}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {lp.value}\n </text>\n )}\n </g>\n ))}\n {/* Nodes */}\n {Array.from(nodeMap.values()).map((node, i) => {\n const fill =\n node.color ??\n DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ??\n 'hsl(var(--chart-1))';\n return (\n <g key={node.id} aria-label={node.id}>\n <rect\n x={node.x}\n y={node.y}\n width={nodeWidth}\n height={node.nodeHeight}\n fill={fill}\n rx={3}\n />\n <text\n x={node.x < width / 2 ? node.x + nodeWidth + 4 : node.x - 4}\n y={node.y + node.nodeHeight / 2}\n textAnchor={node.x < width / 2 ? 'start' : 'end'}\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.8}\n >\n {node.id}\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nSankey.displayName = 'Chart.Sankey';\n\n/* ─── Standalone: Pyramid ───────────────────────────────────────────── */\n\n/**\n * Pyramid chart — like Funnel but widest at bottom (rows reversed).\n * Shares the same funnel layout algorithm with reversed data order.\n */\nconst Pyramid = React.forwardRef<HTMLDivElement, ChartPyramidProps>(\n (\n {\n data,\n width = 400,\n height = 300,\n labelPosition: _labelPosition = 'center',\n className,\n accessibilityLabel = 'Pyramid chart',\n onSegmentClick,\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 10, right: 80, bottom: 10, left: 80 };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n // Reverse data so widest (largest) is at bottom\n const reversed = [...data].reverse();\n const segments = computeFunnelLayout(reversed, margin.left, margin.top, innerWidth, innerHeight, 4);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {segments.map((seg, i) => {\n const originalIndex = data.length - 1 - i;\n const originalEntry = data[originalIndex];\n const fill =\n seg.color ??\n DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ??\n DEFAULT_PALETTE[0];\n const cx = (seg.x1 + seg.x2) / 2;\n const cy = (seg.y1 + seg.y2) / 2;\n\n return (\n <g key={i}>\n <path\n d={seg.path}\n fill={fill ?? DEFAULT_PALETTE[0]}\n fillOpacity={0.85}\n onClick={() => originalEntry && onSegmentClick?.(originalEntry, originalIndex)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); if (originalEntry) onSegmentClick?.(originalEntry, originalIndex); } }}\n role={onSegmentClick ? 'button' : undefined}\n tabIndex={onSegmentClick ? 0 : undefined}\n aria-label={`${seg.name}: ${seg.value}`}\n style={{ cursor: onSegmentClick ? 'pointer' : 'default', transition: 'fill-opacity 150ms' }}\n />\n <text\n x={cx}\n y={cy - 6}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={13}\n fontWeight={600}\n fill=\"white\"\n style={{ pointerEvents: 'none' }}\n >\n {seg.name}\n </text>\n <text\n x={cx}\n y={cy + 10}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"white\"\n fillOpacity={0.85}\n style={{ pointerEvents: 'none' }}\n >\n {seg.value.toLocaleString()}\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nPyramid.displayName = 'Chart.Pyramid';\n\n/* ─── Standalone: Gantt ─────────────────────────────────────────────── */\n\n/**\n * Gantt chart — horizontal bars on a numeric time axis.\n * Each task gets its own row.\n */\nconst Gantt = React.forwardRef<HTMLDivElement, ChartGanttProps>(\n (\n {\n tasks,\n width = 600,\n height = 300,\n margin: marginProp,\n className,\n accessibilityLabel = 'Gantt chart',\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 10, right: 20, bottom: 30, left: 120, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n if (tasks.length === 0) {\n return <div ref={ref} className={className} />;\n }\n\n const timeMin = Math.min(...tasks.map((t) => t.start));\n const timeMax = Math.max(...tasks.map((t) => t.end));\n const timePad = (timeMax - timeMin) * 0.02 || 1;\n const timeDomain: [number, number] = [timeMin - timePad, timeMax + timePad];\n\n const xScale = linearScale(timeDomain, [0, innerWidth]);\n const rowHeight = Math.max(12, innerHeight / tasks.length - 4);\n const barPad = Math.min(4, rowHeight * 0.15);\n\n const timeTicks = niceLinearTicks(timeDomain[0], timeDomain[1], 6);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* Vertical grid lines */}\n {timeTicks.map((tick) => (\n <line\n key={tick}\n x1={xScale(tick)}\n y1={0}\n x2={xScale(tick)}\n y2={innerHeight}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray=\"3 3\"\n />\n ))}\n {/* Task bars */}\n {tasks.map((task, i) => {\n const y = i * (rowHeight + barPad);\n const x = xScale(task.start);\n const barW = Math.max(2, xScale(task.end) - xScale(task.start));\n const fill =\n task.color ??\n DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ??\n DEFAULT_PALETTE[0] ??\n 'hsl(var(--chart-1))';\n\n return (\n <g key={task.id} aria-label={`${task.name}: ${task.start}–${task.end}`}>\n {/* Row label */}\n <text\n x={-8}\n y={y + rowHeight / 2}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.75}\n >\n {task.name}\n </text>\n {/* Bar */}\n <rect\n x={x}\n y={y}\n width={barW}\n height={rowHeight}\n fill={fill}\n fillOpacity={0.85}\n rx={3}\n />\n {/* Inline label if bar is wide enough */}\n {barW > 40 && (\n <text\n x={x + barW / 2}\n y={y + rowHeight / 2}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"white\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none' }}\n >\n {task.name}\n </text>\n )}\n </g>\n );\n })}\n {/* X axis */}\n <g transform={`translate(0, ${innerHeight})`}>\n <line x1={0} y1={0} x2={innerWidth} y2={0} stroke=\"currentColor\" strokeOpacity={0.3} />\n {timeTicks.map((tick) => (\n <g key={tick} transform={`translate(${xScale(tick)}, 0)`}>\n <line y1={0} y2={4} stroke=\"currentColor\" strokeOpacity={0.5} />\n <text\n y={16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {tick}\n </text>\n </g>\n ))}\n </g>\n </g>\n </svg>\n </div>\n );\n },\n);\nGantt.displayName = 'Chart.Gantt';\n\n/* ─── RadialLine context ────────────────────────────────────────────── */\n\ninterface RadialLineContextValue {\n data: Record<string, unknown>[];\n cx: number;\n cy: number;\n radius: number;\n nameKeys: string[];\n palette: string[];\n}\n\nconst [RadialLineProvider, useRadialLineContext] =\n createContext<RadialLineContextValue>('ChartRadialLine');\n\n/* ─── RadialLineRoot ────────────────────────────────────────────────── */\n\nconst RadialLineRoot = React.forwardRef<HTMLDivElement, ChartRadialLineRootProps>(\n (\n {\n data,\n width = 400,\n height = 400,\n className,\n accessibilityLabel = 'Radial line chart',\n children,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const radius = Math.min(cx, cy) * 0.8;\n const rows = data as Record<string, unknown>[];\n\n // Derive nameKey from the RadialLine child prop (default 'name')\n let nameKey = 'name';\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n (child.type as { displayName?: string })?.displayName === 'Chart.RadialLine'\n ) {\n const nk = (child.props as ChartRadialLineProps).nameKey;\n if (nk) nameKey = nk;\n }\n });\n\n const nameKeys: string[] = [];\n rows.forEach((d) => {\n const val = d[nameKey];\n const key = typeof val === 'string' || typeof val === 'number' ? String(val) : null;\n if (key !== null && !nameKeys.includes(key)) nameKeys.push(key);\n });\n\n const [tooltip, setTooltip] = React.useState<TooltipState>(TOOLTIP_HIDDEN);\n const { svgChildren, overlayChildren } = splitChildren(children);\n const legendEntries = collectRadarLegendEntries(children);\n\n const legendPosition = ((): 'top' | 'bottom' | 'left' | 'right' => {\n let pos: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) &&\n (child.type as { displayName?: string })?.displayName === 'Chart.Legend') {\n pos = (child.props as ChartLegendProps).position ?? 'bottom';\n }\n });\n return pos;\n })();\n const isRow = legendPosition === 'left' || legendPosition === 'right';\n\n return (\n <SharedTooltipProvider tooltip={tooltip} setTooltip={setTooltip} legendEntries={legendEntries}>\n <RadialLineProvider\n data={rows}\n cx={cx}\n cy={cy}\n radius={radius}\n nameKeys={nameKeys}\n palette={DEFAULT_PALETTE}\n >\n <div\n ref={ref}\n className={className}\n style={{\n position: 'relative',\n display: 'inline-flex',\n flexDirection: isRow ? 'row' : 'column',\n alignItems: 'center',\n }}\n >\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block', flexShrink: 0 }}\n >\n <title>{accessibilityLabel}</title>\n {svgChildren}\n </svg>\n {overlayChildren}\n </div>\n </RadialLineProvider>\n </SharedTooltipProvider>\n );\n },\n);\nRadialLineRoot.displayName = 'Chart.RadialLineRoot';\n\n/* ─── RadialLine ────────────────────────────────────────────────────── */\n\nconst RadialLine = React.forwardRef<SVGGElement, ChartRadialLineProps>(\n (\n {\n dataKey,\n nameKey = 'name',\n color,\n curve = 'linear',\n closePath = true,\n area = false,\n fillOpacity = 0.2,\n dot = false,\n dotRadius = 3,\n strokeWidth = 2,\n className,\n },\n ref,\n ) => {\n const ctx = useRadialLineContext('Chart.RadialLine');\n const { data, cx, cy, radius, nameKeys, palette } = ctx;\n\n const resolvedColor = color ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n const n = nameKeys.length;\n if (n === 0) return null;\n\n // Max value for normalization\n const values = nameKeys.map((key) => {\n const row = data.find((d) => String(d[nameKey]) === key);\n if (!row) return 0;\n const val = row[dataKey];\n return typeof val === 'number' ? val : 0;\n });\n const maxValue = Math.max(...values, 1);\n\n // Convert to polar points\n const polarPoints: [number, number][] = values.map((val, i) => {\n const angle = (i / n) * 2 * Math.PI - Math.PI / 2;\n const r = radius * (val / maxValue);\n return [cx + r * Math.cos(angle), cy + r * Math.sin(angle)];\n });\n\n // Build line path — use curve interpolation for non-linear curves\n let pathD = '';\n if (polarPoints.length > 0) {\n if (curve === 'linear') {\n const first = polarPoints[0]!;\n pathD = `M ${fmt(first[0])} ${fmt(first[1])}`;\n for (let i = 1; i < polarPoints.length; i++) {\n const p = polarPoints[i]!;\n pathD += ` L ${fmt(p[0])} ${fmt(p[1])}`;\n }\n if (closePath) pathD += ' Z';\n } else {\n pathD = buildLinePath(polarPoints, curve);\n if (closePath && polarPoints.length > 0) pathD += ' Z';\n }\n }\n\n // Build area path (back through center)\n let areaD = '';\n if (area && polarPoints.length > 0) {\n areaD = `M ${cx} ${cy}`;\n for (const p of polarPoints) {\n areaD += ` L ${fmt(p[0])} ${fmt(p[1])}`;\n }\n areaD += ' Z';\n }\n\n return (\n <g ref={ref} className={className} aria-label={dataKey}>\n {area && areaD && (\n <path\n d={areaD}\n fill={resolvedColor}\n fillOpacity={fillOpacity}\n />\n )}\n <path\n d={pathD}\n fill=\"none\"\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n />\n {dot &&\n polarPoints.map((p, i) => (\n <circle\n key={i}\n cx={p[0]}\n cy={p[1]}\n r={dotRadius}\n fill={resolvedColor}\n stroke=\"white\"\n strokeWidth={1}\n aria-label={`${nameKeys[i]}: ${values[i]}`}\n />\n ))}\n </g>\n );\n },\n);\nRadialLine.displayName = 'Chart.RadialLine';\n\n/* ─── Standalone: Histogram ─────────────────────────────────────────── */\n\nconst Histogram = React.forwardRef<HTMLDivElement, ChartHistogramProps>(\n (\n {\n data,\n bins: binCount = 10,\n color = 'hsl(var(--chart-1))',\n width = 500,\n height = 300,\n margin: marginProp,\n showGrid = true,\n className,\n accessibilityLabel = 'Histogram',\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 10, right: 20, bottom: 40, left: 50, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n if (data.length === 0) {\n return <div ref={ref} className={className} />;\n }\n\n const minVal = Math.min(...data);\n const maxVal = Math.max(...data);\n const binWidth = (maxVal - minVal) / binCount || 1;\n\n // Compute bins\n const binCounts: number[] = new Array(binCount).fill(0);\n for (const v of data) {\n const idx = Math.min(binCount - 1, Math.floor((v - minVal) / binWidth));\n binCounts[idx] = (binCounts[idx] ?? 0) + 1;\n }\n\n const maxCount = Math.max(...binCounts, 1);\n const yScale = linearScale([0, maxCount], [innerHeight, 0]);\n\n const barW = innerWidth / binCount;\n const yTicks = niceLinearTicks(0, maxCount, 5);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* Grid */}\n {showGrid && yTicks.map((tick) => {\n const y = yScale(tick);\n return (\n <line\n key={tick}\n x1={0}\n y1={y}\n x2={innerWidth}\n y2={y}\n stroke=\"currentColor\"\n strokeOpacity={0.1}\n strokeDasharray=\"3 3\"\n />\n );\n })}\n {/* Bars */}\n {binCounts.map((count, i) => {\n const x = i * barW;\n const barH = Math.max(0, innerHeight - yScale(count));\n const midpoint = minVal + (i + 0.5) * binWidth;\n\n return (\n <g key={i}>\n <rect\n x={x + 0.5}\n y={yScale(count)}\n width={Math.max(0, barW - 1)}\n height={barH}\n fill={color}\n fillOpacity={0.8}\n aria-label={`${midpoint.toFixed(1)}: ${count}`}\n />\n </g>\n );\n })}\n {/* X axis */}\n <g transform={`translate(0, ${innerHeight})`}>\n <line x1={0} y1={0} x2={innerWidth} y2={0} stroke=\"currentColor\" strokeOpacity={0.3} />\n {Array.from({ length: binCount + 1 }, (_, i) => {\n const val = minVal + i * binWidth;\n const x = (i / binCount) * innerWidth;\n return (\n <g key={i} transform={`translate(${x}, 0)`}>\n <line y1={0} y2={4} stroke=\"currentColor\" strokeOpacity={0.5} />\n {i % Math.max(1, Math.floor(binCount / 5)) === 0 && (\n <text\n y={16}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {val.toFixed(1)}\n </text>\n )}\n </g>\n );\n })}\n </g>\n {/* Y axis */}\n {yTicks.map((tick) => {\n const y = yScale(tick);\n return (\n <g key={tick} transform={`translate(0, ${y})`}>\n <line x1={-4} y1={0} x2={0} y2={0} stroke=\"currentColor\" strokeOpacity={0.5} />\n <text\n x={-8}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {tick}\n </text>\n </g>\n );\n })}\n </g>\n </svg>\n </div>\n );\n },\n);\nHistogram.displayName = 'Chart.Histogram';\n\n/* ─── Standalone: Boxplot ───────────────────────────────────────────── */\n\nconst Boxplot = React.forwardRef<HTMLDivElement, ChartBoxplotProps>(\n (\n {\n data,\n width = 500,\n height = 300,\n margin: marginProp,\n orientation = 'vertical',\n className,\n accessibilityLabel = 'Box plot',\n },\n ref,\n ) => {\n const margin: ChartMargin = { top: 20, right: 20, bottom: 40, left: 50, ...marginProp };\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n if (data.length === 0) {\n return <div ref={ref} className={className} />;\n }\n\n const allVals = data.flatMap((d) => [d.min, d.q1, d.median, d.q3, d.max, ...(d.outliers ?? [])]);\n const yMin = Math.min(...allVals);\n const yMax = Math.max(...allVals);\n const yPad = (yMax - yMin) * 0.1 || 1;\n const yDomain: [number, number] = [yMin - yPad, yMax + yPad];\n\n const names = data.map((d) => d.name);\n\n const isHorizontal = orientation === 'horizontal';\n\n // Shared value scale\n const valueTicks = niceLinearTicks(yDomain[0], yDomain[1], 5);\n\n if (isHorizontal) {\n // Horizontal: categories on Y, values on X\n const yBand = bandScale(names, [0, innerHeight], 0.2, 0.2);\n const xValueScale = linearScale(yDomain, [0, innerWidth]);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg role=\"img\" aria-label={accessibilityLabel} width={width} height={height} style={{ display: 'block' }}>\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* X value axis */}\n {valueTicks.map((tick) => {\n const x = xValueScale(tick);\n return (\n <g key={tick} transform={`translate(${x}, 0)`}>\n <line x1={0} y1={0} x2={0} y2={innerHeight} stroke=\"currentColor\" strokeOpacity={0.08} />\n <text x={0} y={innerHeight + 14} textAnchor=\"middle\" fontSize={10} fill=\"currentColor\" fillOpacity={0.6}>{tick}</text>\n </g>\n );\n })}\n {/* Boxes */}\n {data.map((entry, i) => {\n const yCenter = yBand.scale(entry.name) + yBand.bandwidth / 2;\n const boxH = yBand.bandwidth * 0.6;\n const fillColor = entry.color ?? DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ?? 'hsl(var(--chart-1))';\n\n const xQ1 = xValueScale(entry.q1);\n const xQ3 = xValueScale(entry.q3);\n const xMedian = xValueScale(entry.median);\n const xMin_ = xValueScale(entry.min);\n const xMax_ = xValueScale(entry.max);\n\n return (\n <g key={entry.name} aria-label={`${entry.name}: Q1=${entry.q1} Median=${entry.median} Q3=${entry.q3}`}>\n <line x1={xMin_} y1={yCenter} x2={xQ1} y2={yCenter} stroke={fillColor} strokeWidth={1.5} strokeDasharray=\"4 2\" />\n <line x1={xMin_} y1={yCenter - boxH / 4} x2={xMin_} y2={yCenter + boxH / 4} stroke={fillColor} strokeWidth={1.5} />\n <rect x={xQ1} y={yCenter - boxH / 2} width={Math.max(1, xQ3 - xQ1)} height={boxH} fill={fillColor} fillOpacity={0.3} stroke={fillColor} strokeWidth={1.5} />\n <line x1={xMedian} y1={yCenter - boxH / 2} x2={xMedian} y2={yCenter + boxH / 2} stroke={fillColor} strokeWidth={2} />\n <line x1={xQ3} y1={yCenter} x2={xMax_} y2={yCenter} stroke={fillColor} strokeWidth={1.5} strokeDasharray=\"4 2\" />\n <line x1={xMax_} y1={yCenter - boxH / 4} x2={xMax_} y2={yCenter + boxH / 4} stroke={fillColor} strokeWidth={1.5} />\n {entry.outliers?.map((ov, oi) => (\n <circle key={oi} cx={xValueScale(ov)} cy={yCenter} r={3} fill={fillColor} fillOpacity={0.6} stroke={fillColor} strokeWidth={1} />\n ))}\n </g>\n );\n })}\n {/* Y category axis */}\n <line x1={0} y1={0} x2={0} y2={innerHeight} stroke=\"currentColor\" strokeOpacity={0.3} />\n {names.map((name) => (\n <text key={name} x={-8} y={yBand.scale(name) + yBand.bandwidth / 2} textAnchor=\"end\" dominantBaseline=\"middle\" fontSize={11} fill=\"currentColor\" fillOpacity={0.7}>{name}</text>\n ))}\n </g>\n </svg>\n </div>\n );\n }\n\n // ── Vertical (default) ──────────────────────────────────────────────\n const xBand = bandScale(names, [0, innerWidth], 0.2, 0.2);\n const yScale = linearScale(yDomain, [innerHeight, 0]);\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n <g transform={`translate(${margin.left},${margin.top})`}>\n {/* Y axis */}\n {valueTicks.map((tick) => {\n const y = yScale(tick);\n return (\n <g key={tick} transform={`translate(0, ${y})`}>\n <line x1={-4} y1={0} x2={innerWidth} y2={0} stroke=\"currentColor\" strokeOpacity={0.08} />\n <text\n x={-8}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n fillOpacity={0.6}\n >\n {tick}\n </text>\n </g>\n );\n })}\n {/* Boxes */}\n {data.map((entry, i) => {\n const xCenter = xBand.scale(entry.name) + xBand.bandwidth / 2;\n const boxW = xBand.bandwidth * 0.6;\n const fillColor =\n entry.color ??\n DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ??\n 'hsl(var(--chart-1))';\n\n const yQ1 = yScale(entry.q1);\n const yQ3 = yScale(entry.q3);\n const yMedian = yScale(entry.median);\n const yMin_ = yScale(entry.min);\n const yMax_ = yScale(entry.max);\n\n return (\n <g key={entry.name} aria-label={`${entry.name}: Q1=${entry.q1} Median=${entry.median} Q3=${entry.q3}`}>\n {/* Whisker: min to Q1 */}\n <line\n x1={xCenter}\n y1={yMin_}\n x2={xCenter}\n y2={yQ1}\n stroke={fillColor}\n strokeWidth={1.5}\n strokeDasharray=\"4 2\"\n />\n {/* Min cap */}\n <line\n x1={xCenter - boxW / 4}\n y1={yMin_}\n x2={xCenter + boxW / 4}\n y2={yMin_}\n stroke={fillColor}\n strokeWidth={1.5}\n />\n {/* Box Q1–Q3 */}\n <rect\n x={xCenter - boxW / 2}\n y={yQ3}\n width={boxW}\n height={Math.max(1, yQ1 - yQ3)}\n fill={fillColor}\n fillOpacity={0.3}\n stroke={fillColor}\n strokeWidth={1.5}\n />\n {/* Median line */}\n <line\n x1={xCenter - boxW / 2}\n y1={yMedian}\n x2={xCenter + boxW / 2}\n y2={yMedian}\n stroke={fillColor}\n strokeWidth={2}\n />\n {/* Whisker: Q3 to max */}\n <line\n x1={xCenter}\n y1={yQ3}\n x2={xCenter}\n y2={yMax_}\n stroke={fillColor}\n strokeWidth={1.5}\n strokeDasharray=\"4 2\"\n />\n {/* Max cap */}\n <line\n x1={xCenter - boxW / 4}\n y1={yMax_}\n x2={xCenter + boxW / 4}\n y2={yMax_}\n stroke={fillColor}\n strokeWidth={1.5}\n />\n {/* Outliers */}\n {entry.outliers?.map((ov, oi) => (\n <circle\n key={oi}\n cx={xCenter}\n cy={yScale(ov)}\n r={3}\n fill={fillColor}\n fillOpacity={0.6}\n stroke={fillColor}\n strokeWidth={1}\n />\n ))}\n </g>\n );\n })}\n {/* X axis */}\n <g transform={`translate(0, ${innerHeight})`}>\n <line x1={0} y1={0} x2={innerWidth} y2={0} stroke=\"currentColor\" strokeOpacity={0.3} />\n {names.map((name) => (\n <text\n key={name}\n x={xBand.scale(name) + xBand.bandwidth / 2}\n y={18}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.7}\n >\n {name}\n </text>\n ))}\n </g>\n </g>\n </svg>\n </div>\n );\n },\n);\nBoxplot.displayName = 'Chart.Boxplot';\n\n/* ─── Standalone: Sunburst ──────────────────────────────────────────── */\n\nfunction sunburstTotalValue(node: SunburstNode): number {\n if (node.children && node.children.length > 0) {\n return node.children.reduce((s, c) => s + sunburstTotalValue(c), 0);\n }\n return node.value ?? 0;\n}\n\ninterface SunburstLayoutNode {\n node: SunburstNode;\n startAngle: number;\n endAngle: number;\n depth: number;\n totalValue: number;\n}\n\nfunction layoutSunburst(\n node: SunburstNode,\n startAngle: number,\n endAngle: number,\n depth: number,\n result: SunburstLayoutNode[],\n): void {\n result.push({ node, startAngle, endAngle, depth, totalValue: sunburstTotalValue(node) });\n if (!node.children || node.children.length === 0) return;\n const span = endAngle - startAngle;\n const total = node.children.reduce((s, c) => s + sunburstTotalValue(c), 0) || 1;\n let current = startAngle;\n for (const child of node.children) {\n const childVal = sunburstTotalValue(child);\n const childEnd = current + (childVal / total) * span;\n layoutSunburst(child, current, childEnd, depth + 1, result);\n current = childEnd;\n }\n}\n\nfunction maxDepth(node: SunburstNode, d = 0): number {\n if (!node.children || node.children.length === 0) return d;\n return Math.max(...node.children.map((c) => maxDepth(c, d + 1)));\n}\n\nconst Sunburst = React.forwardRef<HTMLDivElement, ChartSunburstProps>(\n (\n {\n data,\n width = 400,\n height = 400,\n innerRadius = 0,\n className,\n accessibilityLabel = 'Sunburst chart',\n onNodeClick,\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const outerRadius = Math.min(cx, cy) * 0.95;\n\n const layoutNodes: SunburstLayoutNode[] = [];\n layoutSunburst(data, 0, 2 * Math.PI, 0, layoutNodes);\n const maxD = maxDepth(data);\n const ringThickness = maxD > 0 ? (outerRadius - innerRadius) / (maxD + 1) : outerRadius - innerRadius;\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {layoutNodes.map((item, i) => {\n const nodeOuterR = innerRadius + (item.depth + 1) * ringThickness;\n const nodeInnerR = innerRadius + item.depth * ringThickness;\n const fill =\n item.node.color ??\n DEFAULT_PALETTE[i % DEFAULT_PALETTE.length] ??\n 'hsl(var(--chart-1))';\n\n // Skip root node if it's just a container\n if (item.depth === 0 && (!item.node.children || item.node.children.length === 0)) {\n return null;\n }\n\n const arcD = buildArcPath(\n cx,\n cy,\n nodeOuterR,\n nodeInnerR,\n item.startAngle,\n item.endAngle,\n );\n\n const midAngle = (item.startAngle + item.endAngle) / 2;\n const labelR = (nodeInnerR + nodeOuterR) / 2;\n const lx = Math.round((cx + labelR * Math.sin(midAngle)) * 1e4) / 1e4;\n const ly = Math.round((cy - labelR * Math.cos(midAngle)) * 1e4) / 1e4;\n const arcSpan = item.endAngle - item.startAngle;\n const showLabel = arcSpan > 0.25 && ringThickness > 14;\n\n return (\n <g key={i} aria-label={`${item.node.name}: ${item.totalValue}`}>\n <path\n d={arcD}\n fill={fill}\n fillOpacity={0.85 - item.depth * 0.1}\n stroke=\"white\"\n strokeWidth={1}\n onClick={() => onNodeClick?.(item.node)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onNodeClick?.(item.node); } }}\n role={onNodeClick ? 'button' : undefined}\n tabIndex={onNodeClick ? 0 : undefined}\n style={{ cursor: onNodeClick ? 'pointer' : 'default' }}\n />\n {showLabel && (\n <text\n x={lx}\n y={ly}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={Math.min(11, ringThickness * 0.5)}\n fill=\"white\"\n fillOpacity={0.9}\n style={{ pointerEvents: 'none', userSelect: 'none' }}\n >\n {item.node.name}\n </text>\n )}\n </g>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nSunburst.displayName = 'Chart.Sunburst';\n\n/* ─── Standalone: Chord ─────────────────────────────────────────────── */\n\nconst Chord = React.forwardRef<HTMLDivElement, ChartChordProps>(\n (\n {\n data,\n labels,\n colors,\n width = 500,\n height = 500,\n padAngle = 0.05,\n className,\n accessibilityLabel = 'Chord diagram',\n },\n ref,\n ) => {\n const cx = width / 2;\n const cy = height / 2;\n const outerRadius = Math.min(cx, cy) * 0.9;\n const innerRadius = outerRadius * 0.85;\n\n const n = Math.min(data.length, labels.length);\n if (n === 0) {\n return <div ref={ref} className={className} />;\n }\n\n const palette = colors ?? DEFAULT_PALETTE;\n\n // Row sums for arc sizes\n const rowSums = data.slice(0, n).map((row) =>\n row.slice(0, n).reduce((s, v) => s + (v ?? 0), 0),\n );\n const totalSum = rowSums.reduce((s, v) => s + v, 0) || 1;\n\n // Compute group arcs\n const totalPad = padAngle * n;\n const remaining = 2 * Math.PI - totalPad;\n\n interface GroupArc {\n startAngle: number;\n endAngle: number;\n color: string;\n label: string;\n }\n\n const groupArcs: GroupArc[] = [];\n let currentAngle = -Math.PI / 2;\n for (let i = 0; i < n; i++) {\n const arcSpan = (rowSums[i]! / totalSum) * remaining;\n groupArcs.push({\n startAngle: currentAngle,\n endAngle: currentAngle + arcSpan,\n color: palette[i % palette.length] ?? 'hsl(var(--chart-1))',\n label: labels[i] ?? '',\n });\n currentAngle += arcSpan + padAngle;\n }\n\n // Compute chords\n interface ChordPath {\n path: string;\n color: string;\n }\n const chordPaths: ChordPath[] = [];\n\n // Track sub-angle offsets for each group\n const sourceAngleOffsets = groupArcs.map((g) => g.startAngle);\n const targetAngleOffsets = groupArcs.map((g) => g.startAngle);\n\n for (let i = 0; i < n; i++) {\n for (let j = i; j < n; j++) {\n const val = (data[i]?.[j] ?? 0) + (i !== j ? (data[j]?.[i] ?? 0) : 0);\n if (val === 0) continue;\n\n const group = groupArcs[i]!;\n const groupJ = groupArcs[j]!;\n\n const iSpan = group.endAngle - group.startAngle;\n const jSpan = groupJ.endAngle - groupJ.startAngle;\n\n const iChordSpan = (val / totalSum) * remaining * (iSpan / remaining) || 0.001;\n const jChordSpan = (val / totalSum) * remaining * (jSpan / remaining) || 0.001;\n\n const sourceAngleStart = sourceAngleOffsets[i]!;\n const sourceAngleEnd = sourceAngleStart + Math.min(iChordSpan, iSpan - (sourceAngleStart - group.startAngle));\n sourceAngleOffsets[i] = sourceAngleEnd;\n\n const targetAngleStart = targetAngleOffsets[j]!;\n const targetAngleEnd = targetAngleStart + Math.min(jChordSpan, jSpan - (targetAngleStart - groupJ.startAngle));\n targetAngleOffsets[j] = targetAngleEnd;\n\n // Chord as bezier paths connecting inner arcs\n const toXY = (angle: number, r: number): [number, number] => [\n cx + r * Math.cos(angle - Math.PI / 2),\n cy + r * Math.sin(angle - Math.PI / 2),\n ];\n\n const [srcStartX, srcStartY] = toXY(sourceAngleStart, innerRadius);\n const [srcEndX, srcEndY] = toXY(sourceAngleEnd, innerRadius);\n const [tgtStartX, tgtStartY] = toXY(targetAngleStart, innerRadius);\n const [tgtEndX, tgtEndY] = toXY(targetAngleEnd, innerRadius);\n\n // Use chart center (cx, cy) as bezier control point for the chord curves\n const sourceLargeArc = Math.abs(sourceAngleEnd - sourceAngleStart) > Math.PI ? 1 : 0;\n const targetLargeArc = Math.abs(targetAngleEnd - targetAngleStart) > Math.PI ? 1 : 0;\n\n const path = [\n `M ${fmt(srcStartX)} ${fmt(srcStartY)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 ${sourceLargeArc} 1 ${fmt(srcEndX)} ${fmt(srcEndY)}`,\n `Q ${fmt(cx)} ${fmt(cy)} ${fmt(tgtEndX)} ${fmt(tgtEndY)}`,\n `A ${fmt(innerRadius)} ${fmt(innerRadius)} 0 ${targetLargeArc} 0 ${fmt(tgtStartX)} ${fmt(tgtStartY)}`,\n `Q ${fmt(cx)} ${fmt(cy)} ${fmt(srcStartX)} ${fmt(srcStartY)}`,\n 'Z',\n ].join(' ');\n\n chordPaths.push({ path, color: group.color });\n }\n }\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"img\"\n aria-label={accessibilityLabel}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{accessibilityLabel}</title>\n {/* Chords */}\n {chordPaths.map((chord, i) => (\n <path\n key={i}\n d={chord.path}\n fill={chord.color}\n fillOpacity={0.35}\n stroke=\"none\"\n />\n ))}\n {/* Group arcs */}\n {groupArcs.map((group, i) => {\n const arcD = buildArcPath(cx, cy, outerRadius, innerRadius, group.startAngle, group.endAngle);\n const midAngle = (group.startAngle + group.endAngle) / 2;\n const lx = cx + (outerRadius + 12) * Math.sin(midAngle);\n const ly = cy - (outerRadius + 12) * Math.cos(midAngle);\n\n return (\n <g key={i} aria-label={group.label}>\n <path\n d={arcD}\n fill={group.color}\n fillOpacity={0.85}\n />\n <text\n x={lx}\n y={ly}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n fillOpacity={0.8}\n >\n {group.label}\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nChord.displayName = 'Chart.Chord';\n\n/* ─── RangeArea ─────────────────────────────────────────────────────── */\n\nconst RangeArea = React.forwardRef<SVGGElement, ChartRangeAreaProps>(\n (\n {\n lowKey,\n highKey,\n color,\n name,\n fillOpacity = 0.3,\n curve = 'catmullRom',\n className,\n },\n ref,\n ) => {\n const ctx = useCartesianContext('Chart.RangeArea');\n const {\n data,\n xScale,\n yScale,\n xDataKey,\n isBand,\n palette,\n } = ctx;\n\n const seriesIndex = ctx.registerSeries(name ?? lowKey);\n const resolvedColor = color ?? palette[seriesIndex % palette.length] ?? palette[0] ?? 'hsl(var(--chart-1))';\n\n const highPoints: [number, number][] = [];\n const lowPoints: [number, number][] = [];\n\n data.forEach((row, i) => {\n const high = row[highKey];\n const low = row[lowKey];\n if (typeof high !== 'number' || typeof low !== 'number') return;\n const x = xScale(isBand ? row[xDataKey] : i);\n highPoints.push([x, yScale(high)]);\n lowPoints.push([x, yScale(low)]);\n });\n\n if (highPoints.length === 0) return null;\n\n const areaD = buildAreaPath(highPoints, lowPoints, curve);\n\n return (\n <g ref={ref} className={className} aria-label={name ?? `${highKey}–${lowKey}`}>\n <path\n d={areaD}\n fill={resolvedColor}\n fillOpacity={fillOpacity}\n style={{ transition: 'd 300ms ease' }}\n />\n </g>\n );\n },\n);\nRangeArea.displayName = 'Chart.RangeArea';\n\n/* ─── Standalone: LinearGauge ───────────────────────────────────────── */\n\nconst LinearGauge = React.forwardRef<HTMLDivElement, ChartLinearGaugeProps>(\n (\n {\n value,\n min = 0,\n max = 100,\n width = 300,\n height = 40,\n thickness = 16,\n colorStops,\n showLabel = true,\n label,\n cornerRadius = 8,\n className,\n accessibilityLabel,\n },\n ref,\n ) => {\n const fraction = Math.min(1, Math.max(0, (value - min) / (max - min)));\n const labelPad = showLabel ? 52 : 8;\n const trackX = 8;\n const trackY = (height - thickness) / 2;\n const innerWidth = width - trackX * 2 - labelPad;\n const fillWidth = fraction * innerWidth;\n\n let fillColor = DEFAULT_PALETTE[0] ?? 'hsl(var(--chart-1))';\n if (colorStops && colorStops.length > 0) {\n const pct = fraction * 100;\n let chosen = colorStops[0]?.[1] ?? fillColor;\n for (const [stopPct, stopColor] of colorStops) {\n if (pct >= stopPct) chosen = stopColor;\n }\n fillColor = chosen;\n }\n\n const labelText = (() => {\n if (!showLabel) return null;\n if (typeof label === 'function') return label(value, min, max);\n if (typeof label === 'string') return label;\n return `${Math.round(fraction * 100)}%`;\n })();\n\n const a11yLabel = accessibilityLabel ?? `Gauge: ${value} of ${max}`;\n\n return (\n <div ref={ref} className={className} style={{ display: 'inline-block' }}>\n <svg\n role=\"progressbar\"\n aria-label={a11yLabel}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n width={width}\n height={height}\n style={{ display: 'block' }}\n >\n <title>{a11yLabel}</title>\n {/* Track */}\n <rect\n x={trackX}\n y={trackY}\n width={innerWidth}\n height={thickness}\n rx={cornerRadius}\n fill=\"currentColor\"\n fillOpacity={0.1}\n />\n {/* Fill */}\n {fillWidth > 0 && (\n <rect\n x={trackX}\n y={trackY}\n width={fillWidth}\n height={thickness}\n rx={cornerRadius}\n fill={fillColor}\n style={{ transition: 'width 400ms ease' }}\n />\n )}\n {/* Label */}\n {showLabel && labelText && (\n <text\n x={trackX + innerWidth + 8}\n y={height / 2}\n dominantBaseline=\"middle\"\n fontSize={12}\n fontWeight={600}\n fill=\"currentColor\"\n fillOpacity={0.85}\n >\n {labelText}\n </text>\n )}\n </svg>\n </div>\n );\n },\n);\nLinearGauge.displayName = 'Chart.LinearGauge';\n\n/* ─── PieCenterLabel ────────────────────────────────────────────────── */\n\nconst PieCenterLabel = React.forwardRef<SVGGElement, ChartPieCenterLabelProps>(\n ({ children, className }, ref) => {\n const ctx = usePieContext('Chart.PieCenterLabel');\n const { cx, cy } = ctx;\n\n if (typeof children === 'string' || typeof children === 'number') {\n return (\n <g ref={ref} className={className}>\n <text\n x={cx}\n y={cy}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fontSize={16}\n fontWeight={600}\n fill=\"currentColor\"\n >\n {children}\n </text>\n </g>\n );\n }\n\n return (\n <g ref={ref} className={className}>\n <foreignObject\n x={cx - 50}\n y={cy - 25}\n width={100}\n height={50}\n style={{ overflow: 'visible' }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n textAlign: 'center',\n }}\n >\n {children}\n </div>\n </foreignObject>\n </g>\n );\n },\n);\nPieCenterLabel.displayName = 'Chart.PieCenterLabel';\n\n/* ─── GaugePointer ──────────────────────────────────────────────────── */\n\nconst GaugePointer = React.forwardRef<SVGGElement, ChartGaugePointerProps>(\n (\n {\n color = 'currentColor',\n length: lengthFraction = 0.7,\n width: baseWidth = 6,\n className,\n },\n ref,\n ) => {\n const ctx = useGaugeContext('Chart.GaugePointer');\n const { cx, cy, outerRadius, fraction, startAngle, endAngle } = ctx;\n\n // Compute current angle (clockwise from top)\n const toRad = (deg: number) => (deg * Math.PI) / 180;\n const startRad = toRad(startAngle);\n const endRad = toRad(endAngle);\n const currentRad = startRad + (endRad - startRad) * fraction;\n\n // Convert \"clockwise from top\" to SVG\n const angle = currentRad - Math.PI / 2;\n\n const needleLength = outerRadius * lengthFraction;\n\n // Needle tip\n const tipX = cx + needleLength * Math.cos(angle);\n const tipY = cy + needleLength * Math.sin(angle);\n\n // Needle base (perpendicular offsets)\n const perpAngle = angle + Math.PI / 2;\n const halfBase = baseWidth / 2;\n const bx1 = cx + halfBase * Math.cos(perpAngle);\n const by1 = cy + halfBase * Math.sin(perpAngle);\n const bx2 = cx - halfBase * Math.cos(perpAngle);\n const by2 = cy - halfBase * Math.sin(perpAngle);\n\n return (\n <g ref={ref} className={className}>\n {/* Needle triangle */}\n <polygon\n points={`${fmt(bx1)},${fmt(by1)} ${fmt(bx2)},${fmt(by2)} ${fmt(tipX)},${fmt(tipY)}`}\n fill={color}\n style={{ transition: 'points 400ms ease' }}\n />\n {/* Center pivot circle */}\n <circle\n cx={cx}\n cy={cy}\n r={baseWidth}\n fill={color}\n />\n </g>\n );\n },\n);\nGaugePointer.displayName = 'Chart.GaugePointer';\n\n/* ─── Shared ref merge helper ───────────────────────────────────────── */\n\nfunction useMergedRef<T>(\n ...refs: (React.Ref<T> | undefined | null)[]\n): React.RefCallback<T> {\n return React.useCallback(\n (node: T) => {\n refs.forEach((ref) => {\n if (!ref) return;\n if (typeof ref === 'function') {\n ref(node);\n } else {\n (ref as React.MutableRefObject<T>).current = node;\n }\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs,\n );\n}\n\n/* ─── Exports ───────────────────────────────────────────────────────── */\n\nexport {\n Root,\n Grid,\n XAxis,\n YAxis,\n Bar,\n Line,\n Area,\n Scatter,\n Bubble,\n Tooltip,\n Legend,\n PieRoot,\n Pie,\n PieCenterLabel,\n RadarRoot,\n PolarGrid,\n PolarAngleAxis,\n Radar,\n Heatmap,\n Treemap,\n Funnel,\n Gauge,\n GaugeContainer,\n GaugeValueArc,\n GaugeReferenceArc,\n GaugePointer,\n CandlestickChart as Candlestick,\n SparkLine,\n RangeBar,\n RangeArea,\n ReferenceLine,\n ReferenceArea,\n RadialBarRoot,\n RadialBar,\n RadialLineRoot,\n RadialLine,\n Waterfall,\n Sankey,\n Pyramid,\n Gantt,\n Histogram,\n Boxplot,\n Sunburst,\n Chord,\n LinearGauge,\n};\n"]}
|