@inf-monkeys-tech/monkeys-design 1.0.20 → 1.0.21

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/workbench/WorkbenchResizableSidebar.tsx","../../../src/components/workbench/WorkbenchContentPane.tsx","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseButton.tsx","../../../src/components/base/internal/baseFieldContext.tsx","../../../src/components/base/BaseCheckbox.tsx","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/BaseContextMenu.tsx","../../../src/components/base/BaseDescriptionList.tsx","../../../src/components/base/BaseField.tsx","../../../src/components/base/BaseInput.tsx","../../../src/components/base/BaseSelect.tsx","../../../src/components/base/BaseSegmentedControl.tsx","../../../src/components/base/BaseTable.tsx","../../../src/components/workbench/WorkbenchGallerySettings.tsx","../../../src/components/workbench/WorkbenchContentToolbar.tsx","../../../src/components/workbench/WorkbenchDetailSidebar.tsx","../../../src/components/workbench/workbenchIconUtils.tsx","../../../src/components/workbench/WorkbenchTableView.tsx","../../../src/components/workbench/InteractiveTable.tsx","../../../src/components/workbench/workbenchGalleryUtils.tsx","../../../src/components/workbench/WorkbenchGalleryCard.tsx","../../../src/components/workbench/WorkbenchMasonryLayout.tsx","../../../src/components/workbench/WorkbenchGalleryView.tsx","../../../src/components/workbench/WorkbenchLaneView.tsx","../../../src/components/workbench/WorkbenchMetricGrid.tsx","../../../src/components/workbench/WorkbenchRelationshipGraph.tsx","../../../src/components/workbench/WorkbenchScatterPlot.tsx","../../../src/components/workbench/WorkbenchJourneyNavigation.tsx","../../../src/components/workbench/WorkbenchRankedList.tsx","../../../src/components/workbench/WorkbenchSelectionTray.tsx","../../../src/components/workbench/WorkbenchEvidenceList.tsx","../../../src/components/workbench/WorkbenchAssetGallery.tsx","../../../src/components/workbench/WorkbenchRadarWorkspace.tsx","../../../src/components/workbench/WorkbenchRadarMatrix.tsx"],"names":["WorkbenchResizableSidebar","forwardRef","WorkbenchContentPane","jsxs","jsx","BaseButton","createContext","useContext","useRef","useEffect","BaseCheckbox","useState","useCallback","Fragment","BaseContextMenuTrigger","BaseContextMenuContent","BaseContextMenuLabel","BaseContextMenuSeparator","BaseContextMenuItem","BaseContextMenuCheckboxItem","BaseContextMenuRadioItem","BaseContextMenuSubTrigger","BaseContextMenuSubContent","BaseField","useMemo","BaseInput","BaseSelect","useId","assignRef","clampWidth","BaseTableContainer","BaseTable","BaseTableHeader","BaseTableBody","BaseTableFooter","BaseTableRow","BaseTableHead","BaseTableCell","BaseTableCaption","BaseTableEmpty","WorkbenchContentToolbar","shouldRenderBodyWrapper","Children","isValidElement","WorkbenchDetailSidebar","toCssSize","defaultGetRowKey","normalizeColumnOrder","getOrderedColumns","defaultFormatLabel","summaryText","useLayoutEffect","getDefaultGalleryDetailLimit","getNormalizedGalleryBentoColumns","getNormalizedGalleryDetailLimit","toneClassNames","clamp","activateItem","finiteValues","getDomain","scale","activatePoint"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type ElementType,\n type ForwardedRef,\n type KeyboardEvent,\n type MutableRefObject,\n type MouseEvent,\n type PointerEvent,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchResizableSidebarItem {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n active?: boolean;\n disabled?: boolean;\n href?: string;\n to?: string;\n title?: string;\n endContent?: ReactNode;\n className?: string;\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nexport interface WorkbenchResizableSidebarSection {\n id: string;\n label?: ReactNode;\n items: WorkbenchResizableSidebarItem[];\n className?: string;\n labelClassName?: string;\n}\n\nexport interface WorkbenchResizableSidebarClassNames {\n root?: string;\n header?: string;\n title?: string;\n collapseButton?: string;\n list?: string;\n section?: string;\n sectionLabel?: string;\n item?: string;\n itemIcon?: string;\n itemLabel?: string;\n resizeHandle?: string;\n mobileNav?: string;\n mobileItem?: string;\n}\n\nexport interface WorkbenchResizableSidebarProps {\n title?: ReactNode;\n items: WorkbenchResizableSidebarItem[];\n sections?: WorkbenchResizableSidebarSection[];\n activeItemId?: string;\n itemAs?: ElementType;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n width?: number;\n onWidthChange?: (width: number) => void;\n defaultWidth?: number;\n minWidth?: number;\n maxWidth?: number;\n collapsedWidth?: number;\n collapseThreshold?: number;\n storageKey?: string;\n resizable?: boolean;\n collapsible?: boolean;\n collapseLabel?: string;\n expandLabel?: string;\n resizeLabel?: string;\n desktopClassName?: string;\n mobileClassName?: string;\n className?: string;\n classNames?: WorkbenchResizableSidebarClassNames;\n style?: CSSProperties;\n}\n\nfunction ClampIcon({ expanded }: { expanded: boolean }) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <path\n d=\"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={expanded ? '' : 'hidden'}\n />\n <path\n d=\"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={expanded ? 'hidden' : ''}\n />\n </svg>\n );\n}\n\nfunction ResizeGripIcon() {\n return (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-1/2 top-3 bottom-3 w-px translate-x-1/2 rounded-full bg-border/65 opacity-0 transition-opacity group-hover/resize:opacity-100\"\n />\n );\n}\n\nfunction getItemTitle(item: WorkbenchResizableSidebarItem) {\n if (item.title) return item.title;\n return typeof item.label === 'string' ? item.label : undefined;\n}\n\nfunction clampWidth(width: number, minWidth: number, maxWidth: number) {\n return Math.min(Math.max(width, minWidth), maxWidth);\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<T | null>).current = node;\n }\n}\n\nfunction readStoredLayout(\n storageKey: string | undefined,\n options: {\n defaultCollapsed: boolean;\n defaultWidth: number;\n minWidth: number;\n maxWidth: number;\n },\n) {\n const fallback = {\n collapsed: options.defaultCollapsed,\n width: clampWidth(options.defaultWidth, options.minWidth, options.maxWidth),\n };\n\n if (typeof window === 'undefined' || !storageKey) return fallback;\n\n try {\n const rawValue = window.localStorage.getItem(storageKey);\n if (!rawValue) return fallback;\n\n const parsedValue = JSON.parse(rawValue) as Partial<{ collapsed: boolean; width: number }>;\n return {\n collapsed: typeof parsedValue.collapsed === 'boolean' ? parsedValue.collapsed : fallback.collapsed,\n width: typeof parsedValue.width === 'number' && Number.isFinite(parsedValue.width)\n ? clampWidth(parsedValue.width, options.minWidth, options.maxWidth)\n : fallback.width,\n };\n } catch {\n return fallback;\n }\n}\n\nexport const WorkbenchResizableSidebar = forwardRef<HTMLElement, WorkbenchResizableSidebarProps>(\n function WorkbenchResizableSidebar(\n {\n title,\n items,\n sections = [],\n activeItemId,\n itemAs,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n width,\n onWidthChange,\n defaultWidth = 220,\n minWidth = 180,\n maxWidth = 420,\n collapsedWidth = 60,\n collapseThreshold = 140,\n storageKey,\n resizable = true,\n collapsible = true,\n collapseLabel = 'Collapse sidebar',\n expandLabel = 'Expand sidebar',\n resizeLabel = 'Resize sidebar',\n desktopClassName = 'hidden md:flex',\n mobileClassName = 'flex md:hidden',\n className,\n classNames,\n style,\n },\n ref,\n ) {\n const initialLayoutRef = useRef<ReturnType<typeof readStoredLayout> | null>(null);\n if (!initialLayoutRef.current) {\n initialLayoutRef.current = readStoredLayout(storageKey, {\n defaultCollapsed,\n defaultWidth,\n minWidth,\n maxWidth,\n });\n }\n\n const sidebarRef = useRef<HTMLElement | null>(null);\n const [internalCollapsed, setInternalCollapsed] = useState(initialLayoutRef.current.collapsed);\n const [internalWidth, setInternalWidth] = useState(initialLayoutRef.current.width);\n const [isResizing, setIsResizing] = useState(false);\n const resolvedCollapsed = collapsed ?? internalCollapsed;\n const resolvedWidth = width ?? internalWidth;\n const isCollapsedControlled = collapsed !== undefined;\n const isWidthControlled = width !== undefined;\n\n const setSidebarRef = (node: HTMLElement | null) => {\n sidebarRef.current = node;\n assignRef(ref, node);\n };\n\n const updateCollapsed = (nextCollapsed: boolean) => {\n if (!collapsible && nextCollapsed) return;\n if (!isCollapsedControlled) {\n setInternalCollapsed(nextCollapsed);\n }\n onCollapsedChange?.(nextCollapsed);\n };\n\n const updateWidth = (nextWidth: number) => {\n const clampedWidth = clampWidth(nextWidth, minWidth, maxWidth);\n if (!isWidthControlled) {\n setInternalWidth(clampedWidth);\n }\n onWidthChange?.(clampedWidth);\n };\n\n const startResize = (event: PointerEvent<HTMLButtonElement>) => {\n if (!resizable) return;\n event.preventDefault();\n setIsResizing(true);\n };\n\n const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (!resizable) return;\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n\n event.preventDefault();\n if (event.key === 'ArrowLeft') {\n const nextWidth = resolvedWidth - 24;\n if (nextWidth < collapseThreshold && collapsible) {\n updateCollapsed(true);\n return;\n }\n updateWidth(nextWidth);\n } else {\n if (resolvedCollapsed) {\n updateCollapsed(false);\n updateWidth(Math.max(resolvedWidth, minWidth));\n return;\n }\n updateWidth(resolvedWidth + 24);\n }\n };\n\n useEffect(() => {\n if (typeof window === 'undefined' || !storageKey) return;\n\n window.localStorage.setItem(storageKey, JSON.stringify({\n collapsed: resolvedCollapsed,\n width: clampWidth(resolvedWidth, minWidth, maxWidth),\n }));\n }, [maxWidth, minWidth, resolvedCollapsed, resolvedWidth, storageKey]);\n\n useEffect(() => {\n if (!isResizing) return undefined;\n\n const handlePointerMove = (event: globalThis.PointerEvent) => {\n const sidebarNode = sidebarRef.current;\n if (!sidebarNode) return;\n\n const nextWidth = event.clientX - sidebarNode.getBoundingClientRect().left;\n if (nextWidth < collapseThreshold && collapsible) {\n updateCollapsed(true);\n return;\n }\n\n updateCollapsed(false);\n updateWidth(nextWidth);\n };\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n return () => {\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n }, [collapseThreshold, collapsible, isResizing, maxWidth, minWidth, resolvedWidth, resolvedCollapsed]);\n\n const resolvedItems = sections.length\n ? [...items, ...sections.flatMap((section) => section.items)]\n : items;\n\n const renderItem = (item: WorkbenchResizableSidebarItem, mobile = false) => {\n const active = item.active ?? item.id === activeItemId;\n const ItemComponent = itemAs ?? (item.href ? 'a' : 'button');\n const itemTitle = getItemTitle(item);\n const itemProps = {\n ...(item.to ? { to: item.to } : {}),\n ...(item.href ? { href: item.href } : {}),\n ...(ItemComponent === 'button' ? { type: 'button' } : {}),\n title: itemTitle,\n 'aria-current': active ? 'page' : undefined,\n 'aria-disabled': item.disabled || undefined,\n tabIndex: item.disabled ? -1 : undefined,\n onClick: (event: MouseEvent<HTMLElement>) => {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.onClick?.(event);\n },\n };\n\n return (\n <ItemComponent\n key={item.id}\n {...itemProps}\n data-active={active ? 'true' : 'false'}\n className={cn(\n mobile\n ? 'inline-flex h-9 shrink-0 items-center gap-2 rounded-lg border px-3 text-xs font-medium transition-colors'\n : 'relative flex h-9 w-full items-center justify-between gap-2 overflow-hidden rounded-md border px-2 text-left text-[12px] shadow-none transition-colors',\n mobile\n ? active\n ? 'border-primary/40 bg-primary/12 text-foreground'\n : 'border-border/60 bg-card/60 text-muted-foreground hover:bg-card/80 hover:text-foreground'\n : active\n ? 'border-primary/40 bg-primary/12 text-foreground shadow-sm'\n : 'border-border/60 bg-card/60 text-foreground hover:border-primary/20 hover:bg-card/80',\n !mobile && resolvedCollapsed && 'justify-center px-0',\n item.disabled && 'pointer-events-none opacity-50',\n mobile ? classNames?.mobileItem : classNames?.item,\n item.className,\n )}\n >\n <span className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center [&_svg]:h-3.5 [&_svg]:w-3.5', classNames?.itemIcon)}>\n {item.icon}\n </span>\n {mobile || !resolvedCollapsed ? (\n <span className={cn('min-w-0 flex-1 truncate', classNames?.itemLabel)}>\n {item.label}\n </span>\n ) : null}\n {!mobile && !resolvedCollapsed && item.endContent !== undefined && item.endContent !== null ? (\n <span className=\"shrink-0\">{item.endContent}</span>\n ) : null}\n </ItemComponent>\n );\n };\n\n return (\n <>\n <aside\n ref={setSidebarRef}\n data-workbench-resizable-sidebar\n data-collapsed={resolvedCollapsed ? 'true' : 'false'}\n className={cn(\n 'relative z-20 h-full min-h-0 flex-shrink-0 flex-col rounded-xl border border-border/70 bg-card p-3 text-card-foreground shadow-sm',\n 'transition-[width,opacity] duration-300',\n resolvedCollapsed && 'items-center',\n desktopClassName,\n classNames?.root,\n className,\n )}\n style={{\n width: resolvedCollapsed ? collapsedWidth : resolvedWidth,\n transition: isResizing ? 'none' : undefined,\n ...style,\n }}\n >\n {resizable ? (\n <button\n type=\"button\"\n aria-label={resizeLabel}\n title={resizeLabel}\n className={cn('group/resize absolute -right-1.5 bottom-0 top-0 z-50 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-primary/30', classNames?.resizeHandle)}\n onPointerDown={startResize}\n onKeyDown={handleResizeKeyDown}\n >\n <ResizeGripIcon />\n </button>\n ) : null}\n\n <div className=\"flex h-full w-full min-w-0 flex-col overflow-visible\">\n <div className={cn('mb-3 flex min-w-0 items-center gap-2', resolvedCollapsed ? 'justify-center px-0' : 'justify-between px-2', classNames?.header)}>\n {!resolvedCollapsed && title ? (\n <div className={cn('min-w-0 truncate text-[11px] font-medium uppercase text-muted-foreground', classNames?.title)}>\n {title}\n </div>\n ) : null}\n {collapsible ? (\n <button\n type=\"button\"\n className={cn('inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30', classNames?.collapseButton)}\n aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n title={resolvedCollapsed ? expandLabel : collapseLabel}\n onClick={() => updateCollapsed(!resolvedCollapsed)}\n >\n <ClampIcon expanded={!resolvedCollapsed} />\n </button>\n ) : null}\n </div>\n <div className={cn('min-h-0 flex-1 space-y-2 overflow-y-auto', resolvedCollapsed && 'flex w-full flex-col items-center', classNames?.list)}>\n {items.map((item) => renderItem(item))}\n {sections.map((section) => (\n <div\n key={section.id}\n className={cn('flex w-full flex-col gap-2', classNames?.section, section.className)}\n >\n {!resolvedCollapsed && section.label ? (\n <div\n className={cn(\n 'px-2 text-[11px] font-medium text-muted-foreground',\n classNames?.sectionLabel,\n section.labelClassName,\n )}\n >\n {section.label}\n </div>\n ) : null}\n {section.items.map((item) => renderItem(item))}\n </div>\n ))}\n </div>\n </div>\n </aside>\n <nav className={cn('gap-2 overflow-x-auto pb-1', mobileClassName, classNames?.mobileNav)} aria-label={typeof title === 'string' ? title : undefined}>\n {resolvedItems.map((item) => renderItem(item, true))}\n </nav>\n </>\n );\n },\n);\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchContentPaneClassNames {\n root?: string;\n header?: string;\n body?: string;\n footer?: string;\n}\n\nexport interface WorkbenchContentPaneBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n className?: string;\n}\n\nexport interface WorkbenchContentPaneProps extends Omit<ComponentPropsWithoutRef<'section'>, 'children' | 'className' | 'style'> {\n as?: ElementType;\n bodyAs?: ElementType;\n header?: ReactNode;\n footer?: ReactNode;\n children?: ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n bodyProps?: WorkbenchContentPaneBodyProps;\n classNames?: WorkbenchContentPaneClassNames;\n style?: CSSProperties;\n [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n header?: ReactNode;\n footer?: ReactNode;\n bodyAs?: ElementType;\n bodyClassName?: string;\n bodyProps?: WorkbenchContentPaneBodyProps;\n classNames?: WorkbenchContentPaneClassNames;\n}) {\n return Boolean(\n props.header ||\n props.footer ||\n props.bodyAs ||\n props.bodyClassName ||\n props.bodyProps ||\n props.classNames?.body,\n );\n}\n\nexport const WorkbenchContentPane = forwardRef<HTMLElement, WorkbenchContentPaneProps>(\n function WorkbenchContentPane(\n {\n as: Component = 'section',\n bodyAs: BodyComponent = 'div',\n header,\n footer,\n children,\n className,\n headerClassName,\n bodyClassName,\n footerClassName,\n bodyProps,\n classNames,\n style,\n ...props\n },\n ref,\n ) {\n const renderBodyWrapper = shouldRenderBodyWrapper({\n header,\n footer,\n bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n bodyClassName,\n bodyProps,\n classNames,\n });\n const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n return (\n <Component\n ref={ref}\n data-workbench-content-pane\n className={cn(\n 'workbench-surface-subtle flex h-full min-w-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/50 transition-all duration-300 dark:border-border/40',\n classNames?.root,\n className,\n )}\n style={style}\n {...props}\n >\n {header ? (\n <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n {header}\n </div>\n ) : null}\n {renderBodyWrapper ? (\n <BodyComponent\n className={cn('min-h-0 flex-1 overflow-hidden', classNames?.body, bodyClassName, bodyPropsClassName)}\n {...restBodyProps}\n >\n {children}\n </BodyComponent>\n ) : (\n children\n )}\n {footer ? (\n <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n {footer}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n agentWorkbench: {\n label: 'Session activity',\n reasoning: 'Reasoning',\n plan: 'Plan',\n taskNoDetail: 'No additional details',\n modes: { chatbot: 'Chatbot', agent: 'Agent' },\n composer: {\n send: 'Send message',\n stop: 'Stop generating',\n queue: 'Queue message',\n attach: 'Add photos or files',\n voice: 'Start voice input',\n webSearch: 'Web search',\n model: 'Model',\n reasoning: 'Reasoning effort',\n permissions: 'Permissions',\n removeAttachment: 'Remove attachment',\n editQueued: 'Edit queued message',\n deleteQueued: 'Delete queued message',\n moveUp: 'Move message up',\n moveDown: 'Move message down',\n queued: 'Queued messages',\n uploading: 'Uploading',\n noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n tool: {\n input: 'Input',\n output: 'Output',\n status: {\n pending: 'Pending',\n running: 'Running',\n completed: 'Completed',\n failed: 'Error',\n denied: 'Denied',\n },\n },\n approval: {\n approve: 'Approve',\n reject: 'Reject',\n approved: 'Approved',\n rejected: 'Rejected',\n },\n artifact: {\n pending: 'Preparing',\n ready: 'Ready',\n failed: 'Failed',\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: 'Stopping...',\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n usage: {\n label: 'Context usage',\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: 'Search agents and sessions',\n searchShortcut: 'Focus search',\n clearSearch: 'Clear search',\n tabsLabel: 'Agent workbench navigation',\n agents: 'Agents',\n sessions: 'Sessions',\n newAgent: 'New Agent',\n newSession: 'New Session',\n capabilities: 'Capabilities & Extensions',\n settings: 'Agent Settings',\n allAgents: 'All Agents',\n recentSessions: 'Recent Sessions',\n builtIn: 'Built-in',\n noDescription: 'No description',\n loading: 'Loading...',\n emptyAgents: 'No agents yet',\n emptySessions: 'No sessions yet',\n noResults: 'No matching results',\n retry: 'Retry',\n pin: 'Pin',\n unpin: 'Unpin',\n rename: 'Rename',\n delete: 'Delete',\n actions: 'Actions',\n save: 'Save',\n cancel: 'Cancel',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: 'Task details',\n description: 'Summary and workspace activity',\n duration: 'Duration',\n updated: 'Updated',\n model: 'Model',\n mode: 'Mode',\n permissions: 'Permissions',\n tokenUsage: 'Token usage',\n summary: 'Summary',\n summaryEmpty: 'No summary is available yet.',\n summaryFailed: 'The summary could not be generated.',\n highlights: 'Highlights',\n pendingItems: 'Pending items',\n tabs: {\n label: 'Task detail views',\n summary: 'Summary',\n workspace: 'Workspace',\n },\n status: {\n queued: 'Queued',\n running: 'Running',\n waiting_approval: 'Waiting for approval',\n stopping: 'Stopping',\n stopped: 'Stopped',\n completed: 'Completed',\n failed: 'Failed',\n },\n state: {\n loading: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseButtonProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst buttonSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nconst iconOnlySizeClassNames = {\n sm: 'h-8 w-8 px-0',\n md: 'h-9 w-9 px-0',\n lg: 'h-10 w-10 px-0',\n} as const;\n\nconst iconSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nfunction nonEmptyText(value: string | undefined) {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction LoadingIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-full w-full motion-safe:animate-spin motion-reduce:animate-none\"\n fill=\"none\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n className=\"opacity-25\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n />\n </svg>\n );\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(\n {\n children,\n label,\n icon,\n endIcon,\n type = 'button',\n title,\n ariaLabel,\n tone,\n size,\n active = false,\n iconOnly = false,\n disabled = false,\n loading = false,\n stopPropagation = false,\n appearance,\n variant,\n density,\n state,\n className,\n classNames,\n style,\n onClick,\n 'aria-label': nativeAriaLabel,\n ...buttonProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['active', active],\n ['iconOnly', iconOnly],\n ['disabled', disabled],\n ['loading', loading],\n ['stopPropagation', stopPropagation],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseButton ${name} must be a boolean.`);\n }\n }\n if (size !== undefined && size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseButton size must be \"sm\", \"md\", or \"lg\".');\n }\n if (\n tone !== undefined &&\n tone !== 'default' &&\n tone !== 'primary' &&\n tone !== 'success' &&\n tone !== 'warning' &&\n tone !== 'danger' &&\n tone !== 'muted'\n ) {\n throw new TypeError(\n 'BaseButton tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance({\n ...resolvedAppearance,\n variant,\n density,\n state,\n });\n const resolvedLabel = children ?? label;\n const hasLabel =\n hasRenderableNode(resolvedLabel) &&\n (typeof resolvedLabel !== 'string' || Boolean(resolvedLabel.trim()));\n const explicitAriaLabel =\n nonEmptyText(ariaLabel) ?? nonEmptyText(nativeAriaLabel);\n const labelText =\n typeof resolvedLabel === 'string'\n ? nonEmptyText(resolvedLabel)\n : undefined;\n const resolvedTitle = nonEmptyText(title);\n if (iconOnly && !hasLabel && !explicitAriaLabel && !resolvedTitle) {\n throw new TypeError(\n 'BaseButton iconOnly requires ariaLabel, aria-label, title, or a renderable label.',\n );\n }\n const resolvedAriaLabel =\n explicitAriaLabel ??\n labelText ??\n resolvedTitle;\n const resolvedDisabled = disabled || loading;\n const resolvedTone = tone ?? 'default';\n const resolvedState = state ?? (loading\n ? 'loading'\n : disabled\n ? 'disabled'\n : active\n ? 'active'\n : 'idle');\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n if (resolvedDisabled) return;\n onClick?.(event);\n };\n\n return (\n <button\n {...componentAttributes}\n {...buttonProps}\n ref={ref}\n type={type}\n title={title}\n aria-label={resolvedAriaLabel}\n aria-pressed={active || undefined}\n aria-busy={loading || undefined}\n data-variant={theme.variant}\n data-density={theme.density}\n disabled={resolvedDisabled}\n data-monkeys-component=\"button\"\n data-slot=\"root\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n data-active={active || undefined}\n data-loading={loading || undefined}\n data-disabled={resolvedDisabled || undefined}\n data-icon-only={iconOnly || undefined}\n className={cn(\n theme.slots.buttonBase,\n iconOnly && theme.slots.buttonIconOnly,\n size && buttonSizeClassNames[size],\n iconOnly && size && iconOnlySizeClassNames[size],\n getBaseButtonToneClassName(theme, tone, active),\n resolvedDisabled && theme.slots.buttonDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.button,\n ...(active ? theme.styles.buttonActive : undefined),\n ...(resolvedDisabled ? theme.styles.buttonDisabled : undefined),\n ...style,\n }}\n onClick={handleClick}\n >\n {loading ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n <LoadingIcon />\n </span>\n ) : icon ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n {icon}\n </span>\n ) : null}\n {iconOnly ? (\n hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className=\"sr-only\"\n >\n {resolvedLabel}\n </span>\n ) : null\n ) : hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(theme.slots.buttonLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n {!loading && endIcon ? (\n <span\n data-slot=\"end-icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n classNames?.endIcon,\n )}\n >\n {endIcon}\n </span>\n ) : null}\n </button>\n );\n },\n);\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\n\nexport type BaseFieldControlValue = string | boolean;\n\nexport function resolveBaseFieldValidationResult(result: unknown) {\n if (result === null) return null;\n if (typeof result === 'string' && result.trim().length > 0) return result;\n throw new TypeError(\n 'BaseField validate must return a non-empty error string or null.',\n );\n}\n\ninterface BaseFieldContextValue {\n invalid: boolean;\n registerControl: (controlKey: symbol) => () => void;\n notifyBlur: (value: BaseFieldControlValue) => void;\n notifyChange: (value: BaseFieldControlValue) => void;\n}\n\nexport const BaseFieldContext = createContext<BaseFieldContextValue | null>(\n null,\n);\n\nexport function useBaseFieldControl() {\n const context = useContext(BaseFieldContext);\n const controlKeyRef = useRef<symbol | null>(null);\n if (controlKeyRef.current === null) {\n controlKeyRef.current = Symbol('BaseFieldControl');\n }\n\n const registerControl = context?.registerControl;\n useEffect(() => {\n if (!registerControl || controlKeyRef.current === null) return undefined;\n return registerControl(controlKeyRef.current);\n }, [registerControl]);\n\n const notifyBlur = context?.notifyBlur;\n const notifyChange = context?.notifyChange;\n\n return {\n invalid: context?.invalid ?? false,\n notifyBlur: useCallback(\n (value: BaseFieldControlValue) => notifyBlur?.(value),\n [notifyBlur],\n ),\n notifyChange: useCallback(\n (value: BaseFieldControlValue) => notifyChange?.(value),\n [notifyChange],\n ),\n };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type Ref,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseCheckboxProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasNonEmptyRenderableNode, hasRenderableNode } from './utils';\n\nconst boxSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nconst indicatorSizeClassNames = {\n sm: 'text-[10px]',\n md: 'text-[11px]',\n lg: 'text-xs',\n} as const;\n\nfunction setRefs<TElement>(\n element: TElement | null,\n ...refs: Array<Ref<TElement> | undefined>\n) {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === 'function') {\n ref(element);\n continue;\n }\n (ref as { current: TElement | null }).current = element;\n }\n}\n\nexport const BaseCheckbox = forwardRef<HTMLInputElement, BaseCheckboxProps>(\n function BaseCheckbox(\n {\n label,\n description,\n indeterminate = false,\n invalid = false,\n disabled = false,\n controlSize,\n appearance,\n className,\n classNames,\n style,\n checked,\n defaultChecked,\n onBlur,\n onChange,\n 'aria-invalid': nativeAriaInvalid,\n ...checkboxProps\n },\n forwardedRef,\n ) {\n for (const [name, value] of [\n ['indeterminate', indeterminate],\n ['invalid', invalid],\n ['disabled', disabled],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseCheckbox ${name} must be a boolean.`);\n }\n }\n if (\n controlSize !== undefined &&\n controlSize !== 'sm' &&\n controlSize !== 'md' &&\n controlSize !== 'lg'\n ) {\n throw new TypeError(\n 'BaseCheckbox controlSize must be \"sm\", \"md\", or \"lg\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n const hasLabel = hasRenderableNode(label);\n const hasDescription = hasNonEmptyRenderableNode(description);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const indeterminateRef = useRef(indeterminate);\n indeterminateRef.current = indeterminate;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(\n defaultChecked ?? false,\n );\n const isControlled = checked !== undefined;\n const resolvedChecked = Boolean(isControlled ? checked : uncontrolledChecked);\n const active = indeterminate || resolvedChecked;\n const state = indeterminate\n ? 'mixed'\n : resolvedChecked\n ? 'checked'\n : 'unchecked';\n\n const setInputRef = useCallback(\n (element: HTMLInputElement | null) => {\n inputRef.current = element;\n if (element) element.indeterminate = indeterminateRef.current;\n setRefs(element, forwardedRef);\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) {\n setUncontrolledChecked(event.currentTarget.checked);\n }\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.checked);\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n };\n\n return (\n <label\n {...componentAttributes}\n data-monkeys-component=\"checkbox\"\n data-slot=\"root\"\n data-state={state}\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.checkboxRoot,\n !hasDescription && 'items-center',\n disabled && theme.slots.checkboxDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.checkboxRoot,\n ...style,\n }}\n >\n <span\n data-slot=\"box\"\n data-state={state}\n data-size={controlSize}\n className={cn(\n theme.slots.checkboxBox,\n !hasDescription && 'mt-0',\n active && theme.slots.checkboxBoxChecked,\n resolvedInvalid && theme.slots.checkboxBoxInvalid,\n controlSize && boxSizeClassNames[controlSize],\n classNames?.box,\n )}\n style={{\n ...theme.styles.checkboxBox,\n }}\n >\n <input\n {...checkboxProps}\n ref={setInputRef}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-checked={indeterminate ? 'mixed' : resolvedChecked}\n data-slot=\"input\"\n data-state={state}\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.checkboxInput, classNames?.input)}\n onBlur={(event) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.checked);\n }}\n onChange={handleChange}\n />\n {active ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"indicator\"\n data-state={state}\n data-size={controlSize}\n className={cn(\n theme.slots.checkboxIndicator,\n controlSize && indicatorSizeClassNames[controlSize],\n classNames?.indicator,\n )}\n >\n {indeterminate ? '–' : '✓'}\n </span>\n ) : null}\n </span>\n {hasLabel || hasDescription ? (\n <span\n data-slot=\"content\"\n className={cn(theme.slots.checkboxContent, classNames?.content)}\n >\n {hasLabel ? (\n <span\n data-slot=\"label\"\n className={cn(theme.slots.checkboxLabel, classNames?.label)}\n >\n {label}\n </span>\n ) : null}\n {hasDescription ? (\n <span\n data-slot=\"description\"\n className={cn(\n theme.slots.checkboxDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n ) : null}\n </label>\n );\n },\n);\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import * as ContextMenu from '@radix-ui/react-context-menu';\nimport { forwardRef, type ComponentRef, type ReactNode } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysDirection,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\n\nimport type {\n BaseContextMenuCheckboxItemProps,\n BaseContextMenuContentProps,\n BaseContextMenuItemProps,\n BaseContextMenuLabelProps,\n BaseContextMenuProps,\n BaseContextMenuRadioGroupProps,\n BaseContextMenuRadioItemProps,\n BaseContextMenuSeparatorProps,\n BaseContextMenuSubContentProps,\n BaseContextMenuSubProps,\n BaseContextMenuSubTriggerProps,\n BaseContextMenuTriggerProps,\n} from './types';\nimport {\n getBaseMenuItemToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst contextMenuTones = [\n 'default',\n 'primary',\n 'success',\n 'warning',\n 'danger',\n 'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseContextMenu ${name} must be a boolean.`);\n }\n}\n\nfunction validateTone(value: unknown) {\n if (\n value !== undefined &&\n !contextMenuTones.includes(\n value as (typeof contextMenuTones)[number],\n )\n ) {\n throw new TypeError(\n 'BaseContextMenu tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n}\n\nfunction validateDirection(value: unknown) {\n if (value !== undefined && value !== 'ltr' && value !== 'rtl') {\n throw new TypeError('BaseContextMenu dir must be \"ltr\" or \"rtl\".');\n }\n}\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"M3.5 8.5 6.5 11.5 12.5 4.5\" />\n </svg>\n );\n}\n\nfunction DotIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"currentColor\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"3\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"m6 4 4 4-4 4\" />\n </svg>\n );\n}\n\nfunction renderItemContent({\n label,\n icon,\n shortcut,\n children,\n classNames,\n inset,\n indicator,\n}: Pick<\n BaseContextMenuItemProps,\n 'children' | 'classNames' | 'icon' | 'inset' | 'label' | 'shortcut'\n> & {\n indicator?: ReactNode;\n}) {\n const resolvedLabel = children ?? label;\n\n return (\n <>\n {indicator ? indicator : null}\n {hasRenderableNode(icon) ? (\n <span data-slot=\"icon\" className={cn(classNames?.icon)}>\n {icon}\n </span>\n ) : inset ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"icon\"\n className=\"h-4 w-4 shrink-0\"\n />\n ) : null}\n {hasRenderableNode(resolvedLabel) ? (\n <span data-slot=\"label\" className={cn(classNames?.label)}>\n {resolvedLabel}\n </span>\n ) : null}\n {hasRenderableNode(shortcut) ? (\n <span data-slot=\"shortcut\" className={cn(classNames?.shortcut)}>\n {shortcut}\n </span>\n ) : null}\n </>\n );\n}\n\nexport function BaseContextMenu({\n children,\n trigger,\n content,\n disabled = false,\n modal = true,\n dir,\n appearance,\n className,\n classNames,\n onOpenChange,\n}: BaseContextMenuProps) {\n validateBoolean(disabled, 'disabled');\n validateBoolean(modal, 'modal');\n validateDirection(dir);\n const inheritedDirection = useMonkeysDirection();\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n\n return (\n <ContextMenu.Root\n onOpenChange={onOpenChange}\n modal={modal}\n dir={dir ?? inheritedDirection}\n >\n {trigger ? (\n <BaseContextMenuTrigger\n disabled={disabled}\n appearance={resolvedAppearance}\n className={cn(classNames?.trigger, className)}\n >\n {trigger}\n </BaseContextMenuTrigger>\n ) : null}\n {content ? (\n <BaseContextMenuContent\n appearance={resolvedAppearance}\n className={classNames?.content}\n >\n {content}\n </BaseContextMenuContent>\n ) : null}\n {children}\n </ContextMenu.Root>\n );\n}\n\nexport const BaseContextMenuTrigger = forwardRef<\n ComponentRef<typeof ContextMenu.Trigger>,\n BaseContextMenuTriggerProps\n>(function BaseContextMenuTrigger(\n {\n children,\n disabled = false,\n asChild = false,\n appearance,\n className,\n style,\n ...triggerProps\n },\n ref,\n) {\n validateBoolean(disabled, 'Trigger disabled');\n validateBoolean(asChild, 'Trigger asChild');\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Trigger\n {...componentAttributes}\n {...triggerProps}\n ref={ref}\n asChild={asChild}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"trigger\"\n data-disabled={disabled || undefined}\n className={cn(\n !asChild && theme.slots.menuTrigger,\n disabled && !asChild && theme.slots.menuItemDisabled,\n className,\n )}\n style={style}\n >\n {children}\n </ContextMenu.Trigger>\n );\n});\n\nexport const BaseContextMenuContent = forwardRef<\n ComponentRef<typeof ContextMenu.Content>,\n BaseContextMenuContentProps\n>(function BaseContextMenuContent(\n {\n children,\n appearance,\n className,\n classNames,\n style,\n ...contentProps\n },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const portal = useBaseOverlayPortal();\n const content = (\n <ContextMenu.Content\n {...componentAttributes}\n {...contentProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"content\"\n className={cn(theme.slots.menuContent, classNames?.root, className)}\n style={{\n ...theme.styles.menuContent,\n ...style,\n }}\n >\n {children}\n </ContextMenu.Content>\n );\n\n return portal.shouldPortal ? (\n <ContextMenu.Portal {...portal.radixPortalProps}>\n {content}\n </ContextMenu.Portal>\n ) : content;\n});\n\nexport const BaseContextMenuLabel = forwardRef<\n ComponentRef<typeof ContextMenu.Label>,\n BaseContextMenuLabelProps\n>(function BaseContextMenuLabel(\n { children, appearance, className, style, ...labelProps },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Label\n {...componentAttributes}\n {...labelProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"label\"\n className={cn(theme.slots.menuLabel, className)}\n style={style}\n >\n {children}\n </ContextMenu.Label>\n );\n});\n\nexport const BaseContextMenuSeparator = forwardRef<\n ComponentRef<typeof ContextMenu.Separator>,\n BaseContextMenuSeparatorProps\n>(function BaseContextMenuSeparator(\n { appearance, className, style, ...separatorProps },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Separator\n {...componentAttributes}\n {...separatorProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"separator\"\n className={cn(theme.slots.menuSeparator, className)}\n style={style}\n />\n );\n});\n\nexport const BaseContextMenuItem = forwardRef<\n ComponentRef<typeof ContextMenu.Item>,\n BaseContextMenuItemProps\n>(function BaseContextMenuItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'Item disabled');\n validateBoolean(inset, 'Item inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Item\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"item\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuItem,\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n })}\n </ContextMenu.Item>\n );\n});\n\nexport const BaseContextMenuCheckboxItem = forwardRef<\n ComponentRef<typeof ContextMenu.CheckboxItem>,\n BaseContextMenuCheckboxItemProps\n>(function BaseContextMenuCheckboxItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n checked,\n onCheckedChange,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'CheckboxItem disabled');\n validateBoolean(inset, 'CheckboxItem inset');\n validateTone(tone);\n if (\n checked !== undefined &&\n checked !== 'indeterminate' &&\n typeof checked !== 'boolean'\n ) {\n throw new TypeError(\n 'BaseContextMenu CheckboxItem checked must be a boolean or \"indeterminate\".',\n );\n }\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.CheckboxItem\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n checked={checked}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"checkbox-item\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n data-checked={\n checked === 'indeterminate'\n ? 'mixed'\n : checked === undefined\n ? undefined\n : String(checked)\n }\n onCheckedChange={(nextChecked) => {\n if (disabled) return;\n onCheckedChange?.(nextChecked);\n }}\n className={cn(\n theme.slots.menuItem,\n 'pl-8',\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n indicator: (\n <ContextMenu.ItemIndicator\n data-slot=\"indicator\"\n className={cn(theme.slots.menuCheckboxIndicator, classNames?.indicator)}\n >\n <CheckIcon />\n </ContextMenu.ItemIndicator>\n ),\n })}\n </ContextMenu.CheckboxItem>\n );\n});\n\nexport function BaseContextMenuRadioGroup({\n children,\n value,\n onValueChange,\n}: BaseContextMenuRadioGroupProps) {\n return (\n <ContextMenu.RadioGroup value={value} onValueChange={onValueChange}>\n {children}\n </ContextMenu.RadioGroup>\n );\n}\n\nexport const BaseContextMenuRadioItem = forwardRef<\n ComponentRef<typeof ContextMenu.RadioItem>,\n BaseContextMenuRadioItemProps\n>(function BaseContextMenuRadioItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n value,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'RadioItem disabled');\n validateBoolean(inset, 'RadioItem inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.RadioItem\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n value={value}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"radio-item\"\n data-tone={resolvedTone}\n data-value={value}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuItem,\n 'pl-8',\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n indicator: (\n <ContextMenu.ItemIndicator\n data-slot=\"indicator\"\n className={cn(theme.slots.menuRadioIndicator, classNames?.indicator)}\n >\n <DotIcon />\n </ContextMenu.ItemIndicator>\n ),\n })}\n </ContextMenu.RadioItem>\n );\n});\n\nexport function BaseContextMenuSub({\n children,\n open,\n defaultOpen,\n onOpenChange,\n}: BaseContextMenuSubProps) {\n if (open !== undefined) validateBoolean(open, 'Sub open');\n if (defaultOpen !== undefined) {\n validateBoolean(defaultOpen, 'Sub defaultOpen');\n }\n return (\n <ContextMenu.Sub\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n {children}\n </ContextMenu.Sub>\n );\n}\n\nexport const BaseContextMenuSubTrigger = forwardRef<\n ComponentRef<typeof ContextMenu.SubTrigger>,\n BaseContextMenuSubTriggerProps\n>(function BaseContextMenuSubTrigger(\n {\n children,\n label,\n icon,\n tone,\n disabled = false,\n inset = false,\n appearance,\n className,\n classNames,\n style,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'SubTrigger disabled');\n validateBoolean(inset, 'SubTrigger inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const resolvedLabel = children ?? label;\n\n return (\n <ContextMenu.SubTrigger\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"sub-trigger\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuSubTrigger,\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span\n data-slot=\"icon\"\n className={cn(theme.slots.menuItemIcon, classNames?.icon)}\n >\n {icon}\n </span>\n ) : inset ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"icon\"\n className=\"h-4 w-4 shrink-0\"\n />\n ) : null}\n {hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n className={cn(theme.slots.menuItemLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n <span\n data-slot=\"sub-indicator\"\n className={cn(\n theme.slots.menuSubTriggerIcon,\n classNames?.shortcut,\n 'rtl:rotate-180',\n )}\n >\n <ChevronRightIcon />\n </span>\n </ContextMenu.SubTrigger>\n );\n});\n\nexport const BaseContextMenuSubContent = forwardRef<\n ComponentRef<typeof ContextMenu.SubContent>,\n BaseContextMenuSubContentProps\n>(function BaseContextMenuSubContent(\n {\n children,\n appearance,\n className,\n classNames,\n style,\n sideOffset = 6,\n ...subContentProps\n },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const portal = useBaseOverlayPortal();\n const content = (\n <ContextMenu.SubContent\n {...componentAttributes}\n {...subContentProps}\n ref={ref}\n sideOffset={sideOffset}\n data-monkeys-component=\"context-menu\"\n data-slot=\"sub-content\"\n className={cn(theme.slots.menuSubContent, classNames?.root, className)}\n style={{\n ...theme.styles.menuContent,\n ...style,\n }}\n >\n {children}\n </ContextMenu.SubContent>\n );\n\n return portal.shouldPortal ? (\n <ContextMenu.Portal {...portal.radixPortalProps}>\n {content}\n </ContextMenu.Portal>\n ) : content;\n});\n","import type { BaseDescriptionListProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst columnClassNames = {\n 1: 'grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 xl:grid-cols-3',\n};\n\nexport function BaseDescriptionList({\n items,\n columns = 1,\n appearance,\n className,\n classNames,\n style,\n children,\n ...listProps\n}: BaseDescriptionListProps) {\n const theme = resolveBaseAppearance(appearance);\n\n return (\n <dl\n {...listProps}\n className={cn(\n theme.slots.descriptionListRoot,\n columnClassNames[columns],\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.descriptionList,\n ...style,\n }}\n >\n {items?.map((item, index) => (\n <div\n key={index}\n className={cn(theme.slots.descriptionListItem, classNames?.item)}\n >\n <dt className={cn(theme.slots.descriptionListTerm, classNames?.term)}>\n {item.term}\n </dt>\n <dd\n className={cn(theme.slots.descriptionListValue, classNames?.value)}\n >\n {item.value}\n </dd>\n </div>\n ))}\n {children}\n </dl>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseFieldControlProps, BaseFieldProps } from './types';\nimport {\n BaseFieldContext,\n resolveBaseFieldValidationResult,\n type BaseFieldControlValue,\n} from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction mergeAriaIds(...values: Array<string | undefined>) {\n const ids = values.flatMap(\n (value) => value?.split(/\\s+/).filter(Boolean) ?? [],\n );\n return ids.length ? Array.from(new Set(ids)).join(' ') : undefined;\n}\n\nfunction resolveOptionalId(\n value: string | undefined,\n fallback: string,\n name: string,\n) {\n if (value === undefined) return fallback;\n if (!value.trim() || /\\s/.test(value)) {\n throw new TypeError(\n `BaseField ${name} must be a non-empty ID without whitespace.`,\n );\n }\n return value;\n}\n\nexport const BaseField = forwardRef<HTMLDivElement, BaseFieldProps>(\n function BaseField(\n {\n label,\n description,\n message,\n error,\n required = false,\n disabled = false,\n htmlFor,\n descriptionId,\n messageId,\n errorId,\n validate,\n validationMode = 'onBlur',\n children,\n appearance,\n className,\n classNames,\n style,\n ...fieldProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['required', required],\n ['disabled', disabled],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseField ${name} must be a boolean.`);\n }\n }\n if (validate !== undefined && typeof validate !== 'function') {\n throw new TypeError('BaseField validate must be a function.');\n }\n if (validationMode !== 'onBlur' && validationMode !== 'onChange') {\n throw new TypeError(\n 'BaseField validationMode must be \"onBlur\" or \"onChange\".',\n );\n }\n\n const generatedId = useId();\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const hasDescription = hasRenderableNode(description);\n const [internalError, setInternalError] = useState<string | null>(null);\n const registeredControlsRef = useRef(new Set<symbol>());\n const validateRef = useRef(validate);\n const validationModeRef = useRef(validationMode);\n const disabledRef = useRef(disabled);\n validateRef.current = validate;\n validationModeRef.current = validationMode;\n disabledRef.current = disabled;\n const hasValidator = validate !== undefined;\n\n useEffect(() => {\n if (!hasValidator || disabled) {\n setInternalError(null);\n }\n }, [disabled, hasValidator]);\n\n useEffect(() => {\n if (hasValidator && registeredControlsRef.current.size !== 1) {\n throw new TypeError(\n 'BaseField with validate must contain exactly one compatible Base control.',\n );\n }\n }, [hasValidator]);\n\n const registerControl = useCallback((controlKey: symbol) => {\n const registeredControls = registeredControlsRef.current;\n if (\n validateRef.current !== undefined &&\n !registeredControls.has(controlKey) &&\n registeredControls.size > 0\n ) {\n throw new TypeError(\n 'BaseField with validate supports exactly one compatible Base control. Use BaseFieldset for control groups.',\n );\n }\n registeredControls.add(controlKey);\n return () => {\n registeredControls.delete(controlKey);\n };\n }, []);\n\n const runValidation = useCallback(\n (mode: 'onBlur' | 'onChange', value: BaseFieldControlValue) => {\n const currentValidate = validateRef.current;\n if (\n disabledRef.current ||\n currentValidate === undefined ||\n validationModeRef.current !== mode\n ) {\n return;\n }\n\n const result = resolveBaseFieldValidationResult(currentValidate(value));\n if (result === null) {\n setInternalError(null);\n return;\n }\n setInternalError(result);\n },\n [],\n );\n\n const notifyBlur = useCallback(\n (value: BaseFieldControlValue) => runValidation('onBlur', value),\n [runValidation],\n );\n const notifyChange = useCallback(\n (value: BaseFieldControlValue) => runValidation('onChange', value),\n [runValidation],\n );\n\n const hasExternalError = hasRenderableNode(error);\n const resolvedError = hasExternalError ? error : internalError;\n const hasError = hasRenderableNode(resolvedError);\n const hasMessage = !hasError && hasRenderableNode(message);\n const resolvedMessage = hasError ? resolvedError : message;\n const resolvedControlId = htmlFor ?? `${generatedId}-control`;\n const resolvedDescriptionId = hasDescription\n ? resolveOptionalId(\n descriptionId,\n `${generatedId}-description`,\n 'descriptionId',\n )\n : undefined;\n const resolvedMessageId = hasMessage\n ? resolveOptionalId(messageId, `${generatedId}-message`, 'messageId')\n : undefined;\n const resolvedErrorId = hasError\n ? resolveOptionalId(errorId, `${generatedId}-error`, 'errorId')\n : undefined;\n const controlProps: BaseFieldControlProps = {\n id: resolvedControlId,\n 'aria-describedby': mergeAriaIds(\n resolvedDescriptionId,\n resolvedMessageId,\n ),\n 'aria-errormessage': resolvedErrorId,\n 'aria-invalid': hasError ? true : undefined,\n 'aria-required': required ? true : undefined,\n required: required || undefined,\n disabled: disabled || undefined,\n };\n const renderedChildren =\n typeof children === 'function' ? children(controlProps) : children;\n const fieldContextValue = useMemo(\n () => ({\n invalid: hasError,\n registerControl,\n notifyBlur,\n notifyChange,\n }),\n [hasError, notifyBlur, notifyChange, registerControl],\n );\n\n return (\n <div\n {...componentAttributes}\n {...fieldProps}\n ref={ref}\n aria-disabled={disabled || undefined}\n data-monkeys-component=\"field\"\n data-slot=\"root\"\n data-required={required || undefined}\n data-disabled={disabled || undefined}\n data-invalid={hasError || undefined}\n className={cn(\n theme.slots.fieldRoot,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.field,\n ...style,\n }}\n >\n {hasRenderableNode(label) ? (\n <div\n data-slot=\"label-row\"\n className={cn(theme.slots.fieldLabelRow, classNames?.labelRow)}\n >\n <label\n htmlFor={typeof children === 'function' ? resolvedControlId : htmlFor}\n data-slot=\"label\"\n className={cn(theme.slots.fieldLabel, classNames?.label)}\n >\n {label}\n {required ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"required-indicator\"\n className={cn(\n theme.slots.fieldRequired,\n classNames?.required,\n )}\n >\n {' '}\n *\n </span>\n ) : null}\n </label>\n </div>\n ) : null}\n\n {hasDescription ? (\n <div\n id={resolvedDescriptionId}\n data-slot=\"description\"\n className={cn(\n theme.slots.fieldDescription,\n classNames?.description,\n )}\n >\n {description}\n </div>\n ) : null}\n\n {hasRenderableNode(renderedChildren) ? (\n <div\n data-slot=\"control\"\n className={cn(theme.slots.fieldControl, classNames?.control)}\n style={theme.styles.fieldControl}\n >\n <BaseFieldContext.Provider value={fieldContextValue}>\n {renderedChildren}\n </BaseFieldContext.Provider>\n </div>\n ) : null}\n\n {hasRenderableNode(resolvedMessage) ? (\n <div\n id={hasError ? resolvedErrorId : resolvedMessageId}\n role={hasError ? 'alert' : undefined}\n data-slot={hasError ? 'error' : 'message'}\n className={cn(\n theme.slots.fieldMessage,\n hasError && 'text-destructive-text',\n classNames?.message,\n )}\n >\n {resolvedMessage}\n </div>\n ) : null}\n </div>\n );\n },\n);\n","import { forwardRef } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseInputProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst controlSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nexport const BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(\n function BaseInput(\n {\n icon,\n trailing,\n invalid = false,\n disabled = false,\n readOnly = false,\n controlSize,\n appearance,\n className,\n classNames,\n style,\n 'aria-invalid': nativeAriaInvalid,\n onBlur,\n onChange,\n ...inputProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['invalid', invalid],\n ['disabled', disabled],\n ['readOnly', readOnly],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseInput ${name} must be a boolean.`);\n }\n }\n if (\n controlSize !== undefined &&\n controlSize !== 'sm' &&\n controlSize !== 'md' &&\n controlSize !== 'lg'\n ) {\n throw new TypeError('BaseInput controlSize must be \"sm\", \"md\", or \"lg\".');\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n\n return (\n <div\n {...componentAttributes}\n data-monkeys-component=\"input\"\n data-slot=\"root\"\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n className={cn(\n theme.slots.controlWrapper,\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n readOnly && theme.slots.controlReadOnly,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span\n data-slot=\"icon\"\n className={cn(theme.slots.controlIcon, classNames?.icon)}\n >\n {icon}\n </span>\n ) : null}\n <input\n {...inputProps}\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n data-slot=\"control\"\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlInput,\n controlSize && controlSizeClassNames[controlSize],\n classNames?.control,\n )}\n onBlur={(event) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.value);\n }}\n onChange={(event) => {\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.value);\n }}\n />\n {hasRenderableNode(trailing) ? (\n <span\n data-slot=\"trailing\"\n className={cn(theme.slots.controlTrailing, classNames?.trailing)}\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n },\n);\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type FocusEvent,\n type FormEvent,\n type KeyboardEvent,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseSelectOption, BaseSelectProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst typeaheadResetDelay = 500;\n\nfunction validateSelectProps({\n options,\n value,\n defaultValue,\n invalid,\n disabled,\n openForPreview,\n required,\n}: Pick<\n BaseSelectProps,\n | 'defaultValue'\n | 'disabled'\n | 'invalid'\n | 'openForPreview'\n | 'options'\n | 'required'\n | 'value'\n>) {\n for (const [name, state] of [\n ['invalid', invalid],\n ['disabled', disabled],\n ['openForPreview', openForPreview],\n ] as const) {\n if (typeof state !== 'boolean') {\n throw new TypeError(`BaseSelect ${name} must be a boolean.`);\n }\n }\n if (required !== undefined && typeof required !== 'boolean') {\n throw new TypeError('BaseSelect required must be a boolean.');\n }\n\n if (options !== undefined && !Array.isArray(options)) {\n throw new TypeError('BaseSelect options must be an array.');\n }\n options?.forEach((option, index) => {\n if (!option || typeof option !== 'object') {\n throw new TypeError(`BaseSelect option at index ${index} must be an object.`);\n }\n if (typeof option.value !== 'string') {\n throw new TypeError(\n `BaseSelect option value at index ${index} must be a string.`,\n );\n }\n if (\n option.disabled !== undefined &&\n typeof option.disabled !== 'boolean'\n ) {\n throw new TypeError(\n `BaseSelect option disabled at index ${index} must be a boolean.`,\n );\n }\n if (\n option.textValue !== undefined &&\n typeof option.textValue !== 'string'\n ) {\n throw new TypeError(\n `BaseSelect option textValue at index ${index} must be a string.`,\n );\n }\n });\n\n if (options?.length) {\n if (\n value !== undefined &&\n typeof value !== 'string' &&\n typeof value !== 'number'\n ) {\n throw new TypeError(\n 'BaseSelect value must be a string or number when options are used.',\n );\n }\n if (\n defaultValue !== undefined &&\n typeof defaultValue !== 'string' &&\n typeof defaultValue !== 'number'\n ) {\n throw new TypeError(\n 'BaseSelect defaultValue must be a string or number when options are used.',\n );\n }\n }\n}\n\nfunction normalizeValue(value: BaseSelectProps['value']) {\n return typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n}\n\nfunction findOption(options: BaseSelectOption[], value: string | undefined) {\n if (value === undefined) return undefined;\n return options.find((option) => option.value === value);\n}\n\nfunction getInitialActiveIndex(options: BaseSelectOption[], value: string) {\n const selectedIndex = options.findIndex(\n (option) => option.value === value && !option.disabled,\n );\n if (selectedIndex >= 0) return selectedIndex;\n return options.findIndex((option) => !option.disabled);\n}\n\nfunction getNextEnabledIndex(\n options: BaseSelectOption[],\n currentIndex: number,\n direction: 1 | -1,\n) {\n if (!options.length) return -1;\n const startIndex = currentIndex >= 0 ? currentIndex : direction === 1 ? -1 : 0;\n\n for (let offset = 1; offset <= options.length; offset += 1) {\n const nextIndex =\n (startIndex + offset * direction + options.length) % options.length;\n if (!options[nextIndex]?.disabled) {\n return nextIndex;\n }\n }\n\n return -1;\n}\n\nfunction getBoundaryEnabledIndex(\n options: BaseSelectOption[],\n boundary: 'first' | 'last',\n) {\n if (boundary === 'first') {\n return options.findIndex((option) => !option.disabled);\n }\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.disabled) return index;\n }\n return -1;\n}\n\nfunction getOptionText(option: BaseSelectOption) {\n if (option.textValue !== undefined) return option.textValue;\n if (typeof option.label === 'string') return option.label;\n return option.value;\n}\n\nfunction toDomId(value: string) {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nexport const BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\n function BaseSelect(\n {\n options,\n placeholder,\n icon,\n invalid = false,\n disabled = false,\n openForPreview = false,\n appearance,\n className,\n classNames,\n style,\n children,\n value,\n defaultValue,\n onBlur,\n onChange,\n onFocus,\n onInvalid,\n name,\n id,\n required,\n 'aria-invalid': nativeAriaInvalid,\n 'aria-label': nativeAriaLabel,\n 'aria-labelledby': nativeAriaLabelledBy,\n 'aria-describedby': nativeAriaDescribedBy,\n 'aria-errormessage': nativeAriaErrorMessage,\n 'aria-required': nativeAriaRequired,\n ...selectProps\n },\n ref,\n ) {\n validateSelectProps({\n options,\n value,\n defaultValue,\n invalid,\n disabled,\n openForPreview,\n required,\n });\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n const generatedId = useId();\n const selectId = id ?? generatedId;\n const triggerId = `${selectId}-button`;\n const listboxId = `${selectId}-listbox`;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const selectRef = useRef<HTMLSelectElement | null>(null);\n const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const composingRef = useRef(false);\n const typeaheadBufferRef = useRef('');\n const typeaheadTimerRef = useRef<{\n ownerWindow: Window;\n timerId: number;\n } | null>(null);\n const optionList = options ?? [];\n const isCustomSelect = optionList.length > 0;\n const forceOpen = openForPreview;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = forceOpen || uncontrolledOpen;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeValue(defaultValue),\n );\n const isControlled = value !== undefined;\n const selectedValue = isControlled\n ? normalizeValue(value)\n : uncontrolledValue;\n const selectedOption = findOption(optionList, selectedValue);\n const [activeIndex, setActiveIndex] = useState(() =>\n getInitialActiveIndex(optionList, selectedValue),\n );\n const resolvedActiveIndex =\n activeIndex >= 0 && !optionList[activeIndex]?.disabled\n ? activeIndex\n : getInitialActiveIndex(optionList, selectedValue);\n const optionIds = optionList.map(\n (option, index) =>\n `${selectId}-option-${index}-${toDomId(option.value)}`,\n );\n const visibleLabel = selectedOption?.label ?? placeholder;\n const isPlaceholder = !selectedOption;\n const layerDirection = selectProps.dir ?? componentAttributes.dir;\n const rootState = disabled\n ? 'disabled'\n : resolvedInvalid\n ? 'invalid'\n : open\n ? 'open'\n : 'closed';\n\n const setSelectRef = (node: HTMLSelectElement | null) => {\n selectRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const handleNativeBlur = (event: FocusEvent<HTMLSelectElement>) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.value);\n };\n\n const handleNativeChange = (event: ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.value);\n };\n\n const resetActiveIndex = () => {\n setActiveIndex(getInitialActiveIndex(optionList, selectedValue));\n };\n\n const cancelAndClose = () => {\n resetActiveIndex();\n if (!forceOpen) setUncontrolledOpen(false);\n };\n\n const openMenu = (nextActiveIndex?: number) => {\n setActiveIndex(\n nextActiveIndex ?? getInitialActiveIndex(optionList, selectedValue),\n );\n if (!forceOpen) setUncontrolledOpen(true);\n };\n\n const notifyChange = (nextValue: string) => {\n const selectElement = selectRef.current;\n if (!selectElement) return;\n const ownerWindow = selectElement.ownerDocument.defaultView;\n if (!ownerWindow) {\n throw new Error(\n 'BaseSelect cannot dispatch change without an owning window.',\n );\n }\n const valueSetter = Object.getOwnPropertyDescriptor(\n ownerWindow.HTMLSelectElement.prototype,\n 'value',\n )?.set;\n if (!valueSetter) {\n throw new Error('BaseSelect could not resolve the native select value setter.');\n }\n valueSetter.call(selectElement, nextValue);\n selectElement.dispatchEvent(\n new ownerWindow.Event('change', { bubbles: true }),\n );\n };\n\n const commitIndex = (nextIndex: number) => {\n const option = optionList[nextIndex];\n if (!option || option.disabled || disabled) return;\n setActiveIndex(nextIndex);\n if (option.value !== selectedValue) {\n if (!isControlled) {\n setUncontrolledValue(option.value);\n }\n notifyChange(option.value);\n }\n if (!forceOpen) setUncontrolledOpen(false);\n };\n\n const moveActive = (nextIndex: number) => {\n if (nextIndex < 0 || optionList[nextIndex]?.disabled) return;\n setActiveIndex(nextIndex);\n if (!open) openMenu(nextIndex);\n };\n\n const handleTypeahead = (\n event: KeyboardEvent<HTMLButtonElement>,\n character: string,\n ) => {\n const ownerWindow = event.currentTarget.ownerDocument.defaultView;\n if (!ownerWindow) return;\n const nextBuffer = `${typeaheadBufferRef.current}${character}`.toLocaleLowerCase();\n typeaheadBufferRef.current = nextBuffer;\n if (typeaheadTimerRef.current) {\n typeaheadTimerRef.current.ownerWindow.clearTimeout(\n typeaheadTimerRef.current.timerId,\n );\n }\n typeaheadTimerRef.current = {\n ownerWindow,\n timerId: ownerWindow.setTimeout(() => {\n typeaheadBufferRef.current = '';\n typeaheadTimerRef.current = null;\n }, typeaheadResetDelay),\n };\n\n const repeatedCharacter = Array.from(nextBuffer).every(\n (bufferCharacter) => bufferCharacter === nextBuffer[0],\n );\n const query = repeatedCharacter ? character.toLocaleLowerCase() : nextBuffer;\n const startIndex = open\n ? resolvedActiveIndex\n : optionList.findIndex(\n (option) => option.value === selectedValue && !option.disabled,\n );\n for (let offset = 1; offset <= optionList.length; offset += 1) {\n const index = (startIndex + offset + optionList.length) % optionList.length;\n const option = optionList[index];\n if (\n !option?.disabled &&\n getOptionText(option).trim().toLocaleLowerCase().startsWith(query)\n ) {\n event.preventDefault();\n moveActive(index);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled || composingRef.current || event.nativeEvent.isComposing) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const selectedIndex = optionList.findIndex(\n (option) => option.value === selectedValue && !option.disabled,\n );\n const currentIndex = open ? resolvedActiveIndex : selectedIndex;\n moveActive(\n getNextEnabledIndex(\n optionList,\n currentIndex,\n event.key === 'ArrowDown' ? 1 : -1,\n ),\n );\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n moveActive(\n getBoundaryEnabledIndex(\n optionList,\n event.key === 'Home' ? 'first' : 'last',\n ),\n );\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n if (open) {\n commitIndex(resolvedActiveIndex);\n } else {\n openMenu();\n }\n return;\n }\n\n if (event.key === 'Escape' && open) {\n event.preventDefault();\n cancelAndClose();\n return;\n }\n\n if (event.key === 'Tab' && open) {\n commitIndex(resolvedActiveIndex);\n return;\n }\n\n if (\n event.key.length === 1 &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !/\\s/.test(event.key)\n ) {\n handleTypeahead(event, event.key);\n }\n };\n\n const handleCustomFocus = (event: FocusEvent<HTMLSelectElement>) => {\n onFocus?.(event);\n if (!event.defaultPrevented) triggerRef.current?.focus();\n };\n\n const handleCustomInvalid = (event: FormEvent<HTMLSelectElement>) => {\n onInvalid?.(event);\n event.preventDefault();\n triggerRef.current?.focus();\n };\n\n useEffect(() => {\n if (!isCustomSelect || !open || forceOpen) return undefined;\n const ownerDocument = rootRef.current?.ownerDocument;\n if (!ownerDocument) return undefined;\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n cancelAndClose();\n }\n };\n\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n return () => {\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n };\n }, [forceOpen, isCustomSelect, open, optionList, selectedValue]);\n\n useEffect(() => {\n if (!isCustomSelect || !open || resolvedActiveIndex < 0) return;\n optionRefs.current[resolvedActiveIndex]?.scrollIntoView?.({\n block: 'nearest',\n });\n }, [isCustomSelect, open, resolvedActiveIndex]);\n\n useEffect(() => {\n if (!isCustomSelect || isControlled) return undefined;\n const selectElement = selectRef.current;\n const form = selectElement?.form;\n const ownerWindow = selectElement?.ownerDocument.defaultView;\n if (!form || !ownerWindow) return undefined;\n\n const handleReset = () => {\n ownerWindow.setTimeout(() => {\n const resetValue = normalizeValue(defaultValue);\n setUncontrolledValue(resetValue);\n setActiveIndex(getInitialActiveIndex(optionList, resetValue));\n if (!forceOpen) setUncontrolledOpen(false);\n }, 0);\n };\n form.addEventListener('reset', handleReset);\n return () => form.removeEventListener('reset', handleReset);\n }, [defaultValue, forceOpen, isControlled, isCustomSelect, optionList]);\n\n useEffect(\n () => () => {\n if (typeaheadTimerRef.current) {\n typeaheadTimerRef.current.ownerWindow.clearTimeout(\n typeaheadTimerRef.current.timerId,\n );\n }\n },\n [],\n );\n\n if (!isCustomSelect) {\n return (\n <div\n {...componentAttributes}\n data-monkeys-component=\"select\"\n data-slot=\"root\"\n data-state={rootState}\n data-native=\"true\"\n className={cn(\n theme.slots.controlWrapper,\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n <select\n {...componentAttributes}\n {...selectProps}\n id={id}\n ref={ref}\n name={name}\n value={value}\n defaultValue={defaultValue}\n required={required}\n disabled={disabled}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-label={nativeAriaLabel}\n aria-labelledby={nativeAriaLabelledBy}\n aria-describedby={nativeAriaDescribedBy}\n aria-errormessage={nativeAriaErrorMessage}\n aria-required={nativeAriaRequired}\n data-monkeys-component=\"select\"\n data-slot=\"native\"\n data-state={rootState}\n data-native=\"true\"\n onBlur={handleNativeBlur}\n onFocus={onFocus}\n onInvalid={onInvalid}\n onChange={handleNativeChange}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlSelect,\n classNames?.control,\n )}\n >\n {hasRenderableNode(placeholder) ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {children}\n </select>\n <span className={theme.slots.selectChevron} />\n </div>\n );\n }\n\n return (\n <div\n {...componentAttributes}\n ref={rootRef}\n dir={layerDirection}\n data-monkeys-component=\"select\"\n data-slot=\"root\"\n data-state={rootState}\n data-native=\"false\"\n className={cn(\n theme.slots.controlWrapper,\n 'overflow-visible',\n open && 'z-50',\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n <button\n {...componentAttributes}\n ref={triggerRef}\n type=\"button\"\n id={triggerId}\n role=\"combobox\"\n disabled={disabled}\n dir={layerDirection}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-activedescendant={\n open && resolvedActiveIndex >= 0\n ? optionIds[resolvedActiveIndex]\n : undefined\n }\n aria-autocomplete=\"none\"\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-label={nativeAriaLabel}\n aria-labelledby={nativeAriaLabelledBy}\n aria-describedby={nativeAriaDescribedBy}\n aria-errormessage={nativeAriaErrorMessage}\n aria-required={nativeAriaRequired ?? (required || undefined)}\n data-monkeys-component=\"select\"\n data-slot=\"trigger\"\n data-state={rootState}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlSelect,\n 'flex items-center text-left',\n classNames?.control,\n )}\n onClick={() => {\n if (open) cancelAndClose();\n else openMenu();\n }}\n onBlur={(event) => {\n if (!rootRef.current?.contains(event.relatedTarget)) {\n cancelAndClose();\n fieldControl.notifyBlur(selectedValue);\n }\n }}\n onCompositionStart={() => {\n composingRef.current = true;\n }}\n onCompositionEnd={() => {\n composingRef.current = false;\n }}\n onKeyDown={handleKeyDown}\n >\n <span\n className={cn(\n 'min-w-0 flex-1 truncate',\n isPlaceholder && theme.slots.selectPlaceholder,\n isPlaceholder && classNames?.placeholder,\n )}\n >\n {visibleLabel}\n </span>\n </button>\n <span\n className={cn(\n theme.slots.selectChevron,\n open && 'rotate-[225deg]',\n )}\n />\n <select\n {...componentAttributes}\n {...selectProps}\n ref={setSelectRef}\n id={id}\n name={name}\n value={selectedValue}\n required={required}\n disabled={disabled}\n dir={layerDirection}\n aria-hidden=\"true\"\n tabIndex={-1}\n data-monkeys-component=\"select\"\n data-slot=\"native\"\n data-state={rootState}\n data-native=\"false\"\n className={theme.slots.selectNative}\n onBlur={onBlur}\n onFocus={handleCustomFocus}\n onInvalid={handleCustomInvalid}\n onChange={handleNativeChange}\n >\n {hasRenderableNode(placeholder) ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {optionList.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {getOptionText(option)}\n </option>\n ))}\n </select>\n {open ? (\n <div\n {...componentAttributes}\n id={listboxId}\n role=\"listbox\"\n dir={layerDirection}\n aria-labelledby={triggerId}\n data-monkeys-component=\"select\"\n data-slot=\"menu\"\n data-state=\"open\"\n className={cn(theme.slots.selectMenu, classNames?.menu)}\n style={theme.styles.selectMenu}\n >\n {optionList.map((option, index) => {\n const selected = option.value === selectedValue;\n const active = index === resolvedActiveIndex;\n const optionState = option.disabled\n ? 'disabled'\n : active\n ? 'active'\n : selected\n ? 'selected'\n : 'idle';\n return (\n <button\n {...componentAttributes}\n ref={(node) => {\n optionRefs.current[index] = node;\n }}\n key={option.value}\n id={optionIds[index]}\n type=\"button\"\n role=\"option\"\n tabIndex={-1}\n disabled={option.disabled}\n dir={layerDirection}\n aria-selected={selected}\n data-monkeys-component=\"select\"\n data-slot=\"option\"\n data-state={optionState}\n data-active={active || undefined}\n data-selected={selected || undefined}\n data-disabled={option.disabled || undefined}\n className={cn(\n theme.slots.selectOption,\n active && theme.slots.selectOptionActive,\n selected && theme.slots.selectOptionSelected,\n option.disabled && theme.slots.selectOptionDisabled,\n classNames?.option,\n )}\n style={{\n ...theme.styles.selectOption,\n ...(active ? theme.styles.selectOptionActive : undefined),\n ...(selected ? theme.styles.selectOptionSelected : undefined),\n }}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => commitIndex(index)}\n >\n <span className=\"min-w-0 flex-1 truncate\">\n {option.label}\n </span>\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n },\n);\n","import { useState, type KeyboardEvent } from 'react';\n\nimport type { BaseSegmentedControlProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction getInitialSegmentValue(\n options: BaseSegmentedControlProps['options'],\n defaultValue?: string,\n) {\n if (defaultValue && options?.some((option) => option.value === defaultValue)) {\n const defaultOption = options.find((option) => option.value === defaultValue);\n if (!defaultOption?.disabled) {\n return defaultValue;\n }\n }\n return options?.find((option) => !option.disabled)?.value ?? options?.[0]?.value;\n}\n\nexport function BaseSegmentedControl({\n options = [],\n value,\n defaultValue,\n appearance,\n className,\n classNames,\n style,\n onValueChange,\n ...controlProps\n}: BaseSegmentedControlProps) {\n const theme = resolveBaseAppearance(appearance);\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n getInitialSegmentValue(options, defaultValue),\n );\n const isControlled = value !== undefined;\n const selectedValue = isControlled ? value : uncontrolledValue;\n\n const handleSelect = (nextValue: string, disabled?: boolean) => {\n if (disabled) return;\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n onValueChange?.(nextValue);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n return;\n }\n\n const enabledOptions = options.filter((option) => !option.disabled);\n if (enabledOptions.length === 0) return;\n\n event.preventDefault();\n const currentIndex = Math.max(\n 0,\n enabledOptions.findIndex((option) => option.value === selectedValue),\n );\n const nextIndex =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? enabledOptions.length - 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? (currentIndex - 1 + enabledOptions.length) % enabledOptions.length\n : (currentIndex + 1) % enabledOptions.length;\n const nextOption = enabledOptions[nextIndex];\n const buttons = event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]');\n const target = Array.from(buttons).find(\n (button) => button.dataset.value === nextOption.value,\n );\n handleSelect(nextOption.value);\n target?.focus();\n };\n\n return (\n <div\n {...controlProps}\n role=\"radiogroup\"\n aria-orientation=\"horizontal\"\n className={cn(theme.slots.segmentedRoot, classNames?.root, className)}\n style={{\n ...theme.styles.segmentedRoot,\n ...style,\n }}\n onKeyDown={handleKeyDown}\n >\n {options.map((option) => {\n const selected = option.value === selectedValue;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n data-value={option.value}\n aria-checked={selected}\n tabIndex={selected ? 0 : -1}\n disabled={option.disabled}\n className={cn(\n theme.slots.segmentedItem,\n selected && theme.slots.segmentedItemActive,\n option.disabled && theme.slots.segmentedItemDisabled,\n classNames?.item,\n )}\n style={theme.styles.segmentedItem}\n onClick={() => handleSelect(option.value, option.disabled)}\n >\n {hasRenderableNode(option.icon) ? (\n <span className={cn('inline-flex h-4 w-4 shrink-0', classNames?.icon)}>\n {option.icon}\n </span>\n ) : null}\n <span className={cn('min-w-0 truncate', classNames?.label)}>\n {option.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type DragEvent,\n type ForwardedRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type MutableRefObject,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n type UIEvent as ReactUIEvent,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type {\n BaseAppearance,\n BaseResolvedTheme,\n BaseTableAlign,\n BaseTableBodyProps,\n BaseTableCaptionProps,\n BaseTableCellProps,\n BaseTableColumnDefinition,\n BaseTableColumnInteractionOptions,\n BaseTableContainerProps,\n BaseTableEmptyProps,\n BaseTableFooterProps,\n BaseTableHeaderProps,\n BaseTableHeadProps,\n BaseTableLayout,\n BaseTableLoadingProps,\n BaseTableProps,\n BaseTableRowProps,\n BaseTableSortDirection,\n BaseTableVerticalAlign,\n} from './types';\nimport { cn, hasRenderableNode } from './utils';\n\nconst DATA_TRANSFER_COLUMN_TYPE = 'application/x-monkeys-base-table-column';\nconst COLUMN_RESIZE_KEYBOARD_STEP = 8;\n\nfunction assignRef<T>(ref: ForwardedRef<T> | undefined, value: T | null) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nfunction assertBoolean(name: string, value: unknown) {\n if (value !== undefined && typeof value !== 'boolean') {\n throw new Error(`BaseTable ${name} must be a boolean.`);\n }\n}\n\nfunction assertEnum<T extends string>(\n name: string,\n value: unknown,\n values: readonly T[],\n) {\n if (value !== undefined && !values.includes(value as T)) {\n throw new Error(\n `BaseTable ${name} must be one of ${values.map((item) => `\"${item}\"`).join(', ')}.`,\n );\n }\n}\n\nfunction assertOptionalLabel(name: string, value: unknown) {\n if (\n value !== undefined &&\n (typeof value !== 'string' || value.trim().length === 0)\n ) {\n throw new Error(`BaseTable ${name} must be a non-empty string when provided.`);\n }\n}\n\nfunction assertOptionalFunction(name: string, value: unknown) {\n if (value !== undefined && typeof value !== 'function') {\n throw new Error(`BaseTable ${name} must be a function when provided.`);\n }\n}\n\nfunction validateCssSizeValue(\n value: unknown,\n name: string,\n options: { stringAllowed?: boolean } = {},\n) {\n if (value === undefined) return;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable ${name} must be a finite non-negative number${\n options.stringAllowed ? ' or a non-empty CSS size string' : ''\n }.`,\n );\n }\n return;\n }\n if (\n options.stringAllowed &&\n typeof value === 'string' &&\n value.trim().length > 0\n ) {\n return;\n }\n throw new Error(\n `BaseTable ${name} must be ${\n options.stringAllowed\n ? 'a finite non-negative number or a non-empty CSS size string'\n : 'a finite non-negative number'\n }.`,\n );\n}\n\nfunction validateColumns(columns: unknown) {\n if (columns === undefined) return undefined;\n if (!Array.isArray(columns)) {\n throw new Error('BaseTable columns must be an array when provided.');\n }\n\n const ids = new Set<string>();\n columns.forEach((column, index) => {\n if (!column || typeof column !== 'object' || Array.isArray(column)) {\n throw new Error(`BaseTable column at index ${index} must be an object.`);\n }\n const definition = column as BaseTableColumnDefinition;\n if (typeof definition.id !== 'string' || definition.id.trim().length === 0) {\n throw new Error(\n `BaseTable column id at index ${index} must be a non-empty string.`,\n );\n }\n const columnId = definition.id.trim();\n if (definition.id !== columnId) {\n throw new Error(\n `BaseTable column id \"${definition.id}\" must not contain surrounding whitespace.`,\n );\n }\n if (ids.has(columnId)) {\n throw new Error(`BaseTable columns contain duplicate id \"${columnId}\".`);\n }\n ids.add(columnId);\n validateCssSizeValue(definition.width, `column \"${columnId}\" width`, {\n stringAllowed: true,\n });\n validateCssSizeValue(definition.minWidth, `column \"${columnId}\" minWidth`, {\n stringAllowed: true,\n });\n validateCssSizeValue(definition.maxWidth, `column \"${columnId}\" maxWidth`, {\n stringAllowed: true,\n });\n if (\n typeof definition.minWidth === 'number' &&\n typeof definition.maxWidth === 'number' &&\n definition.minWidth > definition.maxWidth\n ) {\n throw new Error(\n `BaseTable column \"${columnId}\" minWidth cannot be greater than maxWidth.`,\n );\n }\n });\n return ids;\n}\n\nfunction validateColumnOrder(columnOrder: unknown, knownColumnIds?: Set<string>) {\n if (columnOrder === undefined) return;\n if (!Array.isArray(columnOrder)) {\n throw new Error('BaseTable columnOrder must be an array when provided.');\n }\n\n const ids = new Set<string>();\n columnOrder.forEach((value, index) => {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new Error(\n `BaseTable columnOrder entry at index ${index} must be a non-empty string.`,\n );\n }\n const columnId = value.trim();\n if (value !== columnId) {\n throw new Error(\n `BaseTable columnOrder entry \"${value}\" must not contain surrounding whitespace.`,\n );\n }\n if (ids.has(columnId)) {\n throw new Error(\n `BaseTable columnOrder contains duplicate id \"${columnId}\".`,\n );\n }\n if (knownColumnIds && !knownColumnIds.has(columnId)) {\n throw new Error(\n `BaseTable columnOrder contains unknown column id \"${columnId}\".`,\n );\n }\n ids.add(columnId);\n });\n\n if (knownColumnIds && ids.size !== knownColumnIds.size) {\n const missing = [...knownColumnIds].filter((columnId) => !ids.has(columnId));\n throw new Error(\n `BaseTable columnOrder must contain every configured column id; missing ${missing\n .map((columnId) => `\"${columnId}\"`)\n .join(', ')}.`,\n );\n }\n}\n\nfunction validateColumnSizes(columnSizes: unknown, knownColumnIds?: Set<string>) {\n if (columnSizes === undefined) return;\n if (\n !columnSizes ||\n typeof columnSizes !== 'object' ||\n Array.isArray(columnSizes) ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(columnSizes))\n ) {\n throw new Error(\n 'BaseTable columnSizes must be a plain record when provided.',\n );\n }\n\n Object.entries(columnSizes).forEach(([columnId, value]) => {\n const normalizedColumnId = columnId.trim();\n if (normalizedColumnId.length === 0) {\n throw new Error('BaseTable columnSizes keys must be non-empty strings.');\n }\n if (columnId !== normalizedColumnId) {\n throw new Error(\n `BaseTable columnSizes key \"${columnId}\" must not contain surrounding whitespace.`,\n );\n }\n if (knownColumnIds && !knownColumnIds.has(normalizedColumnId)) {\n throw new Error(\n `BaseTable columnSizes contains unknown column id \"${columnId}\".`,\n );\n }\n validateCssSizeValue(value, `columnSizes[\"${columnId}\"]`);\n });\n}\n\nfunction isRtl(element: HTMLElement) {\n const ownerWindow = element.ownerDocument.defaultView;\n if (ownerWindow) {\n return ownerWindow.getComputedStyle(element).direction === 'rtl';\n }\n return element.closest('[dir=\"rtl\"]') !== null;\n}\n\nfunction setPointerCaptureIfAvailable(target: HTMLElement, pointerId: number) {\n if (!target.setPointerCapture) return;\n try {\n target.setPointerCapture(pointerId);\n } catch (error) {\n const OwnerDOMException = target.ownerDocument.defaultView?.DOMException;\n if (\n OwnerDOMException &&\n error instanceof OwnerDOMException &&\n error.name === 'NotFoundError'\n ) {\n return;\n }\n throw error;\n }\n}\n\ntype BaseTableContextValue = BaseTableColumnInteractionOptions & {\n appearance?: BaseAppearance;\n theme: BaseResolvedTheme;\n layout: BaseTableLayout;\n columnTemplate?: string;\n bodyMaxHeight?: number | string;\n bodyClassName?: string;\n splitHeaderRef?: MutableRefObject<HTMLTableSectionElement | null>;\n splitFooterRef?: MutableRefObject<HTMLTableSectionElement | null>;\n draggingColumnId?: string;\n setDraggingColumnId: (columnId?: string) => void;\n};\n\nconst BaseTableContext = createContext<BaseTableContextValue | null>(null);\n\nfunction useBaseTableContext(appearance?: BaseAppearance) {\n const context = useContext(BaseTableContext);\n const providerAppearance = useMonkeysBaseAppearance(appearance);\n if (context) {\n const resolvedAppearance =\n appearance === undefined ? context.appearance : providerAppearance;\n return {\n ...context,\n theme:\n appearance === undefined\n ? context.theme\n : resolveBaseAppearance(resolvedAppearance),\n appearance: resolvedAppearance,\n };\n }\n\n const theme = resolveBaseAppearance(providerAppearance);\n return {\n appearance: providerAppearance,\n theme,\n layout: 'native',\n setDraggingColumnId: () => {},\n } satisfies BaseTableContextValue;\n}\n\nfunction hasSplitScrollTable(children: ReactNode): boolean {\n let found = false;\n\n Children.forEach(children, (child) => {\n if (found || !isValidElement(child)) return;\n\n const childProps = child.props as {\n children?: ReactNode;\n layout?: unknown;\n };\n\n if (childProps.layout === 'split-scroll') {\n found = true;\n return;\n }\n\n if (childProps.children) {\n found = hasSplitScrollTable(childProps.children);\n }\n });\n\n return found;\n}\n\nfunction toCssSize(value?: number | string) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction validateTableCssSize(\n value: number | string | undefined,\n property: string,\n) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable ${property} must be a finite non-negative number when numeric.`,\n );\n }\n return `${value}px`;\n }\n\n if (value.trim().length === 0) {\n throw new Error(`BaseTable ${property} must not be an empty CSS size.`);\n }\n\n return value;\n}\n\nfunction validateCssSize(\n value: number | string | undefined,\n columnId: string,\n property: string,\n) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n );\n }\n return `${value}px`;\n }\n\n if (value.trim().length === 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has an empty ${property} value.`,\n );\n }\n\n return value;\n}\n\nfunction validateNumericSize(\n value: number | string | undefined,\n columnId: string,\n property: string,\n) {\n if (value === undefined || typeof value !== 'number') return undefined;\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n );\n }\n return value;\n}\n\nfunction buildSplitColumnTemplate(\n columns: BaseTableColumnDefinition[] | undefined,\n columnSizes: BaseTableColumnInteractionOptions['columnSizes'],\n) {\n if (!columns?.length) {\n throw new Error(\n 'BaseTable layout=\"split-scroll\" requires at least one column definition.',\n );\n }\n\n const seenColumnIds = new Set<string>();\n const tracks = columns.map((column, index) => {\n const columnId = column.id.trim();\n if (!columnId) {\n throw new Error(\n `BaseTable split-scroll column at index ${index} requires a non-empty id.`,\n );\n }\n if (seenColumnIds.has(columnId)) {\n throw new Error(\n `BaseTable layout=\"split-scroll\" received duplicate column id \"${columnId}\".`,\n );\n }\n seenColumnIds.add(columnId);\n\n const columnSize = columnSizes?.[columnId];\n const numericMinWidth = validateNumericSize(column.minWidth, columnId, 'minWidth');\n const numericMaxWidth = validateNumericSize(column.maxWidth, columnId, 'maxWidth');\n if (\n numericMinWidth !== undefined &&\n numericMaxWidth !== undefined &&\n numericMaxWidth < numericMinWidth\n ) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has maxWidth smaller than minWidth.`,\n );\n }\n\n const minWidth = validateCssSize(column.minWidth, columnId, 'minWidth');\n const maxWidth = validateCssSize(column.maxWidth, columnId, 'maxWidth');\n const baseWidth =\n columnSize !== undefined\n ? clampWidth(columnSize, numericMinWidth, numericMaxWidth)\n : column.width;\n const width = validateCssSize(baseWidth, columnId, 'width');\n if (width) return width;\n\n return `minmax(${minWidth ?? '0px'}, ${maxWidth ?? '1fr'})`;\n });\n\n return `${tracks.join(' ')} var(--base-table-split-scrollbar-gutter)`;\n}\n\nfunction clampWidth(value: number, minWidth?: number, maxWidth?: number) {\n const min = minWidth ?? 48;\n const max = maxWidth ?? Number.POSITIVE_INFINITY;\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getNextColumnOrder(\n order: string[] | undefined,\n columnId: string,\n targetColumnId: string,\n) {\n if (!order || columnId === targetColumnId) return undefined;\n const fromIndex = order.indexOf(columnId);\n const toIndex = order.indexOf(targetColumnId);\n if (fromIndex < 0 || toIndex < 0) return undefined;\n\n const next = [...order];\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n return next;\n}\n\nfunction sortAriaValue(direction?: BaseTableSortDirection) {\n switch (direction) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return undefined;\n }\n}\n\nfunction getSplitHeadJustifyContent(align: BaseTableAlign) {\n switch (align) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n}\n\nfunction getSplitHeadAlignItems(verticalAlign: BaseTableVerticalAlign) {\n switch (verticalAlign) {\n case 'top':\n return 'flex-start';\n case 'bottom':\n return 'flex-end';\n default:\n return 'center';\n }\n}\n\nfunction SortIndicator({\n direction,\n className,\n}: {\n direction?: BaseTableSortDirection;\n className?: string;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n className,\n direction === 'desc' && 'rotate-180',\n (!direction || direction === 'none') && 'opacity-45',\n )}\n >\n ▲\n </span>\n );\n}\n\nfunction DragHandleIcon() {\n return (\n <span aria-hidden=\"true\" className=\"grid gap-0.5\">\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n </span>\n );\n}\n\nexport const BaseTableContainer = forwardRef<\n HTMLDivElement,\n BaseTableContainerProps\n>(function BaseTableContainer(\n {\n appearance,\n attachedFooter = false,\n children,\n className,\n classNames,\n style,\n ...containerProps\n },\n ref,\n) {\n assertBoolean('attachedFooter', attachedFooter);\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const containsSplitScrollTable = hasSplitScrollTable(children);\n const splitScrollContainerStyle = containsSplitScrollTable\n ? ({\n overflow: 'hidden',\n scrollbarGutter: 'auto',\n } as CSSProperties)\n : undefined;\n\n return (\n <div\n {...componentAttributes}\n {...containerProps}\n ref={ref}\n data-monkeys-component=\"table-container\"\n data-slot=\"container\"\n data-base-table-container=\"\"\n data-attached-footer={attachedFooter ? '' : undefined}\n className={cn(\n theme.slots.tableContainer,\n attachedFooter && theme.slots.tableContainerFooterAttached,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableContainer,\n ...(attachedFooter ? theme.styles.tableContainerFooterAttached : undefined),\n ...splitScrollContainerStyle,\n ...style,\n }}\n >\n {children}\n </div>\n );\n});\n\nexport const BaseTable = forwardRef<HTMLTableElement, BaseTableProps>(\n function BaseTable(\n {\n appearance,\n className,\n classNames,\n style,\n layout = 'native',\n columns,\n bodyMaxHeight,\n bodyClassName,\n columnOrder,\n columnSizes,\n columnDragEnabled = false,\n columnResizeEnabled = false,\n onColumnOrderChange,\n onColumnSizeChange,\n ...tableProps\n },\n ref,\n ) {\n assertEnum('layout', layout, ['native', 'split-scroll'] as const);\n assertBoolean('columnDragEnabled', columnDragEnabled);\n assertBoolean('columnResizeEnabled', columnResizeEnabled);\n assertOptionalFunction('onColumnOrderChange', onColumnOrderChange);\n assertOptionalFunction('onColumnSizeChange', onColumnSizeChange);\n validateCssSizeValue(bodyMaxHeight, 'bodyMaxHeight', { stringAllowed: true });\n const knownColumnIds = validateColumns(columns);\n validateColumnOrder(columnOrder, knownColumnIds);\n validateColumnSizes(columnSizes, knownColumnIds);\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const [draggingColumnId, setDraggingColumnId] = useState<string | undefined>();\n const splitHeaderRef = useRef<HTMLTableSectionElement | null>(null);\n const splitFooterRef = useRef<HTMLTableSectionElement | null>(null);\n const isSplitScroll = layout === 'split-scroll';\n const columnTemplate = isSplitScroll\n ? buildSplitColumnTemplate(columns, columnSizes)\n : undefined;\n const contextValue: BaseTableContextValue = {\n appearance: resolvedAppearance,\n theme,\n layout,\n columnTemplate,\n bodyMaxHeight,\n bodyClassName,\n splitHeaderRef,\n splitFooterRef,\n columnOrder,\n columnSizes,\n columnDragEnabled,\n columnResizeEnabled,\n onColumnOrderChange,\n onColumnSizeChange,\n draggingColumnId,\n setDraggingColumnId,\n };\n\n return (\n <BaseTableContext.Provider value={contextValue}>\n <table\n {...componentAttributes}\n {...tableProps}\n ref={ref}\n data-monkeys-component=\"table\"\n data-slot=\"root\"\n data-base-table-layout={layout}\n className={cn(\n theme.slots.tableRoot,\n isSplitScroll && theme.slots.tableSplitRoot,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.table,\n ...(isSplitScroll ? theme.styles.tableSplitRoot : undefined),\n ...(columnTemplate\n ? ({\n '--base-table-column-template': columnTemplate,\n } as CSSProperties)\n : undefined),\n ...style,\n }}\n />\n </BaseTableContext.Provider>\n );\n});\n\nexport const BaseTableHeader = forwardRef<\n HTMLTableSectionElement,\n BaseTableHeaderProps\n>(function BaseTableHeader(\n { appearance, className, classNames, style, ...headerProps },\n ref,\n) {\n const { layout, splitHeaderRef, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const setHeaderRef = (node: HTMLTableSectionElement | null) => {\n if (splitHeaderRef) splitHeaderRef.current = isSplitScroll ? node : null;\n assignRef(ref, node);\n };\n\n return (\n <thead\n {...headerProps}\n ref={setHeaderRef}\n data-slot=\"header\"\n className={cn(\n theme.slots.tableHeader,\n isSplitScroll && theme.slots.tableSplitHeader,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableHeader,\n ...(isSplitScroll ? theme.styles.tableSplitHeader : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableBody = forwardRef<\n HTMLTableSectionElement,\n BaseTableBodyProps\n>(function BaseTableBody(\n { appearance, className, classNames, onScroll, style, ...bodyProps },\n ref,\n) {\n const {\n bodyClassName,\n bodyMaxHeight,\n layout,\n splitFooterRef,\n splitHeaderRef,\n theme,\n } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const handleScroll = isSplitScroll\n ? (event: ReactUIEvent<HTMLTableSectionElement>) => {\n const scrollLeft = event.currentTarget.scrollLeft;\n\n if (splitHeaderRef?.current) {\n splitHeaderRef.current.scrollLeft = scrollLeft;\n }\n if (splitFooterRef?.current) {\n splitFooterRef.current.scrollLeft = scrollLeft;\n }\n onScroll?.(event);\n }\n : onScroll;\n\n return (\n <tbody\n {...bodyProps}\n ref={ref}\n data-slot=\"body\"\n onScroll={handleScroll}\n className={cn(\n theme.slots.tableBody,\n isSplitScroll && theme.slots.tableSplitBody,\n isSplitScroll && bodyClassName,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableBody,\n ...(isSplitScroll ? theme.styles.tableSplitBody : undefined),\n ...(isSplitScroll && bodyMaxHeight !== undefined\n ? { maxHeight: validateTableCssSize(bodyMaxHeight, 'bodyMaxHeight') }\n : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableFooter = forwardRef<\n HTMLTableSectionElement,\n BaseTableFooterProps\n>(function BaseTableFooter(\n { appearance, className, classNames, style, ...footerProps },\n ref,\n) {\n const { layout, splitFooterRef, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const setFooterRef = (node: HTMLTableSectionElement | null) => {\n if (splitFooterRef) splitFooterRef.current = isSplitScroll ? node : null;\n assignRef(ref, node);\n };\n\n return (\n <tfoot\n {...footerProps}\n ref={setFooterRef}\n data-slot=\"footer\"\n className={cn(\n theme.slots.tableFooter,\n isSplitScroll && theme.slots.tableSplitFooter,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableFooter,\n ...(isSplitScroll ? theme.styles.tableSplitFooter : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableRow = forwardRef<HTMLTableRowElement, BaseTableRowProps>(\n function BaseTableRow(\n {\n interactive,\n selected,\n disabled,\n appearance,\n className,\n classNames,\n style,\n ...rowProps\n },\n ref,\n ) {\n assertBoolean('interactive', interactive);\n assertBoolean('selected', selected);\n assertBoolean('disabled', disabled);\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <tr\n {...rowProps}\n ref={ref}\n data-slot=\"row\"\n aria-disabled={disabled || undefined}\n data-state={selected ? 'selected' : undefined}\n className={cn(\n theme.slots.tableRow,\n isSplitScroll && theme.slots.tableSplitRow,\n interactive && !disabled && theme.slots.tableRowInteractive,\n selected && theme.slots.tableRowSelected,\n disabled && theme.slots.tableRowDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableRow,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableHead = forwardRef<HTMLTableCellElement, BaseTableHeadProps>(function BaseTableHead({\n columnId,\n align,\n verticalAlign,\n icon,\n label,\n description,\n meta,\n actions,\n trailing,\n sortable,\n sortDirection = 'none',\n sortLabel,\n onSort,\n draggable,\n dragLabel,\n resizable,\n resizeLabel,\n width,\n minWidth,\n maxWidth,\n appearance,\n className,\n classNames,\n style,\n children,\n onDragOver,\n onDrop,\n ...headProps\n}, forwardedRef) {\n assertEnum('head align', align, ['left', 'center', 'right'] as const);\n assertEnum('head verticalAlign', verticalAlign, [\n 'top',\n 'middle',\n 'bottom',\n ] as const);\n assertEnum('head sortDirection', sortDirection, [\n 'asc',\n 'desc',\n 'none',\n ] as const);\n assertBoolean('head sortable', sortable);\n assertBoolean('head draggable', draggable);\n assertBoolean('head resizable', resizable);\n assertOptionalFunction('head onSort', onSort);\n assertOptionalLabel('head sortLabel', sortLabel);\n assertOptionalLabel('head dragLabel', dragLabel);\n assertOptionalLabel('head resizeLabel', resizeLabel);\n if (\n columnId !== undefined &&\n (typeof columnId !== 'string' || columnId.trim().length === 0)\n ) {\n throw new Error(\n 'BaseTable head columnId must be a non-empty string when provided.',\n );\n }\n validateCssSizeValue(width, 'head width', { stringAllowed: true });\n validateCssSizeValue(minWidth, 'head minWidth');\n validateCssSizeValue(maxWidth, 'head maxWidth');\n if (\n minWidth !== undefined &&\n maxWidth !== undefined &&\n minWidth > maxWidth\n ) {\n throw new Error('BaseTable head minWidth cannot be greater than maxWidth.');\n }\n const tableContext = useBaseTableContext(appearance);\n const { theme } = tableContext;\n const messages = useMonkeysLocaleMessages().table;\n const isSplitScroll = tableContext.layout === 'split-scroll';\n const resolvedAlign = align ?? (isSplitScroll ? 'center' : 'left');\n const resolvedVerticalAlign = verticalAlign ?? 'middle';\n const headRef = useRef<HTMLTableCellElement | null>(null);\n const resizeCleanupRef = useRef<() => void>(() => {});\n const [measuredWidth, setMeasuredWidth] = useState<number>();\n const setHeadRef = (node: HTMLTableCellElement | null) => {\n headRef.current = node;\n assignRef(forwardedRef, node);\n };\n const controlledWidth =\n columnId && tableContext.columnSizes?.[columnId] !== undefined\n ? tableContext.columnSizes[columnId]\n : width;\n const canDrag = Boolean(\n columnId &&\n draggable !== false &&\n (draggable || tableContext.columnDragEnabled) &&\n tableContext.columnOrder &&\n tableContext.onColumnOrderChange,\n );\n const canResize = Boolean(\n columnId &&\n resizable !== false &&\n (resizable || tableContext.columnResizeEnabled) &&\n tableContext.onColumnSizeChange,\n );\n if (\n canResize &&\n maxWidth !== undefined &&\n maxWidth < (minWidth ?? 48)\n ) {\n throw new Error(\n 'BaseTable resizable head maxWidth cannot be smaller than its effective minWidth.',\n );\n }\n const interactiveSort = Boolean(sortable || onSort);\n const ariaSort = sortAriaValue(sortDirection);\n\n const content = hasRenderableNode(label) ? label : children;\n const hasVisibleSortName =\n hasRenderableNode(content) || hasRenderableNode(description);\n const sortAccessibleName =\n sortLabel ??\n (!hasVisibleSortName\n ? messages.sortColumn({ columnId: columnId?.trim() || undefined })\n : undefined);\n const usesRichHeader =\n canDrag ||\n hasRenderableNode(icon) ||\n hasRenderableNode(label) ||\n hasRenderableNode(description) ||\n hasRenderableNode(meta) ||\n hasRenderableNode(actions) ||\n hasRenderableNode(trailing) ||\n interactiveSort;\n const renderedContent =\n usesRichHeader ? (\n <div className={cn(theme.slots.tableHeadContent, classNames?.content)}>\n <div className={cn(theme.slots.tableHeadMain, classNames?.main)}>\n {canDrag ? (\n <button\n type=\"button\"\n draggable\n title={dragLabel}\n aria-label={\n dragLabel ?? messages.dragColumn({ columnId: columnId as string })\n }\n className={cn(theme.slots.tableHeadDragHandle, classNames?.dragHandle)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => {\n if (\n !columnId ||\n !tableContext.columnOrder ||\n (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight')\n ) {\n return;\n }\n const currentIndex = tableContext.columnOrder.indexOf(columnId);\n if (currentIndex < 0) return;\n const rtl = isRtl(event.currentTarget);\n const physicalDelta = event.key === 'ArrowLeft' ? -1 : 1;\n const nextIndex = currentIndex + (rtl ? -physicalDelta : physicalDelta);\n const targetColumnId = tableContext.columnOrder[nextIndex];\n if (!targetColumnId) return;\n const nextOrder = getNextColumnOrder(\n tableContext.columnOrder,\n columnId,\n targetColumnId,\n );\n if (!nextOrder) return;\n event.preventDefault();\n tableContext.onColumnOrderChange?.(nextOrder, {\n columnId,\n targetColumnId,\n });\n }}\n onDragStart={(event) => {\n event.stopPropagation();\n tableContext.setDraggingColumnId(columnId);\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData(DATA_TRANSFER_COLUMN_TYPE, columnId as string);\n }}\n onDragEnd={(event) => {\n event.stopPropagation();\n tableContext.setDraggingColumnId(undefined);\n }}\n >\n <DragHandleIcon />\n </button>\n ) : null}\n {icon ? (\n <span className={cn(theme.slots.tableHeadIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n {interactiveSort ? (\n <button\n type=\"button\"\n disabled={!onSort}\n title={sortLabel}\n aria-label={sortAccessibleName}\n className={cn(theme.slots.tableHeadSortButton, classNames?.sortButton)}\n onClick={(event) => {\n event.stopPropagation();\n onSort?.(columnId);\n }}\n >\n <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n {hasRenderableNode(content) ? (\n <span className={cn(theme.slots.tableHeadLabel, classNames?.label)}>\n {content}\n </span>\n ) : null}\n {hasRenderableNode(description) ? (\n <span\n className={cn(\n theme.slots.tableHeadDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n <SortIndicator\n direction={sortDirection}\n className={cn(theme.slots.tableHeadSortIcon, classNames?.sortIcon)}\n />\n </button>\n ) : (\n <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n {hasRenderableNode(content) ? (\n <span className={cn(theme.slots.tableHeadLabel, classNames?.label)}>\n {content}\n </span>\n ) : null}\n {hasRenderableNode(description) ? (\n <span\n className={cn(\n theme.slots.tableHeadDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n )}\n </div>\n {hasRenderableNode(meta) || hasRenderableNode(actions) || hasRenderableNode(trailing) ? (\n <div className={cn(theme.slots.tableHeadActions, classNames?.actions)}>\n {hasRenderableNode(meta) ? (\n <span className={cn(theme.slots.tableHeadMeta, classNames?.meta)}>\n {meta}\n </span>\n ) : null}\n {actions}\n {trailing}\n </div>\n ) : null}\n </div>\n ) : (\n children\n );\n\n const handleDragOver = (event: DragEvent<HTMLTableCellElement>) => {\n onDragOver?.(event);\n if (!canDrag || !tableContext.draggingColumnId || tableContext.draggingColumnId === columnId) {\n return;\n }\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n };\n\n const handleDrop = (event: DragEvent<HTMLTableCellElement>) => {\n onDrop?.(event);\n if (!canDrag || !columnId) return;\n const sourceColumnId =\n tableContext.draggingColumnId ||\n event.dataTransfer.getData(DATA_TRANSFER_COLUMN_TYPE);\n if (!sourceColumnId || sourceColumnId === columnId) return;\n\n const nextOrder = getNextColumnOrder(\n tableContext.columnOrder,\n sourceColumnId,\n columnId,\n );\n if (nextOrder) {\n event.preventDefault();\n tableContext.onColumnOrderChange?.(nextOrder, {\n columnId: sourceColumnId,\n targetColumnId: columnId,\n });\n }\n tableContext.setDraggingColumnId(undefined);\n };\n\n const handleResizePointerDown = (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (\n !canResize ||\n !columnId ||\n !tableContext.onColumnSizeChange ||\n (event.button !== 0 && event.pointerType !== 'touch')\n ) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n resizeCleanupRef.current();\n\n const startX = event.clientX;\n const currentWidth =\n currentResizeWidth ?? headRef.current?.offsetWidth ?? minWidth ?? 48;\n const previousWidth = clampWidth(currentWidth, minWidth, maxWidth);\n const pointerId = event.pointerId;\n const target = event.currentTarget;\n const ownerDocument = target.ownerDocument;\n const rtl = isRtl(target);\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n if (moveEvent.pointerId !== pointerId) return;\n const nextWidth = clampWidth(\n previousWidth + (rtl ? startX - moveEvent.clientX : moveEvent.clientX - startX),\n minWidth,\n maxWidth,\n );\n tableContext.onColumnSizeChange?.(columnId, nextWidth, {\n columnId,\n previousWidth,\n minWidth,\n maxWidth,\n });\n };\n\n const handleStop = (nextEvent: PointerEvent) => {\n if (nextEvent.pointerId !== pointerId) return;\n resizeCleanupRef.current();\n };\n const handleLostCapture = (nextEvent: PointerEvent) => {\n if (nextEvent.pointerId !== pointerId) return;\n resizeCleanupRef.current();\n };\n\n resizeCleanupRef.current = () => {\n ownerDocument.removeEventListener('pointermove', handlePointerMove);\n ownerDocument.removeEventListener('pointerup', handleStop);\n ownerDocument.removeEventListener('pointercancel', handleStop);\n target.removeEventListener('lostpointercapture', handleLostCapture);\n if (target.hasPointerCapture?.(pointerId)) {\n target.releasePointerCapture?.(pointerId);\n }\n resizeCleanupRef.current = () => {};\n };\n setPointerCaptureIfAvailable(target, pointerId);\n ownerDocument.addEventListener('pointermove', handlePointerMove);\n ownerDocument.addEventListener('pointerup', handleStop);\n ownerDocument.addEventListener('pointercancel', handleStop);\n target.addEventListener('lostpointercapture', handleLostCapture);\n };\n\n const currentResizeWidth =\n typeof controlledWidth === 'number'\n ? clampWidth(controlledWidth, minWidth, maxWidth)\n : measuredWidth;\n const announcedResizeWidth =\n currentResizeWidth ?? clampWidth(minWidth ?? 48, minWidth, maxWidth);\n\n const handleResizeKeyDown = (\n event: ReactKeyboardEvent<HTMLButtonElement>,\n ) => {\n if (!canResize || !columnId || !tableContext.onColumnSizeChange) return;\n const rtl = isRtl(event.currentTarget);\n const previousWidth =\n currentResizeWidth ??\n clampWidth(\n headRef.current?.offsetWidth || minWidth || 48,\n minWidth,\n maxWidth,\n );\n let nextWidth: number | undefined;\n if (event.key === 'ArrowLeft') {\n nextWidth = previousWidth + (rtl ? COLUMN_RESIZE_KEYBOARD_STEP : -COLUMN_RESIZE_KEYBOARD_STEP);\n }\n if (event.key === 'ArrowRight') {\n nextWidth = previousWidth + (rtl ? -COLUMN_RESIZE_KEYBOARD_STEP : COLUMN_RESIZE_KEYBOARD_STEP);\n }\n if (event.key === 'Home' && minWidth !== undefined) nextWidth = minWidth;\n if (event.key === 'End' && maxWidth !== undefined) nextWidth = maxWidth;\n if (nextWidth === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n tableContext.onColumnSizeChange(\n columnId,\n clampWidth(nextWidth, minWidth, maxWidth),\n {\n columnId,\n previousWidth,\n minWidth,\n maxWidth,\n },\n );\n };\n\n useEffect(() => {\n if (typeof controlledWidth === 'number') {\n setMeasuredWidth(undefined);\n return;\n }\n const measured = headRef.current?.getBoundingClientRect().width;\n if (measured && Number.isFinite(measured)) {\n const nextWidth = clampWidth(measured, minWidth, maxWidth);\n setMeasuredWidth((current) =>\n current === nextWidth ? current : nextWidth,\n );\n }\n }, [controlledWidth, minWidth, maxWidth, canResize]);\n\n useEffect(() => {\n if (!canResize) resizeCleanupRef.current();\n return () => resizeCleanupRef.current();\n }, [canResize, columnId, tableContext.onColumnSizeChange]);\n\n return (\n <th\n {...headProps}\n ref={setHeadRef}\n data-slot=\"head\"\n scope={headProps.scope ?? 'col'}\n aria-sort={ariaSort}\n className={cn(\n theme.slots.tableHead,\n isSplitScroll && theme.slots.tableSplitHead,\n resolvedAlign === 'center' && theme.slots.tableCellAlignCenter,\n resolvedAlign === 'right' && theme.slots.tableCellAlignRight,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableHead,\n ...(isSplitScroll ? theme.styles.tableSplitHead : undefined),\n width: isSplitScroll ? undefined : toCssSize(controlledWidth),\n minWidth: isSplitScroll ? undefined : toCssSize(minWidth),\n maxWidth: isSplitScroll ? undefined : toCssSize(maxWidth),\n ...(isSplitScroll\n ? {\n alignItems: getSplitHeadAlignItems(resolvedVerticalAlign),\n justifyContent: getSplitHeadJustifyContent(resolvedAlign),\n textAlign: resolvedAlign,\n }\n : verticalAlign\n ? { verticalAlign }\n : undefined),\n ...style,\n }}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {renderedContent}\n {canResize ? (\n <button\n type=\"button\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-valuenow={announcedResizeWidth}\n aria-valuemin={minWidth ?? 48}\n aria-valuemax={maxWidth}\n aria-valuetext={`${announcedResizeWidth}px`}\n title={resizeLabel}\n aria-label={\n resizeLabel ?? messages.resizeColumn({ columnId: columnId as string })\n }\n className={cn(theme.slots.tableHeadResizeHandle, classNames?.resizeHandle)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={handleResizeKeyDown}\n onPointerDown={handleResizePointerDown}\n />\n ) : null}\n </th>\n );\n});\n\nexport const BaseTableCell = forwardRef<HTMLTableCellElement, BaseTableCellProps>(\n function BaseTableCell(\n {\n align = 'left',\n appearance,\n className,\n classNames,\n style,\n ...cellProps\n },\n ref,\n ) {\n assertEnum('cell align', align, ['left', 'center', 'right'] as const);\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <td\n {...cellProps}\n ref={ref}\n data-slot=\"cell\"\n className={cn(\n theme.slots.tableCell,\n isSplitScroll && theme.slots.tableSplitCell,\n align === 'center' && theme.slots.tableCellAlignCenter,\n align === 'right' && theme.slots.tableCellAlignRight,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableCell,\n ...(isSplitScroll ? theme.styles.tableSplitCell : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableCaption = forwardRef<\n HTMLTableCaptionElement,\n BaseTableCaptionProps\n>(function BaseTableCaption(\n { appearance, className, classNames, style, ...captionProps },\n ref,\n) {\n const { theme } = useBaseTableContext(appearance);\n\n return (\n <caption\n {...captionProps}\n ref={ref}\n data-slot=\"caption\"\n className={cn(theme.slots.tableCaption, classNames?.root, className)}\n style={{\n ...theme.styles.tableCaption,\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableEmpty = forwardRef<HTMLTableRowElement, BaseTableEmptyProps>(\n function BaseTableEmpty(\n {\n colSpan,\n icon,\n title,\n description,\n actions,\n children,\n appearance,\n className,\n classNames,\n style,\n ...emptyProps\n },\n ref,\n ) {\n if (!Number.isSafeInteger(colSpan) || colSpan < 1) {\n throw new Error('BaseTable empty colSpan must be a positive safe integer.');\n }\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const hasStructuredContent =\n hasRenderableNode(icon) ||\n hasRenderableNode(title) ||\n hasRenderableNode(description) ||\n hasRenderableNode(actions);\n\n return (\n <tr\n {...emptyProps}\n ref={ref}\n data-slot=\"empty-row\"\n className={cn(\n theme.slots.tableEmptyRow,\n isSplitScroll && theme.slots.tableSplitRow,\n classNames?.row,\n className,\n )}\n style={{\n ...theme.styles.tableEmpty,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n >\n <td\n colSpan={colSpan}\n data-slot=\"empty-cell\"\n className={cn(\n theme.slots.tableEmptyCell,\n isSplitScroll && theme.slots.tableSplitCell,\n classNames?.cell,\n )}\n style={isSplitScroll ? { gridColumn: '1 / -1' } : undefined}\n >\n {hasStructuredContent ? (\n <div className={cn(theme.slots.tableEmptyContent, classNames?.content)}>\n {hasRenderableNode(icon) ? (\n <div className={cn(theme.slots.tableEmptyIcon, classNames?.icon)}>\n {icon}\n </div>\n ) : null}\n {hasRenderableNode(title) ? (\n <div className={cn(theme.slots.tableEmptyTitle, classNames?.title)}>\n {title}\n </div>\n ) : null}\n {hasRenderableNode(description) ? (\n <div\n className={cn(\n theme.slots.tableEmptyDescription,\n classNames?.description,\n )}\n >\n {description}\n </div>\n ) : null}\n {hasRenderableNode(actions) ? (\n <div className={cn(theme.slots.tableEmptyActions, classNames?.actions)}>\n {actions}\n </div>\n ) : null}\n </div>\n ) : (\n children\n )}\n </td>\n </tr>\n );\n});\n\nexport function BaseTableLoading({\n rows = 3,\n columns,\n columnWidths = [],\n animated = true,\n rowLabel,\n appearance,\n className,\n classNames,\n style,\n}: BaseTableLoadingProps) {\n if (!Number.isSafeInteger(rows) || rows < 0) {\n throw new Error(\n 'BaseTable loading rows must be a non-negative safe integer.',\n );\n }\n if (!Number.isSafeInteger(columns) || columns < 1) {\n throw new Error(\n 'BaseTable loading columns must be a positive safe integer.',\n );\n }\n if (!Array.isArray(columnWidths)) {\n throw new Error('BaseTable loading columnWidths must be an array.');\n }\n columnWidths.forEach((value, index) =>\n validateCssSizeValue(value, `loading columnWidths[${index}]`, {\n stringAllowed: true,\n }),\n );\n assertBoolean('loading animated', animated);\n assertOptionalLabel('loading rowLabel', rowLabel);\n const { layout, theme } = useBaseTableContext(appearance);\n const messages = useMonkeysLocaleMessages().table;\n const resolvedRowLabel = rowLabel ?? messages.loadingRow;\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr\n key={rowIndex}\n data-slot=\"loading-row\"\n aria-label={`${resolvedRowLabel} ${rowIndex + 1}`}\n aria-busy=\"true\"\n className={cn(\n theme.slots.tableLoadingRow,\n isSplitScroll && theme.slots.tableSplitRow,\n classNames?.row,\n className,\n )}\n style={{\n ...theme.styles.tableLoading,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n >\n {Array.from({ length: columns }).map((__, columnIndex) => (\n <td\n key={columnIndex}\n data-slot=\"loading-cell\"\n className={cn(\n theme.slots.tableLoadingCell,\n isSplitScroll && theme.slots.tableSplitCell,\n classNames?.cell,\n )}\n >\n <div\n aria-hidden=\"true\"\n data-slot=\"loading-skeleton\"\n className={cn(\n theme.slots.tableLoadingSkeleton,\n animated && 'animate-pulse motion-reduce:animate-none',\n classNames?.skeleton,\n )}\n style={{\n width: toCssSize(columnWidths[columnIndex]),\n }}\n />\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n BaseButton,\n BaseCheckbox,\n BaseField,\n BaseInput,\n BaseSelect,\n BaseSegmentedControl,\n} from '../base';\nimport { cn } from '../base/utils';\nimport type { WorkbenchGalleryColumn } from './workbenchGalleryUtils';\n\nexport interface WorkbenchGallerySettingsValue {\n visibleColumnKeys?: string[];\n galleryFieldKey?: string;\n galleryLayout?: 'fixed' | 'masonry' | string;\n galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n galleryGridColumns?: number | 'auto' | string;\n galleryBentoColumns?: 1 | 2 | 3 | number;\n galleryDetailVisibility?: 'all' | 'limit' | string;\n galleryDetailLimit?: number | string;\n [key: string]: any;\n}\n\nexport interface WorkbenchGallerySettingsOption<Value extends string | number = string> {\n value: Value;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface WorkbenchGallerySettingsLabels {\n settingsButton?: ReactNode;\n title?: ReactNode;\n visibleColumns?: ReactNode;\n coverField?: ReactNode;\n autoDetect?: ReactNode;\n cardDensity?: ReactNode;\n cardColumns?: ReactNode;\n detailColumns?: ReactNode;\n fieldVisibility?: ReactNode;\n fieldLimit?: ReactNode;\n fieldLimitHint?: ReactNode;\n layout?: ReactNode;\n compact?: ReactNode;\n comfortable?: ReactNode;\n detailed?: ReactNode;\n autoColumns?: ReactNode;\n columns?: (count: number) => ReactNode;\n bentoColumns?: (count: number) => ReactNode;\n topLimit?: ReactNode;\n allFields?: ReactNode;\n adaptiveGrid?: ReactNode;\n masonry?: ReactNode;\n}\n\nexport interface WorkbenchGallerySettingsPanelClassNames {\n root?: string;\n section?: string;\n sectionHeader?: string;\n columnList?: string;\n columnItem?: string;\n control?: string;\n}\n\nexport interface WorkbenchGallerySettingsPanelProps {\n columns?: WorkbenchGalleryColumn[];\n galleryFieldOptions?: WorkbenchGalleryColumn[];\n value?: WorkbenchGallerySettingsValue;\n onValueChange?: (\n nextValue: WorkbenchGallerySettingsValue,\n patch: Partial<WorkbenchGallerySettingsValue>,\n ) => void;\n labels?: WorkbenchGallerySettingsLabels;\n densityOptions?: Array<WorkbenchGallerySettingsOption>;\n gridColumnOptions?: Array<WorkbenchGallerySettingsOption<number | 'auto'>>;\n bentoColumnOptions?: Array<WorkbenchGallerySettingsOption<number>>;\n detailVisibilityOptions?: Array<WorkbenchGallerySettingsOption>;\n layoutOptions?: Array<WorkbenchGallerySettingsOption>;\n getColumnLabel?: (column: WorkbenchGalleryColumn) => ReactNode;\n getColumnDescription?: (column: WorkbenchGalleryColumn) => ReactNode;\n showColumnVisibility?: boolean;\n showGalleryControls?: boolean;\n showLayoutControl?: boolean;\n showGridColumns?: boolean;\n showDetailColumns?: boolean;\n allowEmptyVisibleColumns?: boolean;\n className?: string;\n classNames?: WorkbenchGallerySettingsPanelClassNames;\n}\n\nexport interface WorkbenchGallerySettingsButtonClassNames {\n root?: string;\n trigger?: string;\n popover?: string;\n header?: string;\n panel?: string;\n}\n\nexport interface WorkbenchGallerySettingsButtonProps extends WorkbenchGallerySettingsPanelProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n triggerIcon?: ReactNode;\n triggerLabel?: ReactNode;\n triggerTitle?: string;\n align?: 'start' | 'end';\n popoverWidth?: number;\n panelHeader?: ReactNode;\n panelBefore?: ReactNode;\n panelAfter?: ReactNode;\n panelClassName?: string;\n buttonClassName?: string;\n popoverClassName?: string;\n buttonClassNames?: WorkbenchGallerySettingsButtonClassNames;\n}\n\nconst defaultLabels: Required<WorkbenchGallerySettingsLabels> = {\n settingsButton: 'Gallery settings',\n title: 'Gallery settings',\n visibleColumns: 'Visible fields',\n coverField: 'Cover field',\n autoDetect: 'Auto',\n cardDensity: 'Card density',\n cardColumns: 'Cards per row',\n detailColumns: 'Detail columns',\n fieldVisibility: 'Field visibility',\n fieldLimit: 'Field limit',\n fieldLimitHint: 'Uses current field order',\n layout: 'Gallery layout',\n compact: 'Compact',\n comfortable: 'Standard',\n detailed: 'Detailed',\n autoColumns: 'Auto',\n columns: (count) => `${count}`,\n bentoColumns: (count) => `${count}`,\n topLimit: 'First fields',\n allFields: 'All fields',\n adaptiveGrid: 'Grid',\n masonry: 'Masonry',\n};\n\nfunction normalizeColumnKey(column: WorkbenchGalleryColumn | undefined) {\n return String(column?.key || '');\n}\n\nfunction getDefaultColumnLabel(column: WorkbenchGalleryColumn) {\n return column.label ?? column.key;\n}\n\nfunction getDefaultVisibleColumnKeys(columns: WorkbenchGalleryColumn[]) {\n return columns\n .filter((column) => normalizeColumnKey(column) && column.hidden !== true)\n .map((column) => normalizeColumnKey(column));\n}\n\nfunction getResolvedVisibleColumnKeys({\n columns,\n visibleColumnKeys,\n allowEmptyVisibleColumns,\n}: {\n columns: WorkbenchGalleryColumn[];\n visibleColumnKeys?: string[];\n allowEmptyVisibleColumns?: boolean;\n}) {\n const validKeys = new Set(columns.map(normalizeColumnKey).filter(Boolean));\n const controlledKeys = Array.isArray(visibleColumnKeys)\n ? visibleColumnKeys.filter((key) => validKeys.has(String(key)))\n : null;\n\n if (controlledKeys && (controlledKeys.length || allowEmptyVisibleColumns)) {\n return controlledKeys;\n }\n\n return getDefaultVisibleColumnKeys(columns);\n}\n\nfunction getDefaultDensityOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'compact', label: labels.compact },\n { value: 'comfortable', label: labels.comfortable },\n { value: 'detailed', label: labels.detailed },\n ];\n}\n\nfunction getDefaultGridColumnOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number | 'auto'>> {\n return [\n { value: 'auto' as const, label: labels.autoColumns },\n { value: 1, label: labels.columns(1) },\n { value: 2, label: labels.columns(2) },\n { value: 3, label: labels.columns(3) },\n { value: 4, label: labels.columns(4) },\n ];\n}\n\nfunction getDefaultBentoColumnOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number>> {\n return [\n { value: 1, label: labels.bentoColumns(1) },\n { value: 2, label: labels.bentoColumns(2) },\n { value: 3, label: labels.bentoColumns(3) },\n ];\n}\n\nfunction getDefaultDetailVisibilityOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'limit', label: labels.topLimit },\n { value: 'all', label: labels.allFields },\n ];\n}\n\nfunction getDefaultLayoutOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'fixed', label: labels.adaptiveGrid },\n { value: 'masonry', label: labels.masonry },\n ];\n}\n\nfunction normalizeOptionValue(value: string | number) {\n return String(value);\n}\n\nfunction getOptionValue<Value extends string | number>(\n options: Array<WorkbenchGallerySettingsOption<Value>>,\n rawValue: unknown,\n fallbackValue: Value,\n) {\n const valueText = String(rawValue ?? fallbackValue);\n return options.some((option) => String(option.value) === valueText)\n ? valueText\n : String(fallbackValue);\n}\n\nfunction parseNumberOption(value: string) {\n const parsed = Number.parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : 1;\n}\n\nconst compactSegmentedClassNames = {\n root: 'flex w-full flex-wrap',\n item: 'min-w-[58px] flex-1 px-2 text-[11px]',\n label: 'text-[11px]',\n};\n\nexport function WorkbenchGallerySettingsPanel({\n columns = [],\n galleryFieldOptions,\n value,\n onValueChange,\n labels,\n densityOptions,\n gridColumnOptions,\n bentoColumnOptions,\n detailVisibilityOptions,\n layoutOptions,\n getColumnLabel = getDefaultColumnLabel,\n getColumnDescription,\n showColumnVisibility = true,\n showGalleryControls = true,\n showLayoutControl = true,\n showGridColumns = true,\n showDetailColumns = true,\n allowEmptyVisibleColumns = false,\n className,\n classNames,\n}: WorkbenchGallerySettingsPanelProps) {\n const resolvedLabels = { ...defaultLabels, ...labels };\n const resolvedValue = value || {};\n const resolvedColumns = columns.filter((column) => normalizeColumnKey(column));\n const resolvedVisibleColumnKeys = getResolvedVisibleColumnKeys({\n columns: resolvedColumns,\n visibleColumnKeys: resolvedValue.visibleColumnKeys,\n allowEmptyVisibleColumns,\n });\n const visibleColumnKeySet = new Set(resolvedVisibleColumnKeys);\n const resolvedGalleryFieldOptions = (galleryFieldOptions || resolvedColumns)\n .filter((column) => normalizeColumnKey(column));\n const resolvedDensityOptions = densityOptions || getDefaultDensityOptions(resolvedLabels);\n const resolvedGridColumnOptions = gridColumnOptions || getDefaultGridColumnOptions(resolvedLabels);\n const resolvedBentoColumnOptions = bentoColumnOptions || getDefaultBentoColumnOptions(resolvedLabels);\n const resolvedDetailVisibilityOptions = detailVisibilityOptions || getDefaultDetailVisibilityOptions(resolvedLabels);\n const resolvedLayoutOptions = layoutOptions || getDefaultLayoutOptions(resolvedLabels);\n const canUpdate = typeof onValueChange === 'function';\n\n const updateValue = (patch: Partial<WorkbenchGallerySettingsValue>) => {\n onValueChange?.({ ...resolvedValue, ...patch }, patch);\n };\n\n const toggleColumn = (columnKey: string) => {\n if (!canUpdate) return;\n const nextVisibleSet = new Set(resolvedVisibleColumnKeys);\n if (nextVisibleSet.has(columnKey)) {\n nextVisibleSet.delete(columnKey);\n } else {\n nextVisibleSet.add(columnKey);\n }\n\n let nextVisibleColumnKeys = resolvedColumns\n .map(normalizeColumnKey)\n .filter((key) => nextVisibleSet.has(key));\n\n if (!nextVisibleColumnKeys.length && !allowEmptyVisibleColumns) {\n nextVisibleColumnKeys = [columnKey];\n }\n\n updateValue({ visibleColumnKeys: nextVisibleColumnKeys });\n };\n\n const shouldRenderColumnVisibility = showColumnVisibility && resolvedColumns.length > 0;\n const shouldRenderGalleryControls = showGalleryControls;\n\n return (\n <div className={cn('space-y-3 text-foreground', classNames?.root, className)}>\n {shouldRenderColumnVisibility ? (\n <section className={cn('space-y-2', classNames?.section)}>\n <div className={cn('text-[10px] font-medium uppercase tracking-wide text-muted-foreground', classNames?.sectionHeader)}>\n {resolvedLabels.visibleColumns}\n </div>\n <div className={cn('max-h-[220px] space-y-1 overflow-y-auto pr-1', classNames?.columnList)}>\n {resolvedColumns.map((column) => {\n const columnKey = normalizeColumnKey(column);\n return (\n <BaseCheckbox\n key={`workbench-gallery-column-${columnKey}`}\n checked={visibleColumnKeySet.has(columnKey)}\n disabled={!canUpdate}\n label={getColumnLabel(column)}\n description={getColumnDescription?.(column)}\n onChange={() => toggleColumn(columnKey)}\n className={cn('flex w-full rounded-lg px-2 py-1.5 hover:bg-muted/50', classNames?.columnItem)}\n />\n );\n })}\n </div>\n </section>\n ) : null}\n\n {shouldRenderGalleryControls ? (\n <section className={cn('space-y-3 border-t border-border/60 pt-3', classNames?.section)}>\n <BaseField\n label={resolvedLabels.coverField}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSelect\n value={String(resolvedValue.galleryFieldKey || 'auto')}\n options={[\n { value: 'auto', label: resolvedLabels.autoDetect },\n ...resolvedGalleryFieldOptions.map((column) => ({\n value: normalizeColumnKey(column),\n label: getColumnLabel(column),\n })),\n ]}\n disabled={!canUpdate}\n onChange={(event) => updateValue({ galleryFieldKey: event.currentTarget.value || 'auto' })}\n className={classNames?.control}\n />\n </BaseField>\n\n <BaseField\n label={resolvedLabels.cardDensity}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedDensityOptions, resolvedValue.galleryDensity, 'comfortable')}\n options={resolvedDensityOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryDensity: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n\n {showGridColumns ? (\n <BaseField\n label={resolvedLabels.cardColumns}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedGridColumnOptions, resolvedValue.galleryGridColumns, 'auto')}\n options={resolvedGridColumnOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({\n galleryGridColumns: nextValue === 'auto' ? 'auto' : parseNumberOption(nextValue),\n })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n\n {showDetailColumns ? (\n <BaseField\n label={resolvedLabels.detailColumns}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedBentoColumnOptions, resolvedValue.galleryBentoColumns, 2)}\n options={resolvedBentoColumnOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryBentoColumns: parseNumberOption(nextValue) })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n\n <BaseField\n label={resolvedLabels.fieldVisibility}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedDetailVisibilityOptions, resolvedValue.galleryDetailVisibility, 'limit')}\n options={resolvedDetailVisibilityOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryDetailVisibility: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n\n {resolvedValue.galleryDetailVisibility !== 'all' ? (\n <BaseField\n label={resolvedLabels.fieldLimit}\n description={resolvedLabels.fieldLimitHint}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n description: 'text-[10px]',\n }}\n >\n <BaseInput\n type=\"number\"\n min={1}\n step={1}\n value={String(resolvedValue.galleryDetailLimit || 4)}\n disabled={!canUpdate}\n onChange={(event) => updateValue({ galleryDetailLimit: event.currentTarget.value })}\n className={classNames?.control}\n />\n </BaseField>\n ) : null}\n\n {showLayoutControl ? (\n <BaseField\n label={resolvedLabels.layout}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedLayoutOptions, resolvedValue.galleryLayout, 'fixed')}\n options={resolvedLayoutOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryLayout: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n </section>\n ) : null}\n </div>\n );\n}\n\nexport function WorkbenchGallerySettingsButton({\n open,\n defaultOpen = false,\n onOpenChange,\n triggerIcon,\n triggerLabel,\n triggerTitle,\n align = 'end',\n popoverWidth = 320,\n panelHeader,\n panelBefore,\n panelAfter,\n panelClassName,\n buttonClassName,\n popoverClassName,\n buttonClassNames,\n labels,\n className,\n classNames,\n ...panelProps\n}: WorkbenchGallerySettingsButtonProps) {\n const resolvedLabels = { ...defaultLabels, ...labels };\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [popoverStyle, setPopoverStyle] = useState<{\n left?: number;\n top?: number;\n width?: number;\n maxHeight?: string;\n }>({});\n const isControlled = open !== undefined;\n const isOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = (nextOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n useLayoutEffect(() => {\n if (!isOpen) return undefined;\n\n const updatePopoverPosition = () => {\n const triggerRect = rootRef.current?.getBoundingClientRect();\n if (!triggerRect || typeof window === 'undefined') return;\n\n const viewportPadding = 12;\n const availableWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);\n const resolvedWidth = Math.min(popoverWidth, availableWidth || popoverWidth);\n const preferredLeft = align === 'start'\n ? triggerRect.left\n : triggerRect.right - resolvedWidth;\n const left = Math.min(\n Math.max(preferredLeft, viewportPadding),\n Math.max(window.innerWidth - resolvedWidth - viewportPadding, viewportPadding),\n );\n const top = Math.min(\n triggerRect.bottom + 8,\n Math.max(window.innerHeight - 80, viewportPadding),\n );\n\n setPopoverStyle({\n left,\n top,\n width: resolvedWidth,\n maxHeight: `calc(100vh - ${Math.round(top + viewportPadding)}px)`,\n });\n };\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setOpen(false);\n };\n\n updatePopoverPosition();\n window.addEventListener('resize', updatePopoverPosition);\n window.addEventListener('scroll', updatePopoverPosition, true);\n window.addEventListener('pointerdown', handlePointerDown);\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('resize', updatePopoverPosition);\n window.removeEventListener('scroll', updatePopoverPosition, true);\n window.removeEventListener('pointerdown', handlePointerDown);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [align, isOpen, popoverWidth]);\n\n const resolvedTriggerLabel = triggerLabel ?? resolvedLabels.settingsButton;\n const resolvedPanelHeader = panelHeader ?? resolvedLabels.title;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', buttonClassNames?.root, className)}>\n <BaseButton\n icon={triggerIcon}\n label={resolvedTriggerLabel}\n title={triggerTitle || (typeof resolvedTriggerLabel === 'string' ? resolvedTriggerLabel : undefined)}\n iconOnly={Boolean(triggerIcon)}\n active={isOpen}\n tone=\"muted\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n className={cn(buttonClassNames?.trigger, buttonClassName)}\n onClick={() => setOpen(!isOpen)}\n />\n\n {isOpen ? (\n <div\n role=\"dialog\"\n aria-label={typeof resolvedPanelHeader === 'string' ? resolvedPanelHeader : undefined}\n className={cn(\n 'fixed z-50 overflow-y-auto rounded-xl border border-border bg-card p-3 text-foreground shadow-lg',\n align === 'start' ? 'origin-top-left' : 'origin-top-right',\n buttonClassNames?.popover,\n popoverClassName,\n )}\n style={popoverStyle}\n >\n {resolvedPanelHeader ? (\n <div className={cn('mb-3 text-[11px] font-medium text-foreground', buttonClassNames?.header)}>\n {resolvedPanelHeader}\n </div>\n ) : null}\n {panelBefore}\n <WorkbenchGallerySettingsPanel\n {...panelProps}\n labels={resolvedLabels}\n className={cn(buttonClassNames?.panel, panelClassName)}\n classNames={classNames}\n />\n {panelAfter}\n </div>\n ) : null}\n </div>\n );\n}\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport {\n WorkbenchGallerySettingsButton,\n type WorkbenchGallerySettingsButtonProps,\n} from './WorkbenchGallerySettings';\n\nexport interface WorkbenchContentToolbarViewModeOption {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface WorkbenchContentToolbarClassNames {\n root?: string;\n start?: string;\n end?: string;\n viewModeRoot?: string;\n viewModeTrigger?: string;\n viewModeMenu?: string;\n viewModeItem?: string;\n settings?: string;\n}\n\nexport interface WorkbenchContentToolbarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n as?: ElementType;\n children?: ReactNode;\n end?: ReactNode;\n viewMode?: string;\n viewModeOptions?: WorkbenchContentToolbarViewModeOption[];\n onViewModeChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n gallerySettings?: WorkbenchGallerySettingsButtonProps | false;\n gallerySettingsPlacement?: 'start' | 'end';\n className?: string;\n startClassName?: string;\n endClassName?: string;\n classNames?: WorkbenchContentToolbarClassNames;\n [key: string]: any;\n}\n\nfunction TableViewIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M3 10h18M9 4v16\" />\n </svg>\n );\n}\n\nfunction GalleryViewIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n </svg>\n );\n}\n\nfunction SettingsIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M20 7h-9M7 7H4M14 17H4M20 17h-3\" />\n <circle cx=\"9\" cy=\"7\" r=\"2\" />\n <circle cx=\"16\" cy=\"17\" r=\"2\" />\n </svg>\n );\n}\n\nfunction ChevronDownIcon({ open }: { open: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className={cn('h-3 w-3 opacity-55 transition-transform', open && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nconst defaultViewModeOptions: WorkbenchContentToolbarViewModeOption[] = [\n { value: 'list', label: 'Table view', icon: <TableViewIcon /> },\n { value: 'gallery', label: 'Gallery view', icon: <GalleryViewIcon /> },\n];\n\nfunction getViewModeOptionIcon(option: WorkbenchContentToolbarViewModeOption) {\n if (option.icon !== undefined) return option.icon;\n if (option.value === 'list' || option.value === 'table') return <TableViewIcon />;\n if (option.value === 'gallery') return <GalleryViewIcon />;\n return null;\n}\n\nfunction getSettingsTriggerLabel(settings: WorkbenchGallerySettingsButtonProps) {\n return settings.triggerLabel ?? settings.labels?.settingsButton ?? 'Settings';\n}\n\nfunction WorkbenchContentToolbarViewModeControl({\n value,\n options,\n onValueChange,\n classNames,\n}: {\n value?: string;\n options: WorkbenchContentToolbarViewModeOption[];\n onValueChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n classNames?: WorkbenchContentToolbarClassNames;\n}) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [open, setOpen] = useState(false);\n const activeOption = options.find((option) => option.value === value) || options.find((option) => !option.disabled) || options[0];\n const activeIcon = activeOption ? getViewModeOptionIcon(activeOption) : null;\n\n useEffect(() => {\n if (!open) return undefined;\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setOpen(false);\n };\n\n window.addEventListener('pointerdown', handlePointerDown);\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('pointerdown', handlePointerDown);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [open]);\n\n if (!activeOption) return null;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', classNames?.viewModeRoot)}>\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n 'inline-flex h-7 min-w-0 items-center justify-center gap-1.5 rounded-md border border-border/70 bg-card px-2 text-xs font-medium text-foreground shadow-none transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25',\n classNames?.viewModeTrigger,\n )}\n onClick={() => setOpen((current) => !current)}\n >\n {activeIcon ? (\n <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center text-muted-foreground\">\n {activeIcon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{activeOption.label}</span>\n <ChevronDownIcon open={open} />\n </button>\n\n {open ? (\n <div\n role=\"listbox\"\n className={cn(\n 'absolute left-0 top-full z-50 mt-2 min-w-[160px] overflow-hidden rounded-xl border border-border/60 bg-card/95 p-1.5 text-xs text-foreground shadow-lg backdrop-blur-xl',\n classNames?.viewModeMenu,\n )}\n >\n {options.map((option) => {\n const selected = option.value === activeOption.value;\n const optionIcon = getViewModeOptionIcon(option);\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n disabled={option.disabled}\n className={cn(\n 'flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/55 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50',\n selected && 'bg-muted/60 text-foreground',\n classNames?.viewModeItem,\n )}\n onClick={() => {\n if (option.disabled) return;\n onValueChange?.(option.value, option);\n setOpen(false);\n }}\n >\n {optionIcon ? (\n <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center\">\n {optionIcon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{option.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport const WorkbenchContentToolbar = forwardRef<HTMLElement, WorkbenchContentToolbarProps>(\n function WorkbenchContentToolbar(\n {\n as: Component = 'div',\n children,\n end,\n viewMode,\n viewModeOptions,\n onViewModeChange,\n gallerySettings,\n gallerySettingsPlacement = 'start',\n className,\n startClassName,\n endClassName,\n classNames,\n ...props\n },\n ref,\n ) {\n const resolvedViewModeOptions = viewModeOptions || (viewMode ? defaultViewModeOptions : []);\n const resolvedGallerySettings = gallerySettings && typeof gallerySettings === 'object' ? gallerySettings : null;\n const shouldRenderViewMode = Boolean(resolvedViewModeOptions.length);\n const shouldRenderSettings = Boolean(resolvedGallerySettings);\n const shouldRenderSettingsInStart = shouldRenderSettings && gallerySettingsPlacement !== 'end';\n const shouldRenderSettingsInEnd = shouldRenderSettings && gallerySettingsPlacement === 'end';\n const shouldRenderStart = shouldRenderViewMode || shouldRenderSettingsInStart || Boolean(children);\n const shouldRenderEnd = Boolean(end) || shouldRenderSettingsInEnd;\n\n return (\n <Component\n ref={ref}\n data-workbench-content-toolbar\n className={cn(\n 'flex min-h-[46px] shrink-0 flex-col gap-2 border-b border-border/60 px-4 py-2 md:flex-row md:items-center md:justify-between',\n classNames?.root,\n className,\n )}\n {...props}\n >\n {shouldRenderStart ? (\n <div className={cn('flex flex-wrap items-center gap-2', classNames?.start, startClassName)}>\n {shouldRenderViewMode ? (\n <WorkbenchContentToolbarViewModeControl\n value={viewMode}\n options={resolvedViewModeOptions}\n onValueChange={onViewModeChange}\n classNames={classNames}\n />\n ) : null}\n {shouldRenderSettingsInStart && resolvedGallerySettings ? (\n <WorkbenchGallerySettingsButton\n align=\"end\"\n triggerIcon={<SettingsIcon />}\n triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n {...resolvedGallerySettings}\n buttonClassName={cn(\n '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n classNames?.settings,\n resolvedGallerySettings.buttonClassName,\n )}\n />\n ) : null}\n {children}\n </div>\n ) : null}\n {shouldRenderEnd ? (\n <div className={cn('flex shrink-0 items-center gap-2', classNames?.end, endClassName)}>\n {end}\n {shouldRenderSettingsInEnd && resolvedGallerySettings ? (\n <WorkbenchGallerySettingsButton\n align=\"end\"\n triggerIcon={<SettingsIcon />}\n triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n {...resolvedGallerySettings}\n buttonClassName={cn(\n '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n classNames?.settings,\n resolvedGallerySettings.buttonClassName,\n )}\n />\n ) : null}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import {\n Children,\n forwardRef,\n isValidElement,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { BaseDescriptionList } from '../base';\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchDetailSidebarClassNames {\n root?: string;\n header?: string;\n body?: string;\n footer?: string;\n resizeHandle?: string;\n autoBody?: string;\n section?: string;\n sectionHeader?: string;\n sectionTitle?: string;\n sectionDescription?: string;\n descriptionList?: string;\n descriptionListItem?: string;\n descriptionListTerm?: string;\n descriptionListValue?: string;\n fieldLabel?: string;\n fieldLabelIcon?: string;\n fieldValue?: string;\n mediaValue?: string;\n mediaImage?: string;\n mediaCaption?: string;\n emptyState?: string;\n}\n\nexport interface WorkbenchDetailSidebarBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n className?: string;\n}\n\nexport interface WorkbenchDetailSidebarField<Row = any> {\n key: string;\n label?: ReactNode;\n labelIcon?: ReactNode | ElementType;\n icon?: ReactNode | ElementType;\n renderType?: string;\n value?: ReactNode | ((record: Row | null | undefined, field: WorkbenchDetailSidebarField<Row>) => ReactNode);\n description?: ReactNode;\n hidden?: boolean | ((field: WorkbenchDetailSidebarField<Row>, record: Row | null | undefined) => boolean);\n emptyValue?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarSection<Row = any> {\n id?: string;\n title?: ReactNode;\n description?: ReactNode;\n fields?: WorkbenchDetailSidebarField<Row>[];\n columns?: 1 | 2 | 3;\n hidden?: boolean | ((section: WorkbenchDetailSidebarSection<Row>, record: Row | null | undefined) => boolean);\n emptyState?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarRenderContext<Row = any> {\n field: WorkbenchDetailSidebarField<Row>;\n fieldIndex: number;\n section: WorkbenchDetailSidebarSection<Row>;\n sectionIndex: number;\n record: Row | null | undefined;\n}\n\nexport interface WorkbenchDetailSidebarProps<Row = any> extends Omit<ComponentPropsWithoutRef<'aside'>, 'children' | 'className' | 'style'> {\n as?: ElementType;\n bodyAs?: ElementType;\n open?: boolean;\n width?: number | string;\n header?: ReactNode;\n footer?: ReactNode;\n resizeHandle?: ReactNode;\n children?: ReactNode;\n record?: Row | null;\n fields?: WorkbenchDetailSidebarField<Row>[];\n sections?: WorkbenchDetailSidebarSection<Row>[];\n fieldColumns?: 1 | 2 | 3;\n emptyValue?: ReactNode;\n emptyState?: ReactNode;\n getFieldValue?: (\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => unknown;\n renderFieldValue?: (\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => ReactNode;\n formatFieldValue?: (\n value: unknown,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => ReactNode;\n formatFieldLabel?: (\n label: ReactNode,\n context: Omit<WorkbenchDetailSidebarRenderContext<Row>, 'fieldIndex'> & {\n field: WorkbenchDetailSidebarField<Row>;\n fieldIndex?: number;\n },\n ) => ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n resizeHandleClassName?: string;\n bodyProps?: WorkbenchDetailSidebarBodyProps;\n classNames?: WorkbenchDetailSidebarClassNames;\n style?: CSSProperties;\n [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n header?: ReactNode;\n footer?: ReactNode;\n bodyAs?: ElementType;\n bodyClassName?: string;\n bodyProps?: WorkbenchDetailSidebarBodyProps;\n classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n return Boolean(\n props.header ||\n props.footer ||\n props.bodyAs ||\n props.bodyClassName ||\n props.bodyProps ||\n props.classNames?.body,\n );\n}\n\nfunction hasRenderableChildren(children: ReactNode): boolean {\n if (children === null || children === undefined || typeof children === 'boolean') return false;\n if (typeof children === 'string') return children.trim().length > 0;\n if (Array.isArray(children)) return children.some(hasRenderableChildren);\n\n const childList = Children.toArray(children);\n if (!childList.length) return false;\n\n return childList.some((child) => (typeof child === 'string' ? child.trim().length > 0 : true));\n}\n\nfunction resolveWidthStyle(open: boolean | undefined, width: number | string | undefined) {\n if (width === undefined) return {};\n if (open === undefined) return { width };\n\n return {\n width: open ? width : 0,\n opacity: open ? 1 : 0,\n };\n}\n\nfunction getFallbackFieldLabel(field: WorkbenchDetailSidebarField) {\n return field.label ?? field.key;\n}\n\nfunction getObjectDisplayValue(value: Record<string, any>) {\n const displayKeys = ['text', 'label', 'title', 'display', 'value', 'recordId'];\n\n for (const key of displayKeys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) continue;\n\n const displayValue = value[key];\n if (displayValue !== null && displayValue !== undefined && displayValue !== '') {\n return displayValue;\n }\n }\n\n return undefined;\n}\n\nfunction isEmptyDetailValue(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction isPlainDisplayValue(value: ReactNode) {\n return ['string', 'number', 'boolean'].includes(typeof value);\n}\n\nfunction getMediaDisplayData(value: unknown) {\n if (!value) return null;\n\n if (typeof value === 'string') {\n const isDataImage = value.startsWith('data:image/');\n const isImageUrl = /\\.(avif|gif|jpe?g|png|svg|webp)(\\?.*)?$/i.test(value);\n return isDataImage || isImageUrl ? { src: value } : null;\n }\n\n if (typeof value !== 'object' || isValidElement(value)) return null;\n\n const media = value as Record<string, any>;\n const src = media.src || media.url || media.thumbnail || media.preview || media.image;\n\n return src\n ? {\n src: String(src),\n alt: media.alt || media.label || media.title || '',\n caption: media.caption || media.description || media.label || media.title,\n }\n : null;\n}\n\nfunction shouldRenderAsMedia(field: WorkbenchDetailSidebarField | undefined, value: unknown) {\n const renderType = String(field?.renderType || '').toLowerCase();\n return ['image', 'media', 'preview', 'thumbnail'].includes(renderType) || Boolean(getMediaDisplayData(value));\n}\n\nfunction renderMaybeFieldIcon(icon: ReactNode | ElementType | undefined, className?: string) {\n if (!icon) {\n return (\n <span className={cn('relative inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center', className)}>\n <span className=\"absolute inset-0 rounded-full border border-primary/25 bg-primary/10\" />\n <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n </span>\n );\n }\n\n if (typeof icon === 'string' || typeof icon === 'number') {\n return (\n <span className={cn('inline-flex h-3.5 min-w-3.5 shrink-0 items-center justify-center rounded-sm text-[10px] font-semibold text-primary', className)}>\n {icon}\n </span>\n );\n }\n\n if (typeof icon === 'boolean') return null;\n\n if (isValidElement(icon)) return icon;\n\n const IconComponent = icon as ElementType;\n return <IconComponent className={cn('h-3.5 w-3.5 shrink-0 text-primary', className)} />;\n}\n\nfunction renderDetailFieldLabel<Row>(\n label: ReactNode,\n field: WorkbenchDetailSidebarField<Row>,\n classNames?: WorkbenchDetailSidebarClassNames,\n) {\n return (\n <span className={cn('inline-flex min-w-0 items-center gap-1.5 text-[11px] font-semibold text-foreground', classNames?.fieldLabel)}>\n {renderMaybeFieldIcon(field.labelIcon || field.icon, classNames?.fieldLabelIcon)}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n}\n\nfunction WorkbenchDetailSidebarMediaValue({\n media,\n classNames,\n}: {\n media: NonNullable<ReturnType<typeof getMediaDisplayData>>;\n classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n return (\n <div className={cn('grid gap-2', classNames?.mediaValue)}>\n <div className=\"overflow-hidden rounded-md border border-border/55 bg-muted/20 dark:border-border/45 dark:bg-muted/10\">\n <img\n src={media.src}\n alt={String(media.alt || '')}\n className={cn('block aspect-[16/9] w-full object-cover', classNames?.mediaImage)}\n />\n </div>\n {media.caption ? (\n <div className={cn('truncate text-[11px] leading-4 text-muted-foreground', classNames?.mediaCaption)}>\n {media.caption}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction getDefaultDetailDisplayValue(\n value: unknown,\n emptyValue: ReactNode,\n field?: WorkbenchDetailSidebarField,\n classNames?: WorkbenchDetailSidebarClassNames,\n): ReactNode {\n if (isEmptyDetailValue(value)) return emptyValue;\n if (isValidElement(value)) return value;\n if (shouldRenderAsMedia(field, value)) {\n const media = getMediaDisplayData(value);\n if (media) return <WorkbenchDetailSidebarMediaValue media={media} classNames={classNames} />;\n }\n if (Array.isArray(value)) {\n const parts: ReactNode[] = value\n .map((item) => getDefaultDetailDisplayValue(item, '', undefined, classNames))\n .filter((item) => !isEmptyDetailValue(item));\n\n if (!parts.length) return emptyValue;\n if (parts.every(isPlainDisplayValue)) return parts.map(String).join(' · ');\n\n return (\n <span className=\"inline-flex flex-wrap items-center gap-1\">\n {parts.map((part, index) => (\n <span key={index} className=\"inline-flex items-center gap-1\">\n {index > 0 ? <span className=\"text-muted-foreground\">·</span> : null}\n {isPlainDisplayValue(part) ? String(part) : part}\n </span>\n ))}\n </span>\n );\n }\n if (typeof value === 'object') {\n const displayValue = getObjectDisplayValue(value as Record<string, any>);\n return displayValue === undefined\n ? emptyValue\n : getDefaultDetailDisplayValue(displayValue, emptyValue, field, classNames);\n }\n return String(value);\n}\n\nfunction getDefaultFieldValue<Row>(\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n) {\n if (Object.prototype.hasOwnProperty.call(field, 'value')) {\n return typeof field.value === 'function'\n ? field.value(record, field)\n : field.value;\n }\n\n return record ? (record as any)?.[field.key] : undefined;\n}\n\nfunction shouldHideField<Row>(\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n) {\n return typeof field.hidden === 'function'\n ? field.hidden(field, record)\n : Boolean(field.hidden);\n}\n\nfunction shouldHideSection<Row>(\n section: WorkbenchDetailSidebarSection<Row>,\n record: Row | null | undefined,\n) {\n return typeof section.hidden === 'function'\n ? section.hidden(section, record)\n : Boolean(section.hidden);\n}\n\nfunction WorkbenchDetailSidebarAutoContent<Row = any>({\n record,\n fields,\n sections,\n fieldColumns = 1,\n emptyValue = '—',\n emptyState,\n getFieldValue,\n renderFieldValue,\n formatFieldValue,\n formatFieldLabel,\n classNames,\n}: Pick<\n WorkbenchDetailSidebarProps<Row>,\n | 'record'\n | 'fields'\n | 'sections'\n | 'fieldColumns'\n | 'emptyValue'\n | 'emptyState'\n | 'getFieldValue'\n | 'renderFieldValue'\n | 'formatFieldValue'\n | 'formatFieldLabel'\n | 'classNames'\n>) {\n const resolvedSections = sections?.length\n ? sections\n : fields?.length\n ? [{ fields, columns: fieldColumns }]\n : [];\n const visibleSections = resolvedSections.filter((section) => !shouldHideSection(section, record));\n\n if (!visibleSections.length) {\n return emptyState ? (\n <div className={cn('rounded-lg border border-dashed border-border/60 px-3 py-6 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n {emptyState}\n </div>\n ) : null;\n }\n\n return (\n <div className={cn('space-y-3', classNames?.autoBody)}>\n {visibleSections.map((section, sectionIndex) => {\n const visibleFields = (section.fields || []).filter((field) => !shouldHideField(field, record));\n const sectionKey = section.id || `section-${sectionIndex}`;\n\n if (!visibleFields.length && !section.emptyState) return null;\n\n const items = visibleFields.map((field, fieldIndex) => {\n const context: WorkbenchDetailSidebarRenderContext<Row> = {\n field,\n fieldIndex,\n section,\n sectionIndex,\n record,\n };\n const rawValue = getFieldValue\n ? getFieldValue(field, record, context)\n : getDefaultFieldValue(field, record);\n const value = renderFieldValue\n ? renderFieldValue(field, record, context)\n : formatFieldValue\n ? formatFieldValue(rawValue, context)\n : getDefaultDetailDisplayValue(rawValue, field.emptyValue ?? emptyValue, field, classNames);\n const fieldLabel = formatFieldLabel\n ? formatFieldLabel(getFallbackFieldLabel(field), context)\n : getFallbackFieldLabel(field);\n\n return {\n term: renderDetailFieldLabel(fieldLabel, field, classNames),\n value,\n };\n });\n\n return (\n <section key={sectionKey} className={cn('min-w-0 space-y-3', classNames?.section)}>\n {section.title || section.description ? (\n <div className={cn('min-w-0 space-y-1.5', classNames?.sectionHeader)}>\n {section.title ? (\n <div className={cn('inline-flex max-w-full items-center gap-2 rounded-md border border-primary/20 bg-primary/5 px-2.5 py-1.5 text-xs font-medium text-primary dark:border-primary/25 dark:bg-primary/10', classNames?.sectionTitle)}>\n {section.title}\n </div>\n ) : null}\n {section.description ? (\n <div className={cn('text-[11px] leading-5 text-muted-foreground', classNames?.sectionDescription)}>\n {section.description}\n </div>\n ) : null}\n </div>\n ) : null}\n {items.length ? (\n <BaseDescriptionList\n items={items}\n columns={section.columns || fieldColumns}\n className={cn('gap-3', classNames?.descriptionList)}\n classNames={{\n item: cn('!border-0 !bg-transparent !p-0 !shadow-none !gap-1.5', classNames?.descriptionListItem),\n term: cn('!normal-case !tracking-normal !text-foreground', classNames?.descriptionListTerm),\n value: cn(\n 'min-h-10 rounded-md border border-border/55 bg-muted/25 px-3 py-2 text-xs leading-5 text-foreground shadow-[inset_0_1px_0_hsl(var(--background)/0.8)] dark:border-border/45 dark:bg-white/[0.035]',\n classNames?.fieldValue,\n classNames?.descriptionListValue,\n ),\n }}\n />\n ) : (\n <div className={cn('py-3 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n {section.emptyState}\n </div>\n )}\n </section>\n );\n })}\n </div>\n );\n}\n\nexport const WorkbenchDetailSidebar = forwardRef<HTMLElement, WorkbenchDetailSidebarProps>(\n function WorkbenchDetailSidebar(\n {\n as: Component = 'aside',\n bodyAs: BodyComponent = 'div',\n open,\n width,\n header,\n footer,\n resizeHandle,\n children,\n record,\n fields,\n sections,\n fieldColumns,\n emptyValue,\n emptyState,\n getFieldValue,\n renderFieldValue,\n formatFieldValue,\n formatFieldLabel,\n className,\n headerClassName,\n bodyClassName,\n footerClassName,\n resizeHandleClassName,\n bodyProps,\n classNames,\n style,\n ...props\n },\n ref,\n ) {\n const autoContent = hasRenderableChildren(children) ? children : (\n <WorkbenchDetailSidebarAutoContent\n record={record}\n fields={fields}\n sections={sections}\n fieldColumns={fieldColumns}\n emptyValue={emptyValue}\n emptyState={emptyState}\n getFieldValue={getFieldValue}\n renderFieldValue={renderFieldValue}\n formatFieldValue={formatFieldValue}\n formatFieldLabel={formatFieldLabel}\n classNames={classNames}\n />\n );\n const renderBodyWrapper = shouldRenderBodyWrapper({\n header,\n footer,\n bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n bodyClassName,\n bodyProps,\n classNames,\n });\n const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n return (\n <Component\n ref={ref}\n data-workbench-detail-sidebar\n data-open={open === undefined ? undefined : open ? 'true' : 'false'}\n className={cn(\n 'workbench-surface-subtle relative flex flex-shrink-0 flex-col self-stretch overflow-hidden rounded-lg border border-border/50 transition-all duration-300 dark:border-border/40',\n open === false && 'pointer-events-none',\n classNames?.root,\n className,\n )}\n style={{\n ...resolveWidthStyle(open, width),\n ...style,\n }}\n {...props}\n >\n {resizeHandle ? (\n <div className={cn(classNames?.resizeHandle, resizeHandleClassName)}>\n {resizeHandle}\n </div>\n ) : null}\n {header ? (\n <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n {header}\n </div>\n ) : null}\n {renderBodyWrapper ? (\n <BodyComponent\n className={cn('min-h-0 flex-1 overflow-y-auto', classNames?.body, bodyClassName, bodyPropsClassName)}\n {...restBodyProps}\n >\n {autoContent}\n </BodyComponent>\n ) : (\n autoContent\n )}\n {footer ? (\n <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n {footer}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import {\n isValidElement,\n type ComponentType,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nexport type WorkbenchIconCandidate =\n | ReactNode\n | ComponentType<{ className?: string }>\n | null\n | undefined;\n\nfunction isWorkbenchIconComponent(\n icon: WorkbenchIconCandidate,\n): icon is ComponentType<{ className?: string }> {\n if (typeof icon === 'function') return true;\n return typeof icon === 'object' && icon !== null && !isValidElement(icon) && '$$typeof' in icon;\n}\n\nexport function renderWorkbenchIcon(icon: WorkbenchIconCandidate, className: string) {\n if (!icon) return null;\n if (isValidElement(icon)) return icon as ReactElement;\n if (isWorkbenchIconComponent(icon)) {\n const Icon = icon as ComponentType<{ className?: string }>;\n return <Icon className={className} />;\n }\n return icon;\n}\n\nexport function getWorkbenchIconComponent(icon: WorkbenchIconCandidate) {\n if (!icon || !isWorkbenchIconComponent(icon)) return null;\n return icon;\n}\n","import {\n type ComponentType,\n type CSSProperties,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n BaseTable,\n BaseTableBody,\n BaseTableCell,\n BaseTableContainer,\n BaseTableEmpty,\n BaseTableHead,\n BaseTableHeader,\n BaseTableRow,\n} from '../base/BaseTable';\nimport type {\n BaseAppearance,\n BaseTableColumnOrderChangeDetail,\n BaseTableColumnSizeChangeDetail,\n BaseTableColumnSizes,\n BaseTableSortDirection,\n} from '../base/types';\nimport { cn, hasRenderableNode } from '../base/utils';\nimport { renderWorkbenchIcon } from './workbenchIconUtils';\n\nexport interface WorkbenchTableViewColumn {\n key: string;\n label?: ReactNode;\n helperText?: ReactNode;\n renderType?: string;\n type?: string;\n description?: ReactNode;\n meta?: ReactNode;\n actions?: ReactNode;\n trailing?: ReactNode;\n wrap?: boolean;\n align?: 'left' | 'center' | 'right';\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n sortable?: boolean;\n sortDirection?: BaseTableSortDirection;\n sortLabel?: string;\n draggable?: boolean;\n dragLabel?: string;\n resizable?: boolean;\n resizeLabel?: string;\n compactHeaderClassName?: string;\n compactCellClassName?: string;\n headerClassName?: string;\n cellClassName?: string;\n [key: string]: any;\n}\n\nexport interface WorkbenchTableViewClassNames {\n root?: string;\n scrollArea?: string;\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string;\n cell?: string;\n footer?: string;\n helper?: string;\n}\n\nexport interface WorkbenchTableViewRenderContext<Row = any> {\n row: Row;\n rowIndex: number;\n column: WorkbenchTableViewColumn;\n columnIndex: number;\n compact: boolean;\n surface: 'list' | string;\n}\n\nexport interface WorkbenchTableViewHeaderContext<Row = any> {\n column: WorkbenchTableViewColumn;\n columnIndex: number;\n columns: WorkbenchTableViewColumn[];\n rows: Row[];\n columnType?: string;\n}\n\nexport interface WorkbenchTableViewProps<Row = any> {\n rows?: Row[];\n columns?: WorkbenchTableViewColumn[];\n onRowClick?: (row: Row, rowIndex: number) => void;\n selectedRowKey?: string;\n selectedLinkKey?: string;\n activePrimaryColumn?: WorkbenchTableViewColumn | null;\n activeTablePrimaryColumn?: WorkbenchTableViewColumn | null;\n renderedRowCount?: number;\n totalRowCount?: number;\n tableMinWidth?: number;\n minWidth?: number;\n bodyMaxHeight?: number | string;\n stickyFirstColumn?: boolean;\n appearance?: BaseAppearance;\n columnOrder?: string[];\n columnSizes?: BaseTableColumnSizes;\n columnDragEnabled?: boolean;\n columnResizeEnabled?: boolean;\n className?: string;\n tableClassName?: string;\n rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n classNames?: WorkbenchTableViewClassNames;\n style?: CSSProperties;\n renderCell?: (column: WorkbenchTableViewColumn, row: Row, context: WorkbenchTableViewRenderContext<Row>) => ReactNode;\n renderFieldValue?: (column: WorkbenchTableViewColumn, row: Row, context: WorkbenchTableViewRenderContext<Row>) => ReactNode;\n renderColumnHeader?: (column: WorkbenchTableViewColumn, context: WorkbenchTableViewHeaderContext<Row>) => ReactNode;\n onColumnOrderChange?: (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => void;\n onColumnSizeChange?: (columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => void;\n onSort?: (columnKey: string, column: WorkbenchTableViewColumn) => void;\n formatLabel?: (value: ReactNode, context?: { column?: WorkbenchTableViewColumn }) => ReactNode;\n getColumnDataType?: (columnKey: string, rows: Row[], column?: WorkbenchTableViewColumn) => string | undefined;\n getColumnIcon?: (\n columnType?: string,\n column?: WorkbenchTableViewColumn,\n ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n getColumnTypeIcon?: (\n columnType?: string,\n column?: WorkbenchTableViewColumn,\n ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n getRowKey?: (row: Row, rowIndex: number) => string | number;\n getRowSelectionKey?: (row: Row, rowIndex: number) => string | number | undefined;\n isActionColumn?: (column: WorkbenchTableViewColumn) => boolean;\n isActionField?: (column: WorkbenchTableViewColumn) => boolean;\n isRowDisabled?: (row: Row, rowIndex: number) => boolean;\n isWorkbenchPlaceholderRow?: (row: Row, rowIndex?: number) => boolean;\n emptyState?: ReactNode;\n hiddenRowsMessage?: ReactNode | ((hiddenRowCount: number, renderedRowCount: number, totalRowCount: number) => ReactNode);\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst DEFAULT_WORKBENCH_COLUMN_WIDTH = 160;\nconst DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH = 56;\nconst DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH = 128;\n\nfunction numericCssSize(value: number | string | undefined) {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n if (typeof value !== 'string') return undefined;\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)px$/i);\n return match ? Number(match[1]) : undefined;\n}\n\nfunction defaultWorkbenchColumnWidth(column: WorkbenchTableViewColumn, action: boolean) {\n if (column.renderType === 'icon') return DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH;\n if (action) return DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH;\n return DEFAULT_WORKBENCH_COLUMN_WIDTH;\n}\n\nfunction resolvedWorkbenchColumnWidth(\n column: WorkbenchTableViewColumn,\n controlledWidth: number | undefined,\n action: boolean,\n) {\n return controlledWidth\n ?? numericCssSize(column.width)\n ?? numericCssSize(column.minWidth)\n ?? defaultWorkbenchColumnWidth(column, action);\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n if (value === undefined || value === null || value === false) return null;\n return value;\n}\n\nfunction toTitle(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') return String(value);\n return undefined;\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n return row?.id ?? row?.key ?? row?.linkKey ?? rowIndex;\n}\n\nfunction defaultGetRowSelectionKey(row: any) {\n return row?.linkKey ?? row?.id ?? row?.key;\n}\n\nfunction getOrderedColumns(columns: WorkbenchTableViewColumn[], columnOrder?: string[]) {\n if (!columnOrder?.length) return columns;\n\n const columnMap = new Map(columns.map((column) => [column.key, column]));\n const orderedColumns = columnOrder\n .map((columnKey) => columnMap.get(columnKey))\n .filter(Boolean) as WorkbenchTableViewColumn[];\n const orderedKeySet = new Set(orderedColumns.map((column) => column.key));\n const remainingColumns = columns.filter((column) => !orderedKeySet.has(column.key));\n\n return [...orderedColumns, ...remainingColumns];\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n const validColumnKeys = new Set(columnKeys);\n const orderedKeys = (columnOrder || []).filter((columnKey) => validColumnKeys.has(columnKey));\n const orderedKeySet = new Set(orderedKeys);\n const remainingKeys = columnKeys.filter((columnKey) => !orderedKeySet.has(columnKey));\n\n return [...orderedKeys, ...remainingKeys];\n}\n\nfunction WorkbenchTableHeaderHelper({\n helperText,\n className,\n}: {\n helperText?: ReactNode;\n className?: string;\n}) {\n if (!hasRenderableNode(helperText)) return null;\n\n return (\n <span className={cn('group relative inline-flex items-center', className)}>\n <button\n type=\"button\"\n title={toTitle(helperText)}\n aria-label={toTitle(helperText) || 'Field help'}\n className=\"inline-flex h-4 w-4 items-center justify-center rounded-full border border-border/60 bg-background text-[10px] font-semibold normal-case tracking-normal text-muted-foreground shadow-sm transition-colors hover:border-primary/40 hover:text-primary focus-visible:border-primary/40 focus-visible:text-primary focus-visible:outline-none\"\n onClick={(event) => event.stopPropagation()}\n >\n ?\n </button>\n <span\n role=\"tooltip\"\n className=\"pointer-events-none absolute left-1/2 top-full z-40 mt-2 hidden w-72 -translate-x-1/2 whitespace-pre-line rounded-lg border border-border/60 bg-card px-3 py-2 text-[11px] font-normal normal-case leading-5 tracking-normal text-foreground shadow-sm backdrop-blur-sm group-hover:block group-focus-within:block\"\n >\n {helperText}\n </span>\n </span>\n );\n}\n\nexport function WorkbenchTableView<Row = any>({\n rows = [],\n columns = [],\n onRowClick,\n selectedRowKey,\n selectedLinkKey,\n activePrimaryColumn,\n activeTablePrimaryColumn,\n renderedRowCount,\n totalRowCount,\n tableMinWidth,\n minWidth,\n bodyMaxHeight = 'min(58vh, 38rem)',\n stickyFirstColumn = true,\n appearance,\n columnOrder,\n columnSizes,\n columnDragEnabled,\n columnResizeEnabled,\n className,\n tableClassName,\n rowClassName,\n classNames,\n style,\n renderCell,\n renderFieldValue,\n renderColumnHeader,\n onColumnOrderChange,\n onColumnSizeChange,\n onSort,\n formatLabel = defaultFormatLabel,\n getColumnDataType,\n getColumnIcon,\n getColumnTypeIcon,\n getRowKey = defaultGetRowKey,\n getRowSelectionKey = defaultGetRowSelectionKey,\n isActionColumn,\n isActionField,\n isRowDisabled,\n isWorkbenchPlaceholderRow,\n emptyState = '-',\n hiddenRowsMessage,\n}: WorkbenchTableViewProps<Row>) {\n const columnKeySignature = columns.map((column) => column.key).join('\\u0001');\n const defaultColumnOrder = useMemo(() => (\n columnKeySignature ? columnKeySignature.split('\\u0001') : []\n ), [columnKeySignature]);\n const [internalColumnOrder, setInternalColumnOrder] = useState(defaultColumnOrder);\n const [internalColumnSizes, setInternalColumnSizes] = useState<BaseTableColumnSizes>({});\n\n useEffect(() => {\n setInternalColumnOrder((current) => normalizeColumnOrder(defaultColumnOrder, current));\n }, [defaultColumnOrder]);\n\n const resolvedColumnOrder = columnOrder\n ? normalizeColumnOrder(defaultColumnOrder, columnOrder)\n : internalColumnOrder;\n const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n const handleColumnOrderChange = useCallback((nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n const normalizedOrder = normalizeColumnOrder(defaultColumnOrder, nextOrder);\n if (!columnOrder) {\n setInternalColumnOrder(normalizedOrder);\n }\n onColumnOrderChange?.(normalizedOrder, detail);\n }, [columnOrder, defaultColumnOrder, onColumnOrderChange]);\n const handleColumnSizeChange = useCallback((columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => {\n if (!columnSizes) {\n setInternalColumnSizes((current) => ({\n ...current,\n [columnId]: width,\n }));\n }\n onColumnSizeChange?.(columnId, width, detail);\n }, [columnSizes, onColumnSizeChange]);\n const resolvedSelectedKey = selectedRowKey ?? selectedLinkKey;\n const resolvedActivePrimaryColumn = activePrimaryColumn ?? activeTablePrimaryColumn;\n const orderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n const hiddenRowCount = Math.max(0, Number(totalRowCount || rows.length) - Number(renderedRowCount || rows.length));\n const renderValue = renderCell ?? renderFieldValue ?? ((column: WorkbenchTableViewColumn, row: Row) => (row as any)?.[column.key]);\n const isAction = isActionColumn ?? isActionField ?? (() => false);\n const isDisabled = isRowDisabled ?? isWorkbenchPlaceholderRow ?? (() => false);\n const resolveColumnIcon = getColumnIcon ?? getColumnTypeIcon;\n const resolvedMinWidth = tableMinWidth ?? minWidth ?? Math.max(\n 760,\n orderedColumns.reduce(\n (total, column) => total + resolvedWorkbenchColumnWidth(\n column,\n resolvedColumnSizes[column.key],\n isAction(column),\n ),\n 0,\n ),\n );\n\n const footer = hiddenRowCount > 0 && hiddenRowsMessage\n ? (typeof hiddenRowsMessage === 'function'\n ? hiddenRowsMessage(hiddenRowCount, renderedRowCount || rows.length, totalRowCount || rows.length)\n : hiddenRowsMessage)\n : null;\n\n return (\n <BaseTableContainer\n appearance={appearance}\n className={cn('w-full overflow-hidden rounded-lg border border-border/40 bg-muted/15 dark:border-border/35 dark:bg-muted/10', classNames?.root, className)}\n style={style}\n >\n <div\n className={cn('w-full overflow-auto', classNames?.scrollArea)}\n style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n >\n <BaseTable\n appearance={appearance}\n columnOrder={resolvedColumnOrder}\n columnSizes={resolvedColumnSizes}\n columnDragEnabled={columnDragEnabled}\n columnResizeEnabled={columnResizeEnabled}\n onColumnOrderChange={handleColumnOrderChange}\n onColumnSizeChange={handleColumnSizeChange}\n className={cn('w-full table-auto text-left text-xs', classNames?.table, tableClassName)}\n style={{ minWidth: resolvedMinWidth }}\n >\n <BaseTableHeader appearance={appearance} className={cn('text-[10px] font-mono uppercase tracking-wide text-muted-foreground', classNames?.header)}>\n <BaseTableRow className={cn('hover:bg-transparent', classNames?.headerRow)}>\n {orderedColumns.map((column, columnIndex) => {\n const defaultColumnWidth = defaultWorkbenchColumnWidth(column, isAction(column));\n const columnType = column.renderType || column.type || getColumnDataType?.(column.key, rows, column);\n const columnIcon = renderWorkbenchIcon(\n resolveColumnIcon?.(columnType, column),\n 'h-3.5 w-3.5 shrink-0 text-primary',\n );\n const previousColumn = orderedColumns[columnIndex - 1];\n const followsRecordIcon = previousColumn?.renderType === 'icon' && column.key === resolvedActivePrimaryColumn?.key;\n const headerContent = renderColumnHeader\n ? renderColumnHeader(column, { column, columnIndex, columns: orderedColumns, rows, columnType })\n : formatLabel(column.label, { column });\n const headerTrailing = !renderColumnHeader && (hasRenderableNode(column.trailing) || hasRenderableNode(column.helperText))\n ? (\n <span className=\"inline-flex items-center gap-1.5\">\n {hasRenderableNode(column.trailing) ? formatLabel(column.trailing, { column }) : null}\n <WorkbenchTableHeaderHelper helperText={formatLabel(column.helperText, { column })} className={classNames?.helper} />\n </span>\n )\n : undefined;\n const sortable = Boolean(column.sortable);\n const handleSort = sortable && onSort\n ? () => onSort(column.key, column)\n : undefined;\n\n return (\n <BaseTableHead\n appearance={appearance}\n key={column.key}\n columnId={column.key}\n align={column.align}\n icon={renderColumnHeader ? undefined : columnIcon}\n label={headerContent}\n description={renderColumnHeader ? undefined : formatLabel(column.description, { column })}\n meta={renderColumnHeader ? undefined : formatLabel(column.meta, { column })}\n actions={renderColumnHeader ? undefined : column.actions}\n trailing={headerTrailing}\n sortable={sortable}\n sortDirection={column.sortDirection}\n sortLabel={column.sortLabel}\n onSort={handleSort}\n draggable={column.draggable}\n dragLabel={column.dragLabel}\n resizable={column.resizable}\n resizeLabel={column.resizeLabel}\n width={column.width ?? defaultColumnWidth}\n minWidth={typeof column.minWidth === 'number' ? column.minWidth : undefined}\n maxWidth={typeof column.maxWidth === 'number' ? column.maxWidth : undefined}\n className={cn(\n 'sticky top-0 z-20 h-auto whitespace-nowrap bg-card/95 px-4 py-3 font-medium backdrop-blur-sm supports-[backdrop-filter]:bg-card/90',\n stickyFirstColumn && columnIndex === 0 && 'left-0 z-30 shadow-[1px_0_0_0_hsl(var(--border)/0.35)]',\n column.compactHeaderClassName,\n column.headerClassName,\n column.renderType === 'icon' && 'pl-3 pr-1',\n followsRecordIcon && 'pl-2',\n classNames?.headerCell,\n )}\n style={{\n minWidth: typeof column.minWidth === 'string' ? column.minWidth : undefined,\n maxWidth: typeof column.maxWidth === 'string' ? column.maxWidth : undefined,\n }}\n />\n );\n })}\n </BaseTableRow>\n </BaseTableHeader>\n <BaseTableBody appearance={appearance} className={cn('divide-y divide-border/35 dark:divide-border/30', classNames?.body)}>\n {rows.length ? rows.map((row, rowIndex) => {\n const key = getRowKey(row, rowIndex);\n const disabled = isDisabled(row, rowIndex);\n const selectionKey = getRowSelectionKey(row, rowIndex);\n const selected = Boolean(resolvedSelectedKey && String(selectionKey) === String(resolvedSelectedKey));\n const resolvedRowClassName = typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName;\n\n return (\n <BaseTableRow\n appearance={appearance}\n key={key}\n interactive={Boolean(onRowClick) && !disabled}\n selected={selected}\n disabled={disabled}\n onClick={() => {\n if (!disabled) {\n onRowClick?.(row, rowIndex);\n }\n }}\n className={cn(\n onRowClick && !disabled ? 'cursor-pointer' : 'cursor-default',\n selected ? 'bg-primary/10 hover:bg-primary/15' : disabled ? '' : 'hover:bg-muted/25 dark:hover:bg-muted/15',\n classNames?.row,\n resolvedRowClassName,\n )}\n >\n {orderedColumns.map((column, columnIndex) => {\n const shouldWrap = isAction(column) || column.wrap === true;\n const previousColumn = orderedColumns[columnIndex - 1];\n const followsRecordIcon = previousColumn?.renderType === 'icon' && column.key === resolvedActivePrimaryColumn?.key;\n\n return (\n <BaseTableCell\n appearance={appearance}\n key={`${key}-${column.key}`}\n align={column.align}\n className={cn(\n shouldWrap ? 'align-top whitespace-normal' : 'whitespace-nowrap',\n 'px-4 py-3 text-muted-foreground',\n !shouldWrap && 'overflow-hidden text-ellipsis',\n stickyFirstColumn && columnIndex === 0 && 'sticky left-0 z-10 bg-card/95 text-foreground shadow-[1px_0_0_0_hsl(var(--border)/0.3)]',\n column.compactCellClassName,\n column.cellClassName,\n column.renderType === 'icon' && 'pl-3 pr-1',\n followsRecordIcon && 'pl-2',\n classNames?.cell,\n )}\n >\n {renderValue(column, row, {\n row,\n rowIndex,\n column,\n columnIndex,\n compact: true,\n surface: 'list',\n })}\n </BaseTableCell>\n );\n })}\n </BaseTableRow>\n );\n }) : (\n <BaseTableEmpty\n appearance={appearance}\n colSpan={Math.max(orderedColumns.length, 1)}\n classNames={{ cell: 'px-4 py-10 text-center text-sm text-muted-foreground' }}\n >\n {emptyState}\n </BaseTableEmpty>\n )}\n </BaseTableBody>\n </BaseTable>\n </div>\n {footer ? (\n <div className={cn('border-t border-border/40 px-4 py-2 text-[11px] text-muted-foreground dark:border-border/30', classNames?.footer)}>\n {footer}\n </div>\n ) : null}\n </BaseTableContainer>\n );\n}\n","import {\n type CSSProperties,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport {\n BaseContextMenu,\n BaseContextMenuContent,\n BaseContextMenuItem,\n BaseContextMenuLabel,\n BaseContextMenuSeparator,\n BaseContextMenuTrigger,\n} from '../base/BaseContextMenu';\nimport {\n BaseTable,\n BaseTableBody,\n BaseTableCell,\n BaseTableContainer,\n BaseTableEmpty,\n BaseTableHead,\n BaseTableHeader,\n BaseTableRow,\n} from '../base/BaseTable';\nimport type {\n BaseAppearance,\n BaseTableColumnOrderChangeDetail,\n BaseTableColumnSizeChangeDetail,\n BaseTableColumnSizes,\n BaseTableSortDirection,\n} from '../base/types';\nimport { cn, hasRenderableNode } from '../base/utils';\n\nexport interface InteractiveTableColumn {\n key: string;\n label?: ReactNode;\n description?: ReactNode;\n align?: 'left' | 'center' | 'right';\n width?: number | string;\n minWidth?: number;\n maxWidth?: number;\n sortable?: boolean;\n sortDirection?: BaseTableSortDirection;\n sortLabel?: string;\n draggable?: boolean;\n resizable?: boolean;\n className?: string;\n headerClassName?: string;\n cellClassName?: string;\n wrap?: boolean;\n [key: string]: any;\n}\n\nexport interface InteractiveTableClassNames {\n root?: string;\n header?: string;\n headerLeading?: string;\n headerTitle?: string;\n headerDescription?: string;\n headerActions?: string;\n scrollArea?: string;\n table?: string;\n tableHeader?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string;\n pinnedTopRow?: string;\n cell?: string;\n empty?: string;\n}\n\nexport interface InteractiveTableRenderContext<Row = any> {\n row: Row;\n rowIndex: number;\n column: InteractiveTableColumn;\n columnIndex: number;\n isPinnedTopRow: boolean;\n}\n\nexport interface InteractiveTableHeaderContext<Row = any> {\n column: InteractiveTableColumn;\n columnIndex: number;\n columns: InteractiveTableColumn[];\n rows: Row[];\n}\n\nexport interface InteractiveTableRowState {\n disabled?: boolean;\n pending?: boolean;\n saving?: boolean;\n selected?: boolean;\n}\n\nexport interface InteractiveTableHeaderProps {\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n resetColumnSizesLabel?: ReactNode;\n}\n\nexport interface InteractiveTableColumnMenuLabels {\n columnActions?: ReactNode;\n freezeColumn?: ReactNode;\n freezeEndColumn?: ReactNode;\n unfreezeColumn?: ReactNode;\n unfreezeEndColumn?: ReactNode;\n unfreezeAllColumns?: ReactNode;\n resetColumnWidth?: ReactNode;\n frozenColumnTitle?: string;\n}\n\nexport interface InteractiveTableProps<Row = any, PinnedTopRow = Row> {\n rows?: Row[];\n columns?: InteractiveTableColumn[];\n pinnedTopRows?: PinnedTopRow[];\n getRowKey?: (row: Row, rowIndex: number) => string | number;\n getPinnedTopRowKey?: (row: PinnedTopRow, rowIndex: number) => string | number;\n renderCell?: (column: InteractiveTableColumn, row: Row, context: InteractiveTableRenderContext<Row>) => ReactNode;\n renderPinnedTopCell?: (\n column: InteractiveTableColumn,\n row: PinnedTopRow,\n context: InteractiveTableRenderContext<PinnedTopRow>,\n ) => ReactNode;\n renderColumnHeader?: (column: InteractiveTableColumn, context: InteractiveTableHeaderContext<Row>) => ReactNode;\n onRowClick?: (row: Row, rowIndex: number) => void;\n getRowState?: (row: Row, rowIndex: number) => InteractiveTableRowState | undefined;\n rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n pinnedTopRowClassName?: string | ((row: PinnedTopRow, rowIndex: number) => string | undefined);\n emptyState?: ReactNode;\n header?: InteractiveTableHeaderProps;\n showResetColumnSizes?: boolean;\n columnMenuLabels?: InteractiveTableColumnMenuLabels;\n columnStorageKey?: string;\n columnOrder?: string[];\n columnSizes?: BaseTableColumnSizes;\n defaultColumnSizes?: BaseTableColumnSizes;\n columnDragEnabled?: boolean;\n columnResizeEnabled?: boolean;\n frozenColumnCount?: number;\n frozenEndColumnCount?: number;\n tableMinWidth?: number;\n bodyMaxHeight?: number | string;\n appearance?: BaseAppearance;\n className?: string;\n tableClassName?: string;\n classNames?: InteractiveTableClassNames;\n style?: CSSProperties;\n onColumnOrderChange?: (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => void;\n onColumnSizeChange?: (columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => void;\n onResetColumnSizes?: (nextSizes: BaseTableColumnSizes) => void;\n onFrozenColumnCountChange?: (nextCount: number) => void;\n onFrozenEndColumnCountChange?: (nextCount: number) => void;\n onSort?: (columnKey: string, column: InteractiveTableColumn) => void;\n}\n\nexport interface InteractiveTableEditableTextCellProps {\n value?: string | null;\n placeholder?: string;\n disabled?: boolean;\n multiline?: boolean;\n commitOnBlur?: boolean;\n className?: string;\n inputClassName?: string;\n onCommit?: (value: string) => void | Promise<void>;\n}\n\nexport interface InteractiveTableReadonlyCellProps {\n children?: ReactNode;\n mono?: boolean;\n className?: string;\n}\n\nexport interface InteractiveTableSelectOption<T extends string = string> {\n value: T;\n label: string;\n}\n\nexport interface InteractiveTableSelectCellProps<T extends string = string> {\n value: T;\n options: Array<InteractiveTableSelectOption<T>>;\n disabled?: boolean;\n ariaLabel: string;\n children: ReactNode;\n className?: string;\n onChange?: (nextValue: T) => void;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n return row?.id ?? row?.key ?? rowIndex;\n}\n\nfunction getColumnDefaultSize(column: InteractiveTableColumn) {\n if (typeof column.width === 'number') return column.width;\n if (typeof column.minWidth === 'number') return column.minWidth;\n return 160;\n}\n\nfunction buildDefaultColumnSizes(columns: InteractiveTableColumn[], explicit?: BaseTableColumnSizes) {\n return columns.reduce<BaseTableColumnSizes>((acc, column) => {\n acc[column.key] = explicit?.[column.key] ?? getColumnDefaultSize(column);\n return acc;\n }, {});\n}\n\nfunction loadStoredColumnSizes(storageKey: string | undefined, defaults: BaseTableColumnSizes) {\n if (!storageKey || !isBrowser()) return defaults;\n\n try {\n const parsed = JSON.parse(window.localStorage.getItem(storageKey) || '{}');\n return Object.keys(defaults).reduce<BaseTableColumnSizes>((acc, key) => {\n const value = Number(parsed?.[key]);\n acc[key] = Number.isFinite(value) ? value : defaults[key];\n return acc;\n }, {});\n } catch {\n return defaults;\n }\n}\n\nfunction persistColumnSizes(storageKey: string | undefined, sizes: BaseTableColumnSizes) {\n if (!storageKey || !isBrowser()) return;\n window.localStorage.setItem(storageKey, JSON.stringify(sizes));\n}\n\nfunction getFrozenColumnStorageKey(storageKey: string | undefined) {\n return storageKey ? `${storageKey}.frozenColumnCount` : undefined;\n}\n\nfunction getFrozenEndColumnStorageKey(storageKey: string | undefined) {\n return storageKey ? `${storageKey}.frozenEndColumnCount` : undefined;\n}\n\nfunction clampFrozenColumnCount(count: number, columnCount: number) {\n if (!Number.isFinite(count)) return 0;\n return Math.max(0, Math.min(Math.round(count), columnCount));\n}\n\nfunction normalizeFrozenColumnCounts(startCount: number, endCount: number, columnCount: number) {\n const normalizedStartCount = clampFrozenColumnCount(startCount, columnCount);\n const normalizedEndCount = clampFrozenColumnCount(endCount, Math.max(0, columnCount - normalizedStartCount));\n return {\n startCount: normalizedStartCount,\n endCount: normalizedEndCount,\n };\n}\n\nfunction loadStoredFrozenColumnCount(\n storageKey: string | undefined,\n defaultCount: number,\n columnCount: number,\n) {\n const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return fallback;\n\n try {\n const storedValue = window.localStorage.getItem(frozenStorageKey);\n if (storedValue === null) return fallback;\n const value = Number(storedValue);\n return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction persistFrozenColumnCount(storageKey: string | undefined, count: number) {\n const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return;\n window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction loadStoredFrozenEndColumnCount(\n storageKey: string | undefined,\n defaultCount: number,\n columnCount: number,\n) {\n const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return fallback;\n\n try {\n const storedValue = window.localStorage.getItem(frozenStorageKey);\n if (storedValue === null) return fallback;\n const value = Number(storedValue);\n return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction persistFrozenEndColumnCount(storageKey: string | undefined, count: number) {\n const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return;\n window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n const validColumnKeys = new Set(columnKeys);\n const orderedKeys = (columnOrder || []).filter((columnKey) => validColumnKeys.has(columnKey));\n const orderedKeySet = new Set(orderedKeys);\n const remainingKeys = columnKeys.filter((columnKey) => !orderedKeySet.has(columnKey));\n return [...orderedKeys, ...remainingKeys];\n}\n\nfunction getOrderedColumns(columns: InteractiveTableColumn[], columnOrder?: string[]) {\n const normalizedOrder = normalizeColumnOrder(columns.map((column) => column.key), columnOrder);\n const columnMap = new Map(columns.map((column) => [column.key, column]));\n return normalizedOrder.map((columnKey) => columnMap.get(columnKey)).filter(Boolean) as InteractiveTableColumn[];\n}\n\nfunction getColumnNumericWidth(column: InteractiveTableColumn, columnSizes: BaseTableColumnSizes) {\n const controlledWidth = columnSizes[column.key];\n if (typeof controlledWidth === 'number') return controlledWidth;\n return getColumnDefaultSize(column);\n}\n\nfunction buildFrozenOffsets(\n columns: InteractiveTableColumn[],\n columnSizes: BaseTableColumnSizes,\n frozenColumnCount: number,\n) {\n const offsets = new Map<string, number>();\n let left = 0;\n columns.slice(0, Math.max(0, frozenColumnCount)).forEach((column) => {\n offsets.set(column.key, left);\n left += getColumnNumericWidth(column, columnSizes);\n });\n return offsets;\n}\n\nfunction buildFrozenEndOffsets(\n columns: InteractiveTableColumn[],\n columnSizes: BaseTableColumnSizes,\n frozenEndColumnCount: number,\n) {\n const offsets = new Map<string, number>();\n let right = 0;\n columns.slice(Math.max(0, columns.length - frozenEndColumnCount)).reverse().forEach((column) => {\n offsets.set(column.key, right);\n right += getColumnNumericWidth(column, columnSizes);\n });\n return offsets;\n}\n\nfunction resolveRowClassName<Row>(\n rowClassName: string | ((row: Row, rowIndex: number) => string | undefined) | undefined,\n row: Row,\n rowIndex: number,\n) {\n return typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName;\n}\n\nfunction renderDefaultCell<Row>(column: InteractiveTableColumn, row: Row) {\n const value = (row as any)?.[column.key];\n if (value === undefined || value === null || value === '') return '—';\n return String(value);\n}\n\nfunction InteractiveTableCellContent({\n children,\n wrap,\n}: {\n children: ReactNode;\n wrap?: boolean;\n}) {\n return (\n <div\n className={cn(\n 'min-w-0 max-w-full overflow-auto overscroll-contain [scrollbar-width:thin]',\n wrap ? 'max-h-20 whitespace-pre-wrap break-words leading-5' : 'whitespace-nowrap',\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction PinIcon({ className }: { className?: string }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.75\"\n >\n <path d=\"M5.25 2.75h5.5\" />\n <path d=\"M6.25 2.75v4L4.5 9.25h7L9.75 6.75v-4\" />\n <path d=\"M8 9.25v4\" />\n </svg>\n );\n}\n\nexport function InteractiveTable<Row = any, PinnedTopRow = Row>({\n rows = [],\n columns = [],\n pinnedTopRows = [],\n getRowKey = defaultGetRowKey,\n getPinnedTopRowKey = defaultGetRowKey,\n renderCell,\n renderPinnedTopCell,\n renderColumnHeader,\n onRowClick,\n getRowState,\n rowClassName,\n pinnedTopRowClassName,\n emptyState = '—',\n columnMenuLabels,\n columnStorageKey,\n columnOrder,\n columnSizes,\n defaultColumnSizes,\n columnDragEnabled = false,\n columnResizeEnabled = true,\n frozenColumnCount = 0,\n frozenEndColumnCount = 0,\n tableMinWidth,\n bodyMaxHeight = 'min(60vh, 42rem)',\n appearance,\n className,\n tableClassName,\n classNames,\n style,\n onColumnOrderChange,\n onColumnSizeChange,\n onResetColumnSizes,\n onFrozenColumnCountChange,\n onFrozenEndColumnCountChange,\n onSort,\n}: InteractiveTableProps<Row, PinnedTopRow>) {\n const internalLabels = useMonkeysLocaleMessages().workbench.interactiveTable;\n const columnKeySignature = columns.map((column) => column.key).join('\\u0001');\n const defaultOrder = useMemo(\n () => (columnKeySignature ? columnKeySignature.split('\\u0001') : []),\n [columnKeySignature],\n );\n const defaultSizes = useMemo(\n () => buildDefaultColumnSizes(columns, defaultColumnSizes),\n [columns, defaultColumnSizes],\n );\n const [internalColumnOrder, setInternalColumnOrder] = useState(defaultOrder);\n const [internalColumnSizes, setInternalColumnSizes] = useState<BaseTableColumnSizes>(() => (\n loadStoredColumnSizes(columnStorageKey, defaultSizes)\n ));\n const [internalFrozenColumnCount, setInternalFrozenColumnCount] = useState(() => (\n loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length)\n ));\n const [internalFrozenEndColumnCount, setInternalFrozenEndColumnCount] = useState(() => (\n loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length)\n ));\n\n useEffect(() => {\n setInternalColumnOrder((current) => normalizeColumnOrder(defaultOrder, current));\n }, [defaultOrder]);\n\n useEffect(() => {\n if (columnSizes) return;\n setInternalColumnSizes(loadStoredColumnSizes(columnStorageKey, defaultSizes));\n }, [columnSizes, columnStorageKey, defaultSizes]);\n\n useEffect(() => {\n setInternalFrozenColumnCount(loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length));\n }, [columnStorageKey, columns.length, frozenColumnCount]);\n\n useEffect(() => {\n setInternalFrozenEndColumnCount(loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length));\n }, [columnStorageKey, columns.length, frozenEndColumnCount]);\n\n const resolvedColumnOrder = columnOrder\n ? normalizeColumnOrder(defaultOrder, columnOrder)\n : internalColumnOrder;\n const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n const orderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n const {\n startCount: resolvedFrozenColumnCount,\n endCount: resolvedFrozenEndColumnCount,\n } = normalizeFrozenColumnCounts(internalFrozenColumnCount, internalFrozenEndColumnCount, orderedColumns.length);\n const frozenOffsets = buildFrozenOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenColumnCount);\n const frozenEndOffsets = buildFrozenEndOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenEndColumnCount);\n const resolvedMinWidth = tableMinWidth ?? Math.max(760, orderedColumns.reduce((total, column) => total + getColumnNumericWidth(column, resolvedColumnSizes), 0));\n const labels = {\n columnActions: columnMenuLabels?.columnActions ?? internalLabels.columnActions,\n freezeColumn: columnMenuLabels?.freezeColumn ?? internalLabels.freezeColumn,\n freezeEndColumn: columnMenuLabels?.freezeEndColumn ?? internalLabels.freezeEndColumn,\n unfreezeColumn: columnMenuLabels?.unfreezeColumn ?? internalLabels.unfreezeColumn,\n unfreezeEndColumn:\n columnMenuLabels?.unfreezeEndColumn ?? internalLabels.unfreezeEndColumn,\n unfreezeAllColumns:\n columnMenuLabels?.unfreezeAllColumns ?? internalLabels.unfreezeAllColumns,\n resetColumnWidth:\n columnMenuLabels?.resetColumnWidth ?? internalLabels.resetColumnWidth,\n frozenColumnTitle:\n columnMenuLabels?.frozenColumnTitle ?? internalLabels.frozenColumnTitle,\n };\n\n const handleColumnOrderChange = useCallback((nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n const normalizedOrder = normalizeColumnOrder(defaultOrder, nextOrder);\n if (!columnOrder) {\n setInternalColumnOrder(normalizedOrder);\n }\n onColumnOrderChange?.(normalizedOrder, detail);\n }, [columnOrder, defaultOrder, onColumnOrderChange]);\n\n const handleColumnSizeChange = useCallback((columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => {\n const column = columns.find((item) => item.key === columnId);\n const minWidth = column?.minWidth;\n const maxWidth = column?.maxWidth;\n const nextWidth = Math.max(\n typeof minWidth === 'number' ? minWidth : 0,\n Math.min(width, typeof maxWidth === 'number' ? maxWidth : Number.POSITIVE_INFINITY),\n );\n const nextSizes = {\n ...resolvedColumnSizes,\n [columnId]: nextWidth,\n };\n if (!columnSizes) {\n setInternalColumnSizes(nextSizes);\n }\n persistColumnSizes(columnStorageKey, nextSizes);\n onColumnSizeChange?.(columnId, nextWidth, detail);\n }, [columnSizes, columnStorageKey, columns, onColumnSizeChange, resolvedColumnSizes]);\n\n const handleResetColumnSize = useCallback((column: InteractiveTableColumn) => {\n const nextWidth = defaultSizes[column.key] ?? getColumnDefaultSize(column);\n const previousWidth = getColumnNumericWidth(column, resolvedColumnSizes);\n const nextSizes = {\n ...resolvedColumnSizes,\n [column.key]: nextWidth,\n };\n if (!columnSizes) {\n setInternalColumnSizes(nextSizes);\n }\n persistColumnSizes(columnStorageKey, nextSizes);\n onColumnSizeChange?.(column.key, nextWidth, {\n columnId: column.key,\n previousWidth,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n });\n onResetColumnSizes?.(nextSizes);\n }, [columnSizes, columnStorageKey, defaultSizes, onColumnSizeChange, onResetColumnSizes, resolvedColumnSizes]);\n\n const setFrozenColumnCount = useCallback((nextCount: number) => {\n const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenEndColumnCount));\n setInternalFrozenColumnCount(normalizedCount);\n persistFrozenColumnCount(columnStorageKey, normalizedCount);\n onFrozenColumnCountChange?.(normalizedCount);\n }, [columnStorageKey, onFrozenColumnCountChange, orderedColumns.length, resolvedFrozenEndColumnCount]);\n\n const setFrozenEndColumnCount = useCallback((nextCount: number) => {\n const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenColumnCount));\n setInternalFrozenEndColumnCount(normalizedCount);\n persistFrozenEndColumnCount(columnStorageKey, normalizedCount);\n onFrozenEndColumnCountChange?.(normalizedCount);\n }, [columnStorageKey, onFrozenEndColumnCountChange, orderedColumns.length, resolvedFrozenColumnCount]);\n\n const getFrozenPosition = (columnIndex: number) => {\n if (columnIndex < resolvedFrozenColumnCount) return 'start';\n if (columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount) return 'end';\n return undefined;\n };\n\n const getFrozenClassName = (column: InteractiveTableColumn, columnIndex: number, isHeader = false) => {\n const position = getFrozenPosition(columnIndex);\n if (!position) return undefined;\n return cn(\n 'sticky',\n position === 'start' ? 'shadow-[1px_0_0_0_hsl(var(--border)/0.45)]' : 'shadow-[-1px_0_0_0_hsl(var(--border)/0.45)]',\n isHeader ? 'bg-muted/60' : 'bg-inherit',\n isHeader ? 'z-40' : 'z-20',\n (columnIndex === 0 || columnIndex === orderedColumns.length - 1) && (isHeader ? 'z-50' : 'z-30'),\n );\n };\n\n const getFrozenStyle = (column: InteractiveTableColumn, columnIndex: number): CSSProperties | undefined => {\n const position = getFrozenPosition(columnIndex);\n if (position === 'start') return { left: frozenOffsets.get(column.key) ?? 0 };\n if (position === 'end') return { right: frozenEndOffsets.get(column.key) ?? 0 };\n return undefined;\n };\n\n return (\n <BaseTableContainer\n appearance={appearance}\n className={cn('flex h-full min-h-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-card', classNames?.root, className)}\n style={style}\n >\n <div\n className={cn('min-h-0 flex-1 overflow-auto', classNames?.scrollArea)}\n style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n >\n <BaseTable\n appearance={appearance}\n columnOrder={resolvedColumnOrder}\n columnSizes={resolvedColumnSizes}\n columnDragEnabled={columnDragEnabled}\n columnResizeEnabled={columnResizeEnabled}\n onColumnOrderChange={handleColumnOrderChange}\n onColumnSizeChange={handleColumnSizeChange}\n className={cn('w-full table-fixed text-left text-xs', classNames?.table, tableClassName)}\n style={{ minWidth: resolvedMinWidth }}\n >\n <colgroup>\n {orderedColumns.map((column) => (\n <col\n key={column.key}\n style={{\n width: toCssSize(resolvedColumnSizes[column.key] ?? column.width),\n minWidth: toCssSize(column.minWidth),\n }}\n />\n ))}\n </colgroup>\n <BaseTableHeader appearance={appearance} className={cn('border-b border-border/60 bg-muted/60 text-[11px] font-medium text-muted-foreground', classNames?.tableHeader)}>\n <BaseTableRow appearance={appearance} className={cn('hover:bg-transparent', classNames?.headerRow)}>\n {orderedColumns.map((column, columnIndex) => {\n const headerContent = renderColumnHeader\n ? renderColumnHeader(column, { column, columnIndex, columns: orderedColumns, rows })\n : column.label;\n const sortable = Boolean(column.sortable);\n const handleSort = sortable && onSort\n ? () => onSort(column.key, column)\n : undefined;\n const isFrozenStart = columnIndex < resolvedFrozenColumnCount;\n const isFrozenEnd = columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount;\n const isFrozen = isFrozenStart || isFrozenEnd;\n const isColumnAtDefaultWidth = getColumnNumericWidth(column, resolvedColumnSizes) === (defaultSizes[column.key] ?? getColumnDefaultSize(column));\n\n return (\n <BaseContextMenu key={column.key} modal={false}>\n <BaseContextMenuTrigger asChild appearance={appearance}>\n <BaseTableHead\n appearance={appearance}\n columnId={column.key}\n align={column.align}\n label={headerContent}\n description={column.description}\n trailing={isFrozen ? (\n <span title={labels.frozenColumnTitle} className=\"inline-flex h-5 w-5 items-center justify-center rounded text-primary\">\n <PinIcon className=\"h-3.5 w-3.5\" />\n </span>\n ) : null}\n sortable={sortable}\n sortDirection={column.sortDirection}\n sortLabel={column.sortLabel}\n onSort={handleSort}\n draggable={column.draggable}\n resizable={column.resizable}\n width={column.width}\n minWidth={column.minWidth}\n maxWidth={column.maxWidth}\n className={cn(\n 'sticky top-0 h-9 whitespace-nowrap border-r border-border/50 bg-muted/60 px-2.5 py-2 backdrop-blur',\n getFrozenClassName(column, columnIndex, true),\n column.headerClassName,\n column.className,\n classNames?.headerCell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n />\n </BaseContextMenuTrigger>\n <BaseContextMenuContent appearance={appearance} alignOffset={-4} className=\"min-w-44\">\n <BaseContextMenuLabel appearance={appearance}>\n {labels.columnActions}\n </BaseContextMenuLabel>\n {isFrozen ? (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => {\n if (isFrozenEnd) setFrozenEndColumnCount(orderedColumns.length - columnIndex - 1);\n else setFrozenColumnCount(columnIndex);\n }}\n >\n {isFrozenEnd ? labels.unfreezeEndColumn : labels.unfreezeColumn}\n </BaseContextMenuItem>\n ) : (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => setFrozenColumnCount(columnIndex + 1)}\n >\n {labels.freezeColumn}\n </BaseContextMenuItem>\n )}\n {!isFrozen ? (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => setFrozenEndColumnCount(orderedColumns.length - columnIndex)}\n >\n {labels.freezeEndColumn}\n </BaseContextMenuItem>\n ) : null}\n <BaseContextMenuItem\n appearance={appearance}\n disabled={resolvedFrozenColumnCount === 0 && resolvedFrozenEndColumnCount === 0}\n onSelect={() => {\n setFrozenColumnCount(0);\n setFrozenEndColumnCount(0);\n }}\n >\n {labels.unfreezeAllColumns}\n </BaseContextMenuItem>\n <BaseContextMenuSeparator appearance={appearance} />\n <BaseContextMenuItem\n appearance={appearance}\n disabled={isColumnAtDefaultWidth}\n onSelect={() => handleResetColumnSize(column)}\n >\n {labels.resetColumnWidth}\n </BaseContextMenuItem>\n </BaseContextMenuContent>\n </BaseContextMenu>\n );\n })}\n </BaseTableRow>\n </BaseTableHeader>\n <BaseTableBody appearance={appearance} className={cn('divide-y divide-border/50', classNames?.body)}>\n {pinnedTopRows.map((row, rowIndex) => {\n const key = getPinnedTopRowKey(row, rowIndex);\n const resolvedRowClassName = resolveRowClassName(pinnedTopRowClassName, row, rowIndex);\n return (\n <BaseTableRow\n appearance={appearance}\n key={`pinned-${key}`}\n className={cn('bg-card/95', classNames?.pinnedTopRow, resolvedRowClassName)}\n >\n {orderedColumns.map((column, columnIndex) => (\n <BaseTableCell\n appearance={appearance}\n key={`pinned-${key}-${column.key}`}\n align={column.align}\n className={cn(\n 'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n getFrozenClassName(column, columnIndex),\n column.cellClassName,\n classNames?.cell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n >\n <InteractiveTableCellContent wrap={column.wrap}>\n {renderPinnedTopCell\n ? renderPinnedTopCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: true })\n : renderDefaultCell(column, row)}\n </InteractiveTableCellContent>\n </BaseTableCell>\n ))}\n </BaseTableRow>\n );\n })}\n {rows.length ? rows.map((row, rowIndex) => {\n const key = getRowKey(row, rowIndex);\n const state = getRowState?.(row, rowIndex) || {};\n const resolvedRowClassName = resolveRowClassName(rowClassName, row, rowIndex);\n\n return (\n <BaseTableRow\n appearance={appearance}\n key={key}\n interactive={Boolean(onRowClick) && !state.disabled}\n selected={state.selected}\n disabled={state.disabled}\n onClick={() => {\n if (!state.disabled) onRowClick?.(row, rowIndex);\n }}\n className={cn(\n 'min-h-[52px] bg-card transition-colors',\n state.saving && 'bg-primary/5',\n state.pending && 'opacity-80',\n onRowClick && !state.disabled ? 'cursor-pointer hover:bg-muted/30' : 'hover:bg-muted/30',\n classNames?.row,\n resolvedRowClassName,\n )}\n >\n {orderedColumns.map((column, columnIndex) => (\n <BaseTableCell\n appearance={appearance}\n key={`${key}-${column.key}`}\n align={column.align}\n className={cn(\n 'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n getFrozenClassName(column, columnIndex),\n column.cellClassName,\n classNames?.cell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n >\n <InteractiveTableCellContent wrap={column.wrap}>\n {renderCell\n ? renderCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: false })\n : renderDefaultCell(column, row)}\n </InteractiveTableCellContent>\n </BaseTableCell>\n ))}\n </BaseTableRow>\n );\n }) : pinnedTopRows.length ? null : (\n <BaseTableEmpty\n appearance={appearance}\n colSpan={Math.max(orderedColumns.length, 1)}\n className={classNames?.empty}\n >\n {emptyState}\n </BaseTableEmpty>\n )}\n </BaseTableBody>\n </BaseTable>\n </div>\n </BaseTableContainer>\n );\n}\n\nexport function InteractiveTableEditableTextCell({\n value,\n placeholder,\n disabled,\n multiline = false,\n commitOnBlur = true,\n className,\n inputClassName,\n onCommit,\n}: InteractiveTableEditableTextCellProps) {\n const initialValue = String(value || '');\n const [draft, setDraft] = useState(initialValue);\n\n useEffect(() => {\n setDraft(initialValue);\n }, [initialValue]);\n\n const commit = useCallback(async () => {\n const nextValue = String(draft || '').trim();\n const previousValue = String(initialValue || '').trim();\n if (nextValue === previousValue) return;\n try {\n await onCommit?.(nextValue);\n } catch {\n setDraft(initialValue);\n }\n }, [draft, initialValue, onCommit]);\n\n const controlClassName = cn(\n 'w-full resize-none rounded-sm border border-transparent bg-transparent px-1.5 py-1 text-xs text-foreground outline-none transition-colors',\n 'placeholder:text-muted-foreground/70 hover:border-border/60 hover:bg-background focus:border-primary/45 focus:bg-background',\n multiline ? 'min-h-[42px] leading-5' : 'h-8',\n disabled && 'cursor-not-allowed text-muted-foreground hover:border-transparent hover:bg-transparent',\n inputClassName,\n );\n\n if (multiline) {\n return (\n <textarea\n className={cn(controlClassName, className)}\n disabled={disabled}\n value={draft}\n placeholder={placeholder}\n onChange={(event) => setDraft(event.target.value)}\n onBlur={() => {\n if (commitOnBlur) void commit();\n }}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.currentTarget.blur();\n }\n if (event.key === 'Escape') {\n setDraft(initialValue);\n event.currentTarget.blur();\n }\n }}\n />\n );\n }\n\n return (\n <input\n className={cn(controlClassName, className)}\n disabled={disabled}\n value={draft}\n placeholder={placeholder}\n onChange={(event) => setDraft(event.target.value)}\n onBlur={() => {\n if (commitOnBlur) void commit();\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') event.currentTarget.blur();\n if (event.key === 'Escape') {\n setDraft(initialValue);\n event.currentTarget.blur();\n }\n }}\n />\n );\n}\n\nexport function InteractiveTableReadonlyCell({\n children,\n mono = false,\n className,\n}: InteractiveTableReadonlyCellProps) {\n return (\n <div className={cn('min-w-0 text-xs text-muted-foreground', mono && 'font-mono', className)}>\n {hasRenderableNode(children) ? children : '—'}\n </div>\n );\n}\n\nexport function InteractiveTableSelectCell<T extends string = string>({\n value,\n options,\n disabled,\n ariaLabel,\n children,\n className,\n onChange,\n}: InteractiveTableSelectCellProps<T>) {\n return (\n <div className={cn('relative flex w-full items-center', className)}>\n {children}\n <select\n aria-label={ariaLabel}\n disabled={disabled}\n value={value}\n onChange={(event) => onChange?.(event.target.value as T)}\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../base/utils';\n\nconst imageExtPattern = /\\.(png|jpe?g|webp|gif|svg|bmp|avif)$/i;\nconst audioExtPattern = /\\.(wav|mp3|ogg|m4a|flac|aac)$/i;\n\nexport interface WorkbenchGalleryColumn {\n key: string;\n label?: ReactNode;\n renderType?: string;\n type?: string;\n wrap?: boolean;\n [key: string]: any;\n}\n\nconst isLikelyUrl = (value: unknown) => /^https?:\\/\\//i.test(String(value || ''));\nconst getColumnRenderKind = (column: WorkbenchGalleryColumn | undefined) => String(column?.renderType || column?.type || '').toLowerCase();\nconst isImageLikeValue = (value: unknown) => String(value || '').startsWith('data:image/') || imageExtPattern.test(String(value || ''));\nconst isAudioLikeValue = (value: unknown) => String(value || '').startsWith('data:audio/') || audioExtPattern.test(String(value || ''));\nconst escapeSvgText = (value: unknown) => String(value || '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n\nexport const getDefaultGalleryFieldValue = (column?: WorkbenchGalleryColumn, row?: any) => {\n if (!column) return null;\n return row?.[column.key] ?? null;\n};\n\nexport const getDefaultGalleryDisplayText = (value: unknown) => {\n if (value === null || value === undefined || value === '') return '—';\n if (Array.isArray(value)) {\n const parts = value.map((item) => {\n if (typeof item === 'string') return item;\n if (!item || typeof item !== 'object') return '';\n const objectItem = item as Record<string, any>;\n return objectItem.text || objectItem.label || objectItem.title || objectItem.display || objectItem.value || objectItem.recordId || '';\n }).filter(Boolean);\n return parts.join(' · ') || '—';\n }\n if (typeof value === 'object') {\n const objectValue = value as Record<string, any>;\n return String(objectValue.text || objectValue.label || objectValue.title || objectValue.display || objectValue.value || '—');\n }\n return String(value);\n};\n\nexport const isDefaultGalleryImageField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n getColumnRenderKind(column) === 'image' || isImageLikeValue(value)\n);\n\nexport const isDefaultGalleryAudioField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n getColumnRenderKind(column) === 'audio' || isAudioLikeValue(value)\n);\n\nexport const getDefaultGalleryImagePreviewSrc = (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => {\n if (isLikelyUrl(value) || String(value || '').startsWith('data:image/')) return String(value);\n const title = escapeSvgText(value || columnLabel || rowId || '');\n const titleText = title\n ? `<text x='68' y='450' fill='white' font-family='Inter, Arial' font-size='52' font-weight='700'>${title}</text>`\n : '';\n const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 960 540'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%' stop-color='#0f172a'/><stop offset='55%' stop-color='#1d4ed8'/><stop offset='100%' stop-color='#14b8a6'/></linearGradient></defs><rect width='960' height='540' fill='url(#g)'/><g opacity='0.28'><circle cx='780' cy='130' r='150' fill='#67e8f9'/><circle cx='180' cy='430' r='170' fill='#a78bfa'/></g>${titleText}</svg>`;\n return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n};\n\nexport const isDefaultGalleryMediaColumn = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n {\n getFieldValue = getDefaultGalleryFieldValue,\n shouldEnhanceMultimodal = true,\n isImageField = isDefaultGalleryImageField,\n isAudioField = isDefaultGalleryAudioField,\n }: {\n getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n shouldEnhanceMultimodal?: boolean;\n isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n } = {},\n) => {\n if (!column || !shouldEnhanceMultimodal) return false;\n const value = getFieldValue(column, row);\n return isImageField(column, value) || isAudioField(column, value);\n};\n\nexport const isDefaultGalleryTitleCandidate = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n if (!column || column.renderType === 'icon') return false;\n return !isMediaColumn(column, row);\n};\n\nexport const isDefaultGallerySummaryCandidate = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n if (!column || column.renderType === 'icon') return false;\n return !isMediaColumn(column, row);\n};\n\nexport const renderDefaultGalleryFieldValue = (\n column: WorkbenchGalleryColumn,\n row: any,\n {\n compact = false,\n getFieldValue = getDefaultGalleryFieldValue,\n getDisplayText = getDefaultGalleryDisplayText,\n }: {\n compact?: boolean;\n getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n getDisplayText?: (value: unknown) => ReactNode;\n } = {},\n) => {\n const value = getFieldValue(column, row);\n return (\n <span className={cn('leading-relaxed', compact && column?.wrap === true && 'line-clamp-2 block')}>\n {getDisplayText(value)}\n </span>\n );\n};\n","import {\n type ComponentType,\n type ReactNode,\n} from 'react';\n\nimport { cn, hasRenderableNode } from '../base/utils';\nimport {\n getDefaultGalleryDisplayText,\n getDefaultGalleryFieldValue,\n getDefaultGalleryImagePreviewSrc,\n isDefaultGalleryAudioField,\n isDefaultGalleryImageField,\n isDefaultGalleryMediaColumn,\n isDefaultGallerySummaryCandidate,\n isDefaultGalleryTitleCandidate,\n renderDefaultGalleryFieldValue,\n type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\nimport {\n getWorkbenchIconComponent,\n renderWorkbenchIcon,\n} from './workbenchIconUtils';\n\nexport interface WorkbenchGalleryRecordVisual {\n Icon?: ComponentType<{ className?: string }> | ReactNode;\n icon?: ComponentType<{ className?: string }> | ReactNode;\n chipClassName?: string;\n iconClassName?: string;\n label?: ReactNode;\n title?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchGalleryLabels {\n fieldCount?: (count: number) => ReactNode;\n coverOnlyHint?: ReactNode;\n}\n\nexport interface WorkbenchGalleryCardProps<Row = any> {\n row: Row;\n columns: WorkbenchGalleryColumn[];\n onClick?: () => void;\n isSelected?: boolean;\n isMasonry?: boolean;\n galleryFieldKey?: string;\n galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n galleryBentoColumns?: 1 | 2 | 3 | number;\n galleryDetailVisibility?: 'all' | 'limit' | string;\n galleryDetailLimit?: number | string;\n shouldEnhanceMultimodal?: boolean;\n getFieldValue?: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n isMediaColumn?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isTitleCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isSummaryCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n getDisplayText?: (value: unknown) => ReactNode;\n renderFieldValue?: (\n column: WorkbenchGalleryColumn,\n row: Row,\n context: { compact?: boolean; surface?: string },\n ) => ReactNode;\n getImagePreviewSrc?: (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => string;\n isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n AudioPlayerComponent?: ComponentType<{ filename: string }>;\n cardVariant?: 'default' | 'image-only' | 'preview-only' | 'chromatic-bento' | string;\n renderPreview?: (context: WorkbenchGalleryCardRenderContext<Row>) => ReactNode;\n renderMeta?: (context: WorkbenchGalleryCardMetaContext<Row>) => ReactNode;\n renderLeadingVisual?: (context: WorkbenchGalleryCardMetaContext<Row> & { iconVisual?: WorkbenchGalleryRecordVisual | null }) => ReactNode;\n resolveRecordVisual?: (value: unknown, row: Row, iconColumn?: WorkbenchGalleryColumn) => WorkbenchGalleryRecordVisual | null | undefined;\n hiddenDetailFieldKeys?: string[];\n labels?: WorkbenchGalleryLabels;\n formatLabel?: (value: ReactNode, context?: { column?: WorkbenchGalleryColumn }) => ReactNode;\n className?: string;\n}\n\nexport interface WorkbenchGalleryCardRenderContext<Row = any> {\n row: Row;\n mediaColumn?: WorkbenchGalleryColumn | null;\n mediaValue: unknown;\n isImageMedia: boolean;\n isAudioMedia: boolean;\n iconVisual?: WorkbenchGalleryRecordVisual | null;\n IconComponent?: ComponentType<{ className?: string }> | null;\n previewClassName: string;\n}\n\nexport interface WorkbenchGalleryCardMetaContext<Row = any> {\n row: Row;\n contentColumns: WorkbenchGalleryColumn[];\n detailColumns: WorkbenchGalleryColumn[];\n titleColumn?: WorkbenchGalleryColumn | null;\n summaryColumn?: WorkbenchGalleryColumn | null;\n getDisplayText: (value: unknown) => ReactNode;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n}\n\nconst getDefaultGalleryDetailLimit = (density?: string) => {\n if (density === 'compact') return 2;\n if (density === 'detailed') return 6;\n return 4;\n};\n\nconst getNormalizedGalleryBentoColumns = (columns: unknown, density?: string) => {\n if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n return density === 'detailed' ? 1 : 2;\n};\n\nconst getNormalizedGalleryDetailLimit = ({\n density,\n visibility,\n limit,\n}: {\n density?: string;\n visibility?: string;\n limit?: number | string;\n}) => {\n if (visibility === 'all') return Number.POSITIVE_INFINITY;\n const parsedLimit = Number.parseInt(String(limit), 10);\n if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n return getDefaultGalleryDetailLimit(density);\n};\n\nconst getGalleryCardPaddingClassName = (density?: string) => {\n if (density === 'compact') return 'p-3';\n if (density === 'detailed') return 'p-4';\n return 'p-3.5';\n};\n\nconst getGalleryPreviewClassName = (density?: string, isMasonry?: boolean) => {\n if (isMasonry) return 'h-auto w-full object-cover';\n if (density === 'compact') return 'h-32 w-full object-cover';\n if (density === 'detailed') return 'h-48 w-full object-cover';\n return 'h-40 w-full object-cover';\n};\n\nconst getGalleryDetailGridClassName = (columns: number) => {\n if (columns === 1) return 'grid-cols-1';\n if (columns === 3) return 'grid-cols-1 sm:grid-cols-2 2xl:grid-cols-3';\n return 'grid-cols-1 sm:grid-cols-2';\n};\n\nfunction getIconComponent(icon: WorkbenchGalleryRecordVisual['Icon']) {\n return getWorkbenchIconComponent(icon) as ComponentType<{ className?: string }> | null;\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n return value;\n}\n\nfunction getLabelText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') return String(value);\n return '';\n}\n\nexport function WorkbenchGalleryCard<Row = any>({\n row,\n columns,\n onClick = () => {},\n isSelected = false,\n isMasonry = false,\n galleryFieldKey = 'auto',\n galleryDensity = 'comfortable',\n galleryBentoColumns,\n galleryDetailVisibility = 'limit',\n galleryDetailLimit,\n shouldEnhanceMultimodal = true,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n renderFieldValue,\n getImagePreviewSrc,\n isImageField,\n isAudioField,\n AudioPlayerComponent,\n cardVariant = 'default',\n renderPreview,\n renderMeta,\n renderLeadingVisual,\n resolveRecordVisual,\n hiddenDetailFieldKeys = [],\n labels,\n formatLabel = defaultFormatLabel,\n className,\n}: WorkbenchGalleryCardProps<Row>) {\n const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n const resolvedGetImagePreviewSrc = getImagePreviewSrc || getDefaultGalleryImagePreviewSrc;\n const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGalleryMediaColumn(column, candidateRow, {\n getFieldValue: resolvedGetFieldValue as any,\n shouldEnhanceMultimodal,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n })\n ));\n const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGalleryTitleCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGallerySummaryCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, candidateRow: Row, { compact } = {}) => (\n renderDefaultGalleryFieldValue(column, candidateRow, {\n compact,\n getFieldValue: resolvedGetFieldValue as any,\n getDisplayText: resolvedGetDisplayText,\n })\n ));\n const isPreviewOnly = cardVariant === 'preview-only';\n const isImageOnly = cardVariant === 'image-only';\n const isChromaticBento = cardVariant === 'chromatic-bento';\n const selectedGalleryColumn = galleryFieldKey !== 'auto'\n ? columns.find((column) => column.key === galleryFieldKey && resolvedIsMediaColumn(column, row))\n : null;\n const mediaColumn = selectedGalleryColumn || (shouldEnhanceMultimodal ? columns.find((column) => resolvedIsMediaColumn(column, row)) : null);\n const iconColumn = columns.find((column) => column.renderType === 'icon');\n const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)[iconColumn.key], row, iconColumn) : null;\n const IconComponent = getIconComponent(iconVisual?.Icon || iconVisual?.icon);\n const mediaValue = mediaColumn ? resolvedGetFieldValue(mediaColumn, row) : null;\n const isImageMedia = mediaColumn ? resolvedIsImageField(mediaColumn, mediaValue) : false;\n const isAudioMedia = mediaColumn ? resolvedIsAudioField(mediaColumn, mediaValue) : false;\n const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n const titleCandidates = contentColumns.filter((column) => {\n if (!column || resolvedIsMediaColumn(column, row) || !resolvedIsTitleCandidate(column, row)) return false;\n const value = resolvedGetFieldValue(column, row);\n return !(value === null || value === undefined || value === '');\n });\n const titleColumn = titleCandidates[0] || null;\n const titleText = titleColumn ? resolvedGetDisplayText(resolvedGetFieldValue(titleColumn, row)) : resolvedGetDisplayText((row as any).linkKey || (row as any).id);\n const summaryColumn = contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || resolvedIsMediaColumn(column, row) || !resolvedIsSummaryCandidate(column, row)) return false;\n const summaryText = String(resolvedGetDisplayText(resolvedGetFieldValue(column, row)));\n return summaryText !== '—' && summaryText.length > 12;\n }) || contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || resolvedIsMediaColumn(column, row) || !resolvedIsSummaryCandidate(column, row)) return false;\n const fallbackText = String(resolvedGetDisplayText(resolvedGetFieldValue(column, row)));\n return fallbackText !== '—';\n }) || null;\n const summaryText = summaryColumn ? resolvedGetDisplayText(resolvedGetFieldValue(summaryColumn, row)) : '';\n const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n const detailColumns = contentColumns\n .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key));\n const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n density: galleryDensity,\n visibility: galleryDetailVisibility,\n limit: galleryDetailLimit,\n });\n const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n ? detailColumns.slice(0, resolvedDetailLimit)\n : detailColumns;\n const isDetailedCard = galleryDensity === 'detailed';\n const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n const cardPaddingClassName = getGalleryCardPaddingClassName(galleryDensity);\n const detailGridClassName = getGalleryDetailGridClassName(resolvedBentoColumns);\n const previewClassName = isImageOnly\n ? 'block h-auto w-full transition-transform duration-500 group-hover:scale-[1.02]'\n : getGalleryPreviewClassName(galleryDensity, isMasonry);\n const customPreview = typeof renderPreview === 'function'\n ? renderPreview({\n row,\n mediaColumn,\n mediaValue,\n isImageMedia,\n isAudioMedia,\n iconVisual,\n IconComponent,\n previewClassName,\n })\n : null;\n const metaContent = typeof renderMeta === 'function'\n ? renderMeta({\n row,\n contentColumns,\n detailColumns,\n titleColumn,\n summaryColumn,\n getDisplayText: resolvedGetDisplayText,\n getFieldValue: resolvedGetFieldValue as any,\n })\n : null;\n const customLeadingVisual = typeof renderLeadingVisual === 'function'\n ? renderLeadingVisual({\n row,\n contentColumns,\n detailColumns,\n titleColumn,\n summaryColumn,\n iconVisual,\n getDisplayText: resolvedGetDisplayText,\n getFieldValue: resolvedGetFieldValue as any,\n })\n : null;\n const defaultLeadingVisual = !customLeadingVisual && iconVisual ? (\n <div className={cn('flex h-9 w-9 items-center justify-center rounded-lg border', iconVisual.chipClassName || 'border-primary/20 bg-primary/10 text-primary')}>\n {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-4 w-4', iconVisual.iconClassName || 'text-primary'))}\n </div>\n ) : null;\n const leadingVisual = customLeadingVisual || defaultLeadingVisual;\n const defaultMetaClassName = isChromaticBento\n ? 'shrink-0 rounded-full border border-border/40 bg-muted/25 px-2.5 py-1 text-[10px] text-muted-foreground transition-all duration-300 group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary dark:border-border/35 dark:bg-muted/15'\n : 'shrink-0 rounded-md border border-border/40 bg-muted/25 px-2 py-1 text-[10px] text-muted-foreground dark:border-border/35 dark:bg-muted/15';\n const detailCellClassName = isChromaticBento\n ? 'rounded-xl border border-border/35 bg-muted/20 px-3 py-2.5 transition-all duration-300 group-hover:border-primary/25 group-hover:bg-primary/5 dark:border-border/30 dark:bg-muted/10'\n : 'rounded-lg border border-border/35 bg-muted/20 px-2.5 py-2 dark:border-border/30 dark:bg-muted/10';\n const detailLabelClassName = isChromaticBento\n ? 'text-[10px] uppercase tracking-[0.14em] text-muted-foreground transition-colors duration-300 group-hover:text-foreground'\n : 'text-[10px] uppercase tracking-[0.12em] text-muted-foreground';\n const detailValueClassName = isChromaticBento\n ? 'mt-1.5 text-[11px] text-muted-foreground transition-colors duration-300 group-hover:text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed'\n : 'mt-1.5 text-[11px] text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed';\n const fieldCountLabel = labels?.fieldCount?.(contentColumns.length);\n const coverOnlyHint = labels?.coverOnlyHint;\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-label={getLabelText(titleText)}\n className={cn(\n 'group relative w-full text-left transition-all duration-300',\n isImageOnly\n ? 'overflow-hidden rounded-xl bg-transparent p-0 shadow-none'\n : isPreviewOnly\n ? 'overflow-hidden rounded-3xl bg-transparent p-0'\n : cn('overflow-hidden rounded-xl border', isChromaticBento && 'rounded-3xl shadow-none'),\n !isPreviewOnly && !isImageOnly && cardPaddingClassName,\n !isPreviewOnly && !isImageOnly && (isSelected\n ? (isChromaticBento\n ? 'border-primary/35 bg-background/85 ring-1 ring-primary/20'\n : 'border-primary/40 bg-primary/10 ring-1 ring-primary/30')\n : (isChromaticBento\n ? 'workbench-surface-card hover:-translate-y-1 hover:border-primary/20'\n : 'workbench-surface-card hover:border-primary/30')),\n isPreviewOnly && isSelected && 'ring-1 ring-primary/30',\n isImageOnly && (isSelected ? 'ring-1 ring-primary/30' : 'hover:-translate-y-0.5'),\n isMasonry ? 'block h-full w-full min-w-0' : 'h-full min-w-0',\n className,\n )}\n >\n {isChromaticBento ? (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_top_right,hsl(var(--primary)/0.18),transparent_40%),radial-gradient(circle_at_bottom_left,hsl(var(--accent)/0.18),transparent_45%)] opacity-0 transition-opacity duration-300',\n isSelected ? 'opacity-100' : 'group-hover:opacity-100',\n )}\n />\n ) : null}\n\n <div className=\"relative z-[1]\">\n {customPreview ?? (\n <>\n {isImageMedia && mediaColumn ? (\n <div className={cn(\n 'overflow-hidden bg-card/50',\n isImageOnly\n ? 'rounded-xl bg-transparent'\n : isPreviewOnly\n ? 'rounded-3xl'\n : 'mb-3 rounded-lg border border-border/70',\n )}>\n <img\n src={resolvedGetImagePreviewSrc(mediaValue, (row as any).id, mediaColumn.label)}\n alt={String(mediaValue || mediaColumn.label || '')}\n className={previewClassName}\n loading=\"lazy\"\n referrerPolicy=\"no-referrer\"\n onError={(event) => {\n event.currentTarget.onerror = null;\n event.currentTarget.src = resolvedGetImagePreviewSrc('', (row as any).id, mediaColumn.label);\n }}\n />\n </div>\n ) : null}\n\n {!isImageMedia && iconVisual && isPreviewOnly ? (\n <div className={cn(\n 'flex items-center justify-center',\n isPreviewOnly\n ? cn('rounded-3xl border py-10', iconVisual.chipClassName || 'border-primary/20 bg-primary/5')\n : 'mb-3 h-24 rounded-lg border border-border/60 bg-primary/5',\n )}>\n {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-10 w-10', iconVisual.iconClassName || 'text-primary'))}\n </div>\n ) : null}\n\n {isAudioMedia && AudioPlayerComponent ? (\n <div className={cn(!isPreviewOnly && 'mb-3')}>\n <AudioPlayerComponent filename={String(mediaValue)} />\n </div>\n ) : null}\n </>\n )}\n\n {!isPreviewOnly && !isImageOnly ? (\n <>\n <div className=\"flex items-start gap-3\">\n {leadingVisual ? <div className=\"shrink-0\">{leadingVisual}</div> : null}\n <div className=\"flex min-w-0 flex-1 items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1\">\n <div className={cn(\n 'flex items-center gap-2 text-sm font-semibold',\n isChromaticBento ? 'text-muted-foreground transition-colors duration-300 group-hover:text-foreground' : 'text-foreground',\n )}>\n <span className=\"truncate\">{titleText}</span>\n </div>\n {summaryText && summaryText !== titleText ? (\n <div className={cn(\n 'mt-1 text-[11px] leading-5 text-muted-foreground',\n isDetailedCard ? 'line-clamp-4' : 'line-clamp-2',\n isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n )}>\n {summaryText}\n </div>\n ) : null}\n </div>\n {metaContent ?? (hasRenderableNode(fieldCountLabel) ? (\n <span className={defaultMetaClassName}>\n {fieldCountLabel}\n </span>\n ) : null)}\n </div>\n </div>\n\n {visibleDetailColumns.length > 0 ? (\n <div className={cn('mt-3 grid grid-flow-row gap-2', detailGridClassName)}>\n {visibleDetailColumns.map((column) => (\n <div key={`${(row as any).id || (row as any).linkKey}-${column.key}`} className={detailCellClassName}>\n {column.label ? <div className={detailLabelClassName}>{formatLabel(column.label, { column })}</div> : null}\n <div className={cn(detailValueClassName, !column.label && 'mt-0')}>\n {resolvedRenderFieldValue(column, row, { compact: galleryDensity !== 'detailed', surface: 'gallery' })}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n\n {!summaryText && visibleDetailColumns.length === 0 && hasRenderableNode(coverOnlyHint) ? (\n <div className={cn(\n 'mt-3 text-[11px] text-muted-foreground',\n isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n )}>\n {coverOnlyHint}\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n </button>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nconst DEFAULT_MASONRY_GAP_PX = 12;\nconst DEFAULT_MASONRY_ROW_HEIGHT_PX = 8;\nconst DEFAULT_MASONRY_COLUMN_WIDTH_PX = 280;\nconst DEFAULT_MASONRY_ITEM_HEIGHT_PX = 240;\n\nexport interface WorkbenchMasonryItemSize {\n width?: number | string;\n height?: number | string;\n columnSpan?: number;\n rowSpan?: number;\n}\n\nexport interface WorkbenchMasonryLayoutContext {\n columnCount: number;\n columnSpan?: number;\n columnWidth: number;\n containerWidth: number;\n gap: number;\n itemWidth?: number;\n placementStrategy: 'shelf' | 'dense';\n rowSpan?: number;\n rowHeight: number;\n size?: WorkbenchMasonryItemSize;\n}\n\nexport interface WorkbenchMasonryLayoutProps<Item = any> {\n items?: Item[];\n renderItem: (item: Item, context: WorkbenchMasonryLayoutContext) => ReactNode;\n getItemKey?: (item: Item, index: number) => string | number;\n getItemSize?: (item: Item, context: WorkbenchMasonryLayoutContext) => WorkbenchMasonryItemSize | undefined;\n columnWidth?: number | string;\n gap?: number;\n rowHeight?: number;\n placementStrategy?: 'shelf' | 'dense';\n className?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getRootFontSize(node: Element | null) {\n if (typeof window === 'undefined') return 16;\n const target = node || document.documentElement;\n const parsed = Number.parseFloat(window.getComputedStyle(target).fontSize);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 16;\n}\n\nfunction resolveLengthToPixels(value: number | string | undefined, fallback: number, node: Element | null) {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n if (typeof value !== 'string') return fallback;\n\n const normalized = value.trim().toLowerCase();\n if (!normalized) return fallback;\n\n if (/^\\d+(\\.\\d+)?$/.test(normalized)) {\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n }\n\n if (normalized.endsWith('px')) {\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n }\n\n if (normalized.endsWith('rem')) {\n const parsed = Number.parseFloat(normalized);\n if (!Number.isFinite(parsed) || parsed <= 0) return fallback;\n return parsed * getRootFontSize(node);\n }\n\n return fallback;\n}\n\nfunction areMeasurementMapsEqual(prev: Record<string, number>, next: Record<string, number>) {\n const prevKeys = Object.keys(prev);\n const nextKeys = Object.keys(next);\n if (prevKeys.length !== nextKeys.length) return false;\n\n for (const key of nextKeys) {\n if (prev[key] !== next[key]) return false;\n }\n\n return true;\n}\n\nfunction getMasonryColumnCount({\n containerWidth,\n itemCount,\n targetColumnWidth,\n gap,\n}: {\n containerWidth: number;\n itemCount: number;\n targetColumnWidth: number;\n gap: number;\n}) {\n if (!containerWidth) return 1;\n\n const safeItemCount = Math.max(itemCount, 1);\n const maxCandidate = Math.max(\n 1,\n Math.min(\n safeItemCount,\n Math.ceil((containerWidth + gap) / (Math.max(targetColumnWidth * 0.58, 1) + gap)),\n ),\n );\n\n let bestCount = 1;\n let bestScore = Number.POSITIVE_INFINITY;\n\n for (let candidateCount = 1; candidateCount <= maxCandidate; candidateCount += 1) {\n const actualColumnWidth = (containerWidth - gap * Math.max(candidateCount - 1, 0)) / candidateCount;\n if (!Number.isFinite(actualColumnWidth) || actualColumnWidth <= 0) continue;\n\n const underflowPenalty = Math.max(0, targetColumnWidth * 0.78 - actualColumnWidth);\n const overflowPenalty = Math.max(0, actualColumnWidth - targetColumnWidth * 1.35);\n const candidateScore = Math.abs(actualColumnWidth - targetColumnWidth) + underflowPenalty * 3 + overflowPenalty * 2;\n\n if (candidateScore < bestScore) {\n bestScore = candidateScore;\n bestCount = candidateCount;\n }\n }\n\n return bestCount;\n}\n\nfunction getItemColumnSpan({\n size,\n columnWidth,\n columnCount,\n gap,\n}: {\n size?: WorkbenchMasonryItemSize;\n columnWidth: number;\n columnCount: number;\n gap: number;\n}) {\n if (Number.isFinite(size?.columnSpan) && Number(size?.columnSpan) > 0) {\n return clamp(Math.round(Number(size?.columnSpan)), 1, columnCount);\n }\n\n const itemWidth = resolveLengthToPixels(size?.width, columnWidth, null);\n return clamp(Math.ceil((itemWidth + gap) / (columnWidth + gap)), 1, columnCount);\n}\n\nfunction getItemRowSpan({\n size,\n measuredHeight,\n rowHeight,\n gap,\n}: {\n size?: WorkbenchMasonryItemSize;\n measuredHeight?: number;\n rowHeight: number;\n gap: number;\n}) {\n if (Number.isFinite(size?.rowSpan) && Number(size?.rowSpan) > 0) {\n return Math.max(1, Math.round(Number(size?.rowSpan)));\n }\n\n const itemHeight = Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n ? Number(measuredHeight)\n : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n\n return Math.max(1, Math.ceil((itemHeight + gap) / (rowHeight + gap)));\n}\n\nfunction getResolvedItemHeight({\n size,\n measuredHeight,\n}: {\n size?: WorkbenchMasonryItemSize;\n measuredHeight?: number;\n}) {\n return Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n ? Number(measuredHeight)\n : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n}\n\nexport function WorkbenchMasonryLayout<Item = any>({\n items = [],\n renderItem,\n getItemKey = (item: any, index: number) => item?.id ?? item?.key ?? index,\n getItemSize,\n columnWidth = DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n gap = DEFAULT_MASONRY_GAP_PX,\n rowHeight = DEFAULT_MASONRY_ROW_HEIGHT_PX,\n placementStrategy = 'shelf',\n className,\n}: WorkbenchMasonryLayoutProps<Item>) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const itemNodesRef = useRef(new Map<string, HTMLDivElement>());\n const itemObserverRef = useRef<ResizeObserver | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const [measuredHeights, setMeasuredHeights] = useState<Record<string, number>>({});\n const itemKeys = useMemo(\n () => items.map((item, index) => String(getItemKey(item, index))),\n [getItemKey, items],\n );\n const itemKeysSignature = itemKeys.join('|');\n\n useEffect(() => {\n const node = containerRef.current;\n if (!node) return undefined;\n\n const updateWidth = () => {\n const nextWidth = Math.round(node.getBoundingClientRect().width);\n setContainerWidth((prevWidth) => (prevWidth === nextWidth ? prevWidth : nextWidth));\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => updateWidth());\n observer.observe(node);\n return () => observer.disconnect();\n }\n\n window.addEventListener('resize', updateWidth);\n return () => window.removeEventListener('resize', updateWidth);\n }, []);\n\n useEffect(() => {\n setMeasuredHeights((prev) => {\n const next = Object.fromEntries(\n Object.entries(prev).filter(([key]) => itemKeys.includes(key)),\n );\n\n return areMeasurementMapsEqual(prev, next) ? prev : next;\n });\n }, [itemKeys, itemKeysSignature]);\n\n const resolvedTargetColumnWidth = resolveLengthToPixels(\n columnWidth,\n DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n containerRef.current,\n );\n const isDensePlacement = placementStrategy === 'dense';\n const columnCount = getMasonryColumnCount({\n containerWidth,\n itemCount: items.length,\n targetColumnWidth: resolvedTargetColumnWidth,\n gap,\n });\n const resolvedColumnWidth = containerWidth > 0\n ? (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount\n : resolvedTargetColumnWidth;\n\n const layoutItems = useMemo(() => items.map((item, index) => {\n const key = itemKeys[index];\n const size = typeof getItemSize === 'function'\n ? getItemSize(item, {\n columnCount,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n placementStrategy,\n rowHeight,\n }) || {}\n : {};\n\n return {\n key,\n item,\n size,\n columnSpan: getItemColumnSpan({\n size,\n columnWidth: resolvedColumnWidth,\n columnCount,\n gap,\n }),\n rowSpan: getItemRowSpan({\n size,\n measuredHeight: measuredHeights[key],\n rowHeight,\n gap,\n }),\n };\n }), [\n columnCount,\n containerWidth,\n gap,\n getItemSize,\n itemKeys,\n items,\n measuredHeights,\n placementStrategy,\n resolvedColumnWidth,\n rowHeight,\n ]);\n\n useLayoutEffect(() => {\n const nextMeasurements: Record<string, number> = {};\n\n itemNodesRef.current.forEach((node, key) => {\n const nextHeight = Math.ceil(node.getBoundingClientRect().height);\n if (Number.isFinite(nextHeight) && nextHeight > 0) {\n nextMeasurements[key] = nextHeight;\n }\n });\n\n setMeasuredHeights((prev) => {\n if (!Object.keys(nextMeasurements).length) return prev;\n const merged = { ...prev, ...nextMeasurements };\n return areMeasurementMapsEqual(prev, merged) ? prev : merged;\n });\n }, [columnCount, isDensePlacement, itemKeysSignature, resolvedColumnWidth]);\n\n useEffect(() => {\n if (typeof ResizeObserver !== 'function') return undefined;\n\n const observer = new ResizeObserver((entries) => {\n setMeasuredHeights((prev) => {\n const next = { ...prev };\n let didChange = false;\n\n for (const entry of entries) {\n const key = (entry.target as HTMLElement).dataset.masonryKey;\n if (!key) continue;\n const nextHeight = Math.ceil(entry.contentRect.height);\n if (!Number.isFinite(nextHeight) || nextHeight <= 0 || next[key] === nextHeight) continue;\n next[key] = nextHeight;\n didChange = true;\n }\n\n return didChange ? next : prev;\n });\n });\n\n itemObserverRef.current = observer;\n itemNodesRef.current.forEach((node) => observer.observe(node));\n\n return () => {\n observer.disconnect();\n itemObserverRef.current = null;\n };\n }, [isDensePlacement, itemKeysSignature]);\n\n const registerItemNode = (key: string, node: HTMLDivElement | null) => {\n const currentNodes = itemNodesRef.current;\n const previousNode = currentNodes.get(key);\n\n if (previousNode && previousNode !== node && itemObserverRef.current) {\n itemObserverRef.current.unobserve(previousNode);\n }\n\n if (!node) {\n currentNodes.delete(key);\n return;\n }\n\n node.dataset.masonryKey = key;\n currentNodes.set(key, node);\n\n if (itemObserverRef.current) {\n itemObserverRef.current.observe(node);\n }\n };\n\n if (!isDensePlacement) {\n const orderedLayout = (() => {\n const columnBottoms = Array.from({ length: columnCount }, () => 0);\n let nextColumnIndex = 0;\n let maxBottom = 0;\n\n const positionedItems = layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => {\n const resolvedSpan = clamp(columnSpan, 1, columnCount);\n let startColumn = nextColumnIndex;\n\n if (startColumn + resolvedSpan > columnCount) {\n startColumn = 0;\n }\n\n startColumn = Math.min(startColumn, columnCount - resolvedSpan);\n\n const itemWidth = resolvedColumnWidth * resolvedSpan + gap * Math.max(resolvedSpan - 1, 0);\n const itemHeight = getResolvedItemHeight({\n size,\n measuredHeight: measuredHeights[key],\n });\n const top = Math.max(...columnBottoms.slice(startColumn, startColumn + resolvedSpan));\n const left = startColumn * (resolvedColumnWidth + gap);\n const bottom = top + itemHeight;\n\n for (let columnIndex = startColumn; columnIndex < startColumn + resolvedSpan; columnIndex += 1) {\n columnBottoms[columnIndex] = bottom + gap;\n }\n\n maxBottom = Math.max(maxBottom, bottom);\n nextColumnIndex = startColumn + resolvedSpan;\n\n if (nextColumnIndex >= columnCount) {\n nextColumnIndex = 0;\n }\n\n return {\n key,\n item,\n columnSpan: resolvedSpan,\n itemHeight,\n itemWidth,\n left,\n rowSpan,\n size,\n top,\n };\n });\n\n return {\n containerHeight: Math.max(0, maxBottom),\n positionedItems,\n };\n })();\n\n return (\n <div\n ref={containerRef}\n className={cn('relative w-full', className)}\n style={{ height: `${orderedLayout.containerHeight}px` }}\n >\n {orderedLayout.positionedItems.map(({ key, item, columnSpan, rowSpan, size, itemWidth, left, top }) => {\n const unresolvedSingleColumnWidth = containerWidth <= 0 && columnCount === 1;\n const itemWidthValue = unresolvedSingleColumnWidth ? '100%' : `${itemWidth}px`;\n\n return (\n <div\n key={key}\n className=\"absolute min-w-0\"\n style={{\n left: unresolvedSingleColumnWidth ? 0 : `${left}px`,\n top: `${top}px`,\n width: itemWidthValue,\n maxWidth: itemWidthValue,\n }}\n >\n <div ref={(node) => registerItemNode(key, node)} className=\"min-w-0\">\n {renderItem(item, {\n columnCount,\n columnSpan,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n itemWidth,\n placementStrategy,\n rowSpan,\n rowHeight,\n size,\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={cn('grid w-full items-start', className)}\n style={{\n gap: `${gap}px`,\n gridAutoFlow: 'row dense',\n gridAutoRows: `${rowHeight}px`,\n gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n }}\n >\n {layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => (\n <div\n key={key}\n className=\"min-w-0\"\n style={{\n gridColumn: `span ${columnSpan}`,\n gridRow: `span ${rowSpan}`,\n }}\n >\n <div ref={(node) => registerItemNode(key, node)} className=\"h-full\">\n {renderItem(item, {\n columnCount,\n columnSpan,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n placementStrategy,\n rowSpan,\n rowHeight,\n size,\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '../base/utils';\nimport {\n WorkbenchGalleryCard,\n type WorkbenchGalleryCardProps,\n} from './WorkbenchGalleryCard';\nimport {\n WorkbenchMasonryLayout,\n type WorkbenchMasonryItemSize,\n} from './WorkbenchMasonryLayout';\nimport {\n getDefaultGalleryDisplayText,\n getDefaultGalleryFieldValue,\n isDefaultGalleryAudioField,\n isDefaultGalleryImageField,\n isDefaultGalleryMediaColumn,\n isDefaultGallerySummaryCandidate,\n isDefaultGalleryTitleCandidate,\n type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\n\nconst GALLERY_GRID_GAP_PX = 12;\n\nexport interface WorkbenchGalleryViewProps<Row = any>\n extends Omit<WorkbenchGalleryCardProps<Row>, 'row' | 'columns' | 'onClick' | 'isSelected' | 'isMasonry'> {\n rows?: Row[];\n columns?: WorkbenchGalleryColumn[];\n onRowClick?: (row: Row, rowIndex: number) => void;\n selectedLinkKey?: string;\n selectedRowKey?: string;\n className?: string;\n isMasonry?: boolean;\n galleryLayoutMode?: 'auto' | 'rail' | string;\n galleryRailCardWidth?: number;\n galleryGridColumns?: number | 'auto' | string;\n galleryGridCardWidth?: number | string;\n galleryMasonryColumnWidth?: number | string;\n masonryPlacementStrategy?: 'shelf' | 'dense';\n getMasonryItemSize?: (\n row: Row,\n context: {\n defaultSize: WorkbenchMasonryItemSize;\n columnCount: number;\n columnWidth: number;\n containerWidth: number;\n gap: number;\n placementStrategy: 'shelf' | 'dense';\n rowHeight: number;\n },\n ) => WorkbenchMasonryItemSize | undefined;\n}\n\nfunction getNormalizedGalleryGridCardWidth(cardWidth: unknown) {\n if (typeof cardWidth === 'number' && Number.isFinite(cardWidth) && cardWidth > 0) {\n return `${cardWidth}px`;\n }\n\n if (typeof cardWidth === 'string' && cardWidth.trim()) {\n return cardWidth.trim();\n }\n\n return undefined;\n}\n\nfunction getDefaultGalleryDetailLimit(density?: string) {\n if (density === 'compact') return 2;\n if (density === 'detailed') return 6;\n return 4;\n}\n\nfunction getNormalizedGalleryBentoColumns(columns: unknown, density?: string) {\n if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n return density === 'detailed' ? 1 : 2;\n}\n\nfunction getNormalizedGalleryDetailLimit({\n density,\n visibility,\n limit,\n}: {\n density?: string;\n visibility?: string;\n limit?: number | string;\n}) {\n if (visibility === 'all') return Number.POSITIVE_INFINITY;\n const parsedLimit = Number.parseInt(String(limit), 10);\n if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n return getDefaultGalleryDetailLimit(density);\n}\n\nfunction getGalleryCardWidthMetrics(density?: string) {\n if (density === 'compact') return { min: 220, ideal: 244, max: 268 };\n if (density === 'detailed') return { min: 320, ideal: 372, max: 420 };\n return { min: 260, ideal: 304, max: 348 };\n}\n\nfunction getGalleryCardWidthForColumnCount({\n containerWidth,\n columnCount,\n gap,\n}: {\n containerWidth: number;\n columnCount: number;\n gap: number;\n}) {\n if (!containerWidth || !columnCount) return 0;\n return (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount;\n}\n\nfunction getNormalizedGalleryGridColumns(columns: unknown) {\n if (columns === undefined || columns === null || columns === '' || columns === 'auto') {\n return undefined;\n }\n\n const parsedColumns = Number.parseInt(String(columns), 10);\n if (!Number.isFinite(parsedColumns) || parsedColumns <= 0) return undefined;\n return Math.max(1, Math.min(parsedColumns, 8));\n}\n\nfunction getGalleryGridColumnCount({\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n gap,\n}: {\n containerWidth: number;\n rowCount: number;\n minCardWidth: number;\n idealCardWidth: number;\n maxCardWidth: number;\n gap: number;\n}) {\n if (!containerWidth) return 1;\n\n const safeRowCount = Math.max(rowCount, 1);\n const lowerBound = Math.max(1, Math.ceil((containerWidth + gap) / (maxCardWidth + gap)));\n const upperBound = Math.max(1, Math.floor((containerWidth + gap) / (minCardWidth + gap)));\n const idealCount = Math.max(1, Math.round((containerWidth + gap) / (idealCardWidth + gap)));\n const phantomPenalty = Math.round((idealCardWidth - minCardWidth) / 2) + gap;\n const maxCandidate = Math.max(1, lowerBound, upperBound + 1, idealCount + 1);\n\n let bestCount = 1;\n let bestScore = Number.POSITIVE_INFINITY;\n\n for (let candidateCount = 1; candidateCount <= maxCandidate; candidateCount += 1) {\n const cardWidth = getGalleryCardWidthForColumnCount({ containerWidth, columnCount: candidateCount, gap });\n const overflowPenalty = Math.max(0, cardWidth - maxCardWidth);\n const underflowPenalty = Math.max(0, minCardWidth - cardWidth);\n const idealPenalty = Math.abs(cardWidth - idealCardWidth);\n const phantomColumns = Math.max(0, candidateCount - safeRowCount);\n const candidateScore = overflowPenalty * 3 + underflowPenalty * 2 + idealPenalty + phantomColumns * phantomPenalty;\n\n if (candidateScore < bestScore) {\n bestScore = candidateScore;\n bestCount = candidateCount;\n }\n }\n\n return bestCount;\n}\n\nfunction getGalleryGridLayoutStyle({\n isRailLayout,\n railCardWidth,\n fixedCardWidth,\n fixedColumnCount,\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n}: {\n isRailLayout: boolean;\n railCardWidth: number;\n fixedCardWidth?: string;\n fixedColumnCount?: number;\n containerWidth: number;\n rowCount: number;\n minCardWidth: number;\n idealCardWidth: number;\n maxCardWidth: number;\n}) {\n if (isRailLayout) {\n return { gridAutoColumns: `${railCardWidth}px` };\n }\n\n if (fixedColumnCount) {\n const responsiveColumnCount = containerWidth\n ? Math.max(1, Math.min(\n fixedColumnCount,\n Math.floor((containerWidth + GALLERY_GRID_GAP_PX) / (minCardWidth + GALLERY_GRID_GAP_PX)) || 1,\n ))\n : fixedColumnCount;\n\n return {\n gridTemplateColumns: `repeat(${responsiveColumnCount}, minmax(0, 1fr))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n if (fixedCardWidth) {\n return {\n gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${fixedCardWidth}), ${fixedCardWidth}))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n if (!containerWidth) {\n return {\n gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minCardWidth}px), min(100%, ${maxCardWidth}px)))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n const columnCount = getGalleryGridColumnCount({\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n gap: GALLERY_GRID_GAP_PX,\n });\n\n return {\n gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n}\n\nfunction getGalleryTextLength(value: unknown) {\n if (value === null || value === undefined) return 0;\n const text = String(value).trim();\n return text && text !== '—' ? text.length : 0;\n}\n\nfunction getGalleryFieldText<Row>({\n column,\n row,\n getFieldValue,\n getDisplayText,\n}: {\n column?: WorkbenchGalleryColumn | null;\n row: Row;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n getDisplayText: (value: unknown) => unknown;\n}) {\n if (!column) return '';\n const rawValue = getFieldValue(column, row);\n if (rawValue === null || rawValue === undefined || rawValue === '') return '';\n const textValue = getDisplayText(rawValue);\n return textValue === '—' ? '' : String(textValue);\n}\n\nfunction estimateLineCount({\n text,\n charsPerLine,\n maxLines,\n}: {\n text: unknown;\n charsPerLine: number;\n maxLines: number;\n}) {\n const textLength = getGalleryTextLength(text);\n if (!textLength) return 0;\n return Math.max(1, Math.min(maxLines, Math.ceil(textLength / charsPerLine)));\n}\n\nfunction estimateGalleryDetailCellHeight({\n text,\n density,\n bentoColumns,\n}: {\n text: unknown;\n density?: string;\n bentoColumns: number;\n}) {\n const baseHeight = density === 'detailed' ? 54 : density === 'compact' ? 44 : 48;\n const charsPerLine = bentoColumns === 1\n ? (density === 'detailed' ? 32 : 26)\n : (density === 'detailed' ? 18 : 15);\n const maxLines = density === 'detailed' ? 3 : 2;\n const lineCount = estimateLineCount({ text, charsPerLine, maxLines });\n\n if (!lineCount) return baseHeight;\n return baseHeight + Math.max(0, lineCount - 1) * 16;\n}\n\nfunction estimateGalleryDetailGridHeight({\n columns,\n density,\n bentoColumns,\n}: {\n columns: Array<{ text: string }>;\n density?: string;\n bentoColumns: number;\n}) {\n if (!columns.length) return 0;\n\n const cellHeights = columns.map((column) => estimateGalleryDetailCellHeight({\n text: column.text,\n density,\n bentoColumns,\n }));\n\n if (bentoColumns === 1) {\n return 12 + cellHeights.reduce((sum, height) => sum + height, 0) + Math.max(0, columns.length - 1) * 8;\n }\n\n let totalHeight = 12;\n\n for (let index = 0; index < cellHeights.length; index += bentoColumns) {\n const rowHeights = cellHeights.slice(index, index + bentoColumns);\n totalHeight += Math.max(...rowHeights);\n if (index + bentoColumns < cellHeights.length) totalHeight += 8;\n }\n\n return totalHeight;\n}\n\nfunction getDefaultGalleryMasonryItemSize<Row>({\n row,\n columns,\n galleryFieldKey,\n galleryDensity,\n galleryBentoColumns,\n galleryDetailVisibility,\n galleryDetailLimit,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n isImageField,\n isAudioField,\n cardVariant,\n renderPreview,\n renderLeadingVisual,\n hiddenDetailFieldKeys,\n layout,\n resolveRecordVisual,\n}: {\n row: Row;\n columns: WorkbenchGalleryColumn[];\n galleryFieldKey?: string;\n galleryDensity?: string;\n galleryBentoColumns?: number;\n galleryDetailVisibility?: string;\n galleryDetailLimit?: number | string;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n isMediaColumn: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isTitleCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isSummaryCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n getDisplayText: (value: unknown) => unknown;\n isImageField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n cardVariant?: string;\n renderPreview?: unknown;\n renderLeadingVisual?: unknown;\n hiddenDetailFieldKeys?: string[];\n layout?: { columnWidth?: number };\n resolveRecordVisual?: WorkbenchGalleryCardProps<Row>['resolveRecordVisual'];\n}) {\n const iconColumn = columns.find((column) => column.renderType === 'icon');\n const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)?.[iconColumn.key], row, iconColumn) : null;\n const selectedGalleryColumn = galleryFieldKey !== 'auto'\n ? columns.find((column) => column.key === galleryFieldKey && isMediaColumn(column, row))\n : null;\n const mediaColumn = selectedGalleryColumn || columns.find((column) => isMediaColumn(column, row)) || null;\n const mediaValue = mediaColumn ? getFieldValue(mediaColumn, row) : null;\n const isImageMedia = mediaColumn ? isImageField(mediaColumn, mediaValue) : false;\n const isAudioMedia = mediaColumn ? isAudioField(mediaColumn, mediaValue) : false;\n const hasDefaultLeadingVisual = Boolean(iconVisual);\n const hasLeadingVisual = Boolean(renderLeadingVisual) || hasDefaultLeadingVisual;\n const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n const titleCandidates = contentColumns.filter((column) => {\n if (!column || isMediaColumn(column, row) || !isTitleCandidate(column, row)) return false;\n const value = getFieldValue(column, row);\n return !(value === null || value === undefined || value === '');\n });\n const titleColumn = titleCandidates[0] || null;\n const titleText = titleColumn\n ? getGalleryFieldText({ column: titleColumn, row, getFieldValue, getDisplayText })\n : String(getDisplayText((row as any)?.linkKey || (row as any)?.id || ''));\n const summaryColumn = contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n const summaryText = getGalleryFieldText({ column, row, getFieldValue, getDisplayText });\n return summaryText.length > 12;\n }) || contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n return getGalleryTextLength(getGalleryFieldText({ column, row, getFieldValue, getDisplayText })) > 0;\n }) || null;\n const summaryText = summaryColumn ? getGalleryFieldText({ column: summaryColumn, row, getFieldValue, getDisplayText }) : '';\n const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n const detailColumns = contentColumns\n .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key))\n .map((column) => ({\n column,\n text: getGalleryFieldText({ column, row, getFieldValue, getDisplayText }),\n }));\n const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n density: galleryDensity,\n visibility: galleryDetailVisibility,\n limit: galleryDetailLimit,\n });\n const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n ? detailColumns.slice(0, resolvedDetailLimit)\n : detailColumns;\n const hiddenDetailCount = Math.max(detailColumns.length - visibleDetailColumns.length, 0);\n const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n const resolvedColumnWidth = layout?.columnWidth || getGalleryCardWidthMetrics(galleryDensity).ideal;\n\n if (cardVariant === 'image-only') {\n return {\n width: resolvedColumnWidth,\n height: Math.round(resolvedColumnWidth * 1.25),\n };\n }\n\n if (cardVariant === 'preview-only') {\n return {\n width: resolvedColumnWidth,\n height: Math.round(resolvedColumnWidth * 0.82),\n };\n }\n\n let estimatedHeight = galleryDensity === 'detailed' ? 84 : galleryDensity === 'compact' ? 64 : 72;\n\n if (typeof renderPreview === 'function') {\n estimatedHeight += galleryDensity === 'detailed' ? 188 : galleryDensity === 'compact' ? 140 : 164;\n } else if (isImageMedia) {\n estimatedHeight += Math.round(resolvedColumnWidth * (galleryDensity === 'detailed' ? 0.72 : 0.62)) + 12;\n } else if (isAudioMedia) {\n estimatedHeight += 92;\n }\n\n const titleLines = estimateLineCount({\n text: titleText,\n charsPerLine: galleryDensity === 'detailed' ? 26 : 24,\n maxLines: 2,\n }) || 1;\n const summaryLines = estimateLineCount({\n text: summaryText,\n charsPerLine: hasLeadingVisual ? 22 : (galleryDensity === 'detailed' ? 30 : 26),\n maxLines: galleryDensity === 'detailed' ? 4 : 2,\n });\n const textHeaderHeight = 26 + titleLines * 18 + (summaryLines > 0 ? summaryLines * 16 + 4 : 0);\n estimatedHeight += Math.max(hasLeadingVisual ? 56 : 0, textHeaderHeight);\n estimatedHeight += estimateGalleryDetailGridHeight({\n columns: visibleDetailColumns,\n density: galleryDensity,\n bentoColumns: resolvedBentoColumns,\n });\n\n if (hiddenDetailCount > 0) estimatedHeight += 18;\n if (!summaryText && visibleDetailColumns.length === 0) estimatedHeight += 24;\n\n return {\n width: resolvedColumnWidth,\n height: estimatedHeight,\n };\n}\n\nexport function WorkbenchGalleryView<Row = any>({\n rows = [],\n columns = [],\n onRowClick = () => {},\n selectedLinkKey,\n selectedRowKey,\n className,\n isMasonry = false,\n galleryLayoutMode = 'auto',\n galleryRailCardWidth,\n galleryGridColumns,\n galleryGridCardWidth,\n galleryMasonryColumnWidth,\n masonryPlacementStrategy = 'shelf',\n galleryFieldKey = 'auto',\n galleryDensity = 'comfortable',\n galleryBentoColumns = 2,\n galleryDetailVisibility = 'limit',\n galleryDetailLimit,\n shouldEnhanceMultimodal = true,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n renderFieldValue,\n getImagePreviewSrc,\n isImageField,\n isAudioField,\n AudioPlayerComponent,\n cardVariant = 'default',\n renderPreview,\n renderMeta,\n renderLeadingVisual,\n resolveRecordVisual,\n hiddenDetailFieldKeys = [],\n labels,\n formatLabel,\n getMasonryItemSize,\n}: WorkbenchGalleryViewProps<Row>) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const { min: resolvedMinCardWidth, ideal: resolvedIdealCardWidth, max: resolvedMaxCardWidth } = getGalleryCardWidthMetrics(galleryDensity);\n const resolvedRailCardWidth = galleryRailCardWidth || resolvedMinCardWidth;\n const resolvedGridColumnCount = getNormalizedGalleryGridColumns(galleryGridColumns);\n const resolvedGridCardWidth = getNormalizedGalleryGridCardWidth(galleryGridCardWidth);\n const resolvedMasonryColumnWidth = galleryMasonryColumnWidth || resolvedMinCardWidth;\n const isRailLayout = galleryLayoutMode === 'rail';\n const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGalleryMediaColumn(column, row, {\n getFieldValue: resolvedGetFieldValue as any,\n shouldEnhanceMultimodal,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n })\n ));\n const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGalleryTitleCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGallerySummaryCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, row: Row, { compact } = {}) => (\n <span>{resolvedGetDisplayText(resolvedGetFieldValue(column, row))}</span>\n ));\n\n useEffect(() => {\n if (isMasonry || isRailLayout || resolvedGridCardWidth) return undefined;\n const node = containerRef.current;\n if (!node) return undefined;\n\n const updateWidth = () => {\n const nextWidth = Math.round(node.getBoundingClientRect().width);\n setContainerWidth((prevWidth) => (prevWidth === nextWidth ? prevWidth : nextWidth));\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => updateWidth());\n observer.observe(node);\n return () => observer.disconnect();\n }\n\n window.addEventListener('resize', updateWidth);\n return () => window.removeEventListener('resize', updateWidth);\n }, [isMasonry, isRailLayout, resolvedGridCardWidth]);\n\n const layoutStyle = useMemo(() => getGalleryGridLayoutStyle({\n isRailLayout,\n railCardWidth: resolvedRailCardWidth,\n fixedCardWidth: resolvedGridCardWidth,\n fixedColumnCount: resolvedGridColumnCount,\n containerWidth,\n rowCount: rows.length,\n minCardWidth: resolvedMinCardWidth,\n idealCardWidth: resolvedIdealCardWidth,\n maxCardWidth: resolvedMaxCardWidth,\n }), [\n containerWidth,\n isRailLayout,\n resolvedGridCardWidth,\n resolvedGridColumnCount,\n resolvedIdealCardWidth,\n resolvedMaxCardWidth,\n resolvedMinCardWidth,\n resolvedRailCardWidth,\n rows.length,\n ]);\n\n const renderGalleryCard = (row: Row, rowIndex: number) => (\n <WorkbenchGalleryCard\n key={(row as any)?.id || (row as any)?.linkKey || rowIndex}\n row={row}\n columns={columns}\n onClick={() => onRowClick(row, rowIndex)}\n isSelected={String((row as any)?.linkKey || (row as any)?.id || '') === String(selectedRowKey || selectedLinkKey || '')}\n isMasonry={isMasonry}\n galleryFieldKey={galleryFieldKey}\n galleryDensity={galleryDensity}\n galleryBentoColumns={galleryBentoColumns}\n galleryDetailVisibility={galleryDetailVisibility}\n galleryDetailLimit={galleryDetailLimit}\n shouldEnhanceMultimodal={shouldEnhanceMultimodal}\n getFieldValue={resolvedGetFieldValue as any}\n isMediaColumn={resolvedIsMediaColumn as any}\n isTitleCandidate={resolvedIsTitleCandidate as any}\n isSummaryCandidate={resolvedIsSummaryCandidate as any}\n getDisplayText={resolvedGetDisplayText}\n renderFieldValue={resolvedRenderFieldValue as any}\n getImagePreviewSrc={getImagePreviewSrc}\n isImageField={resolvedIsImageField}\n isAudioField={resolvedIsAudioField}\n AudioPlayerComponent={AudioPlayerComponent}\n cardVariant={cardVariant}\n renderPreview={renderPreview}\n renderMeta={renderMeta}\n renderLeadingVisual={renderLeadingVisual}\n resolveRecordVisual={resolveRecordVisual}\n hiddenDetailFieldKeys={hiddenDetailFieldKeys}\n labels={labels}\n formatLabel={formatLabel}\n />\n );\n\n if (isMasonry) {\n return (\n <WorkbenchMasonryLayout\n items={rows}\n className={className}\n gap={GALLERY_GRID_GAP_PX}\n columnWidth={resolvedMasonryColumnWidth}\n placementStrategy={masonryPlacementStrategy}\n getItemKey={(row: Row, rowIndex: number) => (row as any)?.id || (row as any)?.linkKey || rowIndex}\n getItemSize={(row: Row, layout) => {\n const defaultSize = getDefaultGalleryMasonryItemSize({\n row,\n columns,\n galleryFieldKey,\n galleryDensity,\n galleryBentoColumns,\n galleryDetailVisibility,\n galleryDetailLimit,\n getFieldValue: resolvedGetFieldValue as any,\n isMediaColumn: resolvedIsMediaColumn as any,\n isTitleCandidate: resolvedIsTitleCandidate as any,\n isSummaryCandidate: resolvedIsSummaryCandidate as any,\n getDisplayText: resolvedGetDisplayText,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n cardVariant,\n renderPreview,\n renderLeadingVisual,\n hiddenDetailFieldKeys,\n layout,\n resolveRecordVisual,\n });\n\n if (typeof getMasonryItemSize !== 'function') return defaultSize;\n const customSize = getMasonryItemSize(row, { ...layout, defaultSize }) || {};\n return {\n ...defaultSize,\n ...customSize,\n };\n }}\n renderItem={(row: Row) => renderGalleryCard(row, rows.indexOf(row))}\n />\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={cn(\n isRailLayout ? 'grid grid-flow-col items-center gap-3' : 'grid items-start gap-3',\n className,\n )}\n style={layoutStyle}\n >\n {rows.map((row, rowIndex) => renderGalleryCard(row, rowIndex))}\n </div>\n );\n}\n","import { useCallback, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n useDraggable,\n useDroppable,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n} from '@dnd-kit/core';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchLaneColumn<ColumnId extends string = string> {\n id: ColumnId;\n label?: ReactNode;\n icon?: ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n badgeClassName?: string;\n iconClassName?: string;\n}\n\nexport interface WorkbenchLaneClassNames {\n root?: string;\n column?: string;\n columnHeader?: string;\n columnIcon?: string;\n columnBadge?: string;\n columnCount?: string;\n columnBody?: string;\n cardWrapper?: string;\n overlayWrapper?: string;\n emptyColumn?: string;\n}\n\nexport interface WorkbenchLaneRenderCardContext<Row = any, ColumnId extends string = string> {\n row: Row;\n rowIndex: number;\n column: WorkbenchLaneColumn<ColumnId>;\n isDragging: boolean;\n isOverlay: boolean;\n}\n\nexport interface WorkbenchLaneViewProps<Row = any, ColumnId extends string = string> {\n rows?: Row[];\n columns?: Array<WorkbenchLaneColumn<ColumnId>>;\n getRowId?: (row: Row, rowIndex: number) => string;\n getColumnId?: (row: Row, rowIndex: number) => ColumnId;\n renderCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n renderOverlayCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n onMoveRow?: (rowId: string, nextColumnId: ColumnId, row: Row) => void;\n emptyColumn?: ReactNode;\n activationDistance?: number;\n columnWidth?: number | string;\n columnMinHeight?: number | string;\n className?: string;\n classNames?: WorkbenchLaneClassNames;\n style?: CSSProperties;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction defaultGetRowId(row: any, rowIndex: number) {\n return String(row?.id ?? row?.key ?? rowIndex);\n}\n\nfunction defaultGetColumnId<ColumnId extends string = string>(row: any) {\n return String(row?.columnId ?? row?.status ?? '') as ColumnId;\n}\n\nfunction defaultRenderCard<Row>(row: Row) {\n const value = (row as any)?.title ?? (row as any)?.name ?? (row as any)?.id ?? 'Untitled';\n return (\n <div className=\"rounded-lg border border-border/70 bg-card px-3 py-2 text-sm text-foreground shadow-sm\">\n {String(value)}\n </div>\n );\n}\n\ninterface WorkbenchLaneDraggableCardProps<Row, ColumnId extends string> {\n row: Row;\n rowId: string;\n rowIndex: number;\n column: WorkbenchLaneColumn<ColumnId>;\n classNames?: WorkbenchLaneClassNames;\n renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneDraggableCard<Row, ColumnId extends string>({\n row,\n rowId,\n rowIndex,\n column,\n classNames,\n renderCard,\n}: WorkbenchLaneDraggableCardProps<Row, ColumnId>) {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({ id: rowId });\n\n return (\n <div\n ref={setNodeRef}\n {...listeners}\n {...attributes}\n className={cn('touch-none', classNames?.cardWrapper)}\n >\n {renderCard(row, { row, rowIndex, column, isDragging, isOverlay: false })}\n </div>\n );\n}\n\ninterface WorkbenchLaneColumnViewProps<Row, ColumnId extends string> {\n column: WorkbenchLaneColumn<ColumnId>;\n columnRows: Array<{ row: Row; rowIndex: number; rowId: string }>;\n columnWidth?: number | string;\n columnMinHeight?: number | string;\n emptyColumn?: ReactNode;\n classNames?: WorkbenchLaneClassNames;\n renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneColumnView<Row, ColumnId extends string>({\n column,\n columnRows,\n columnWidth,\n columnMinHeight,\n emptyColumn,\n classNames,\n renderCard,\n}: WorkbenchLaneColumnViewProps<Row, ColumnId>) {\n const { setNodeRef, isOver } = useDroppable({ id: column.id });\n\n return (\n <section\n className={cn(\n 'flex shrink-0 flex-col rounded-xl border border-border/60 bg-card p-2 shadow-sm',\n classNames?.column,\n column.className,\n )}\n style={{ width: toCssSize(columnWidth) ?? '280px' }}\n >\n <div className={cn('flex h-10 items-center gap-2 px-1', classNames?.columnHeader, column.headerClassName)}>\n {column.icon ? (\n <span className={cn('inline-flex h-4 w-4 items-center justify-center text-muted-foreground', classNames?.columnIcon, column.iconClassName)}>\n {column.icon}\n </span>\n ) : null}\n <span className={cn('inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold bg-muted text-muted-foreground', classNames?.columnBadge, column.badgeClassName)}>\n {column.label ?? column.id}\n </span>\n <span className={cn('text-xs text-muted-foreground', classNames?.columnCount)}>{columnRows.length}</span>\n </div>\n <div\n ref={setNodeRef}\n className={cn(\n 'mt-1 flex min-h-[200px] flex-1 flex-col gap-2 overflow-y-auto rounded-lg p-1 transition-colors [scrollbar-width:thin]',\n isOver && 'bg-accent/60',\n classNames?.columnBody,\n column.bodyClassName,\n )}\n style={{ minHeight: toCssSize(columnMinHeight) }}\n >\n {columnRows.length ? columnRows.map(({ row, rowIndex, rowId }) => (\n <WorkbenchLaneDraggableCard\n key={rowId}\n row={row}\n rowId={rowId}\n rowIndex={rowIndex}\n column={column}\n classNames={classNames}\n renderCard={renderCard}\n />\n )) : emptyColumn ? (\n <div className={cn('flex min-h-24 items-center justify-center rounded-lg border border-dashed border-border/60 px-3 py-4 text-xs text-muted-foreground', classNames?.emptyColumn)}>\n {emptyColumn}\n </div>\n ) : null}\n </div>\n </section>\n );\n}\n\nexport function WorkbenchLaneView<Row = any, ColumnId extends string = string>({\n rows = [],\n columns = [],\n getRowId = defaultGetRowId,\n getColumnId = defaultGetColumnId<ColumnId>,\n renderCard = defaultRenderCard,\n renderOverlayCard,\n onMoveRow,\n emptyColumn,\n activationDistance = 5,\n columnWidth = 280,\n columnMinHeight,\n className,\n classNames,\n style,\n}: WorkbenchLaneViewProps<Row, ColumnId>) {\n const [activeRowId, setActiveRowId] = useState<string | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: activationDistance } }));\n const columnMap = useMemo(() => new Map(columns.map((column) => [column.id, column])), [columns]);\n const rowEntries = useMemo(() => rows.map((row, rowIndex) => ({\n row,\n rowIndex,\n rowId: getRowId(row, rowIndex),\n columnId: getColumnId(row, rowIndex),\n })), [getColumnId, getRowId, rows]);\n const activeEntry = activeRowId ? rowEntries.find((entry) => entry.rowId === activeRowId) : undefined;\n const rowsByColumn = useMemo(() => {\n const next = new Map<ColumnId, Array<{ row: Row; rowIndex: number; rowId: string }>>();\n columns.forEach((column) => next.set(column.id, []));\n rowEntries.forEach(({ row, rowIndex, rowId, columnId }) => {\n next.get(columnId)?.push({ row, rowIndex, rowId });\n });\n return next;\n }, [columns, rowEntries]);\n const activeColumn = activeEntry ? columnMap.get(activeEntry.columnId) : undefined;\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveRowId(String(event.active.id));\n }, []);\n\n const handleDragEnd = useCallback((event: DragEndEvent) => {\n setActiveRowId(null);\n const rowId = String(event.active.id);\n const nextColumnId = String(event.over?.id ?? '') as ColumnId;\n const activeRow = rowEntries.find((entry) => entry.rowId === rowId);\n if (!activeRow || !columnMap.has(nextColumnId) || activeRow.columnId === nextColumnId) return;\n onMoveRow?.(rowId, nextColumnId, activeRow.row);\n }, [columnMap, onMoveRow, rowEntries]);\n\n const handleDragCancel = useCallback(() => {\n setActiveRowId(null);\n }, []);\n\n return (\n <DndContext sensors={sensors} onDragStart={handleDragStart} onDragEnd={handleDragEnd} onDragCancel={handleDragCancel}>\n <div\n className={cn('flex min-h-0 flex-1 gap-4 overflow-x-auto p-4 [scrollbar-width:thin]', classNames?.root, className)}\n style={style}\n >\n {columns.map((column) => (\n <WorkbenchLaneColumnView\n key={column.id}\n column={column}\n columnRows={rowsByColumn.get(column.id) || []}\n columnWidth={columnWidth}\n columnMinHeight={columnMinHeight}\n emptyColumn={emptyColumn}\n classNames={classNames}\n renderCard={renderCard}\n />\n ))}\n </div>\n <DragOverlay>\n {activeEntry && activeColumn ? (\n <div className={cn(classNames?.overlayWrapper)}>\n {(renderOverlayCard || renderCard)(activeEntry.row, {\n row: activeEntry.row,\n rowIndex: activeEntry.rowIndex,\n column: activeColumn,\n isDragging: false,\n isOverlay: true,\n })}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchMetricItem {\n id: string;\n label: ReactNode;\n value: ReactNode;\n progress?: number;\n description?: ReactNode;\n}\n\nexport type WorkbenchMetricGridVariant = \"bars\" | \"cards\" | \"list\";\nexport type WorkbenchMetricGridDensity = \"compact\" | \"comfortable\";\n\nexport interface WorkbenchMetricGridProps {\n items: WorkbenchMetricItem[];\n variant?: WorkbenchMetricGridVariant;\n density?: WorkbenchMetricGridDensity;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n itemClassName?: string;\n}\n\nconst normalizeProgress = (value: number | undefined) => {\n if (!Number.isFinite(value)) return undefined;\n return Math.min(1, Math.max(0, Number(value)));\n};\n\nexport function WorkbenchMetricGrid({\n items,\n variant = \"bars\",\n density = \"comfortable\",\n emptyState = null,\n ariaLabel = \"Metrics\",\n className,\n itemClassName,\n}: WorkbenchMetricGridProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n if (variant === \"list\") {\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => (\n <div\n key={item.id}\n className={cn(\n \"flex min-w-0 items-start justify-between gap-4\",\n density === \"compact\" ? \"text-xs\" : \"text-sm\",\n itemClassName,\n )}\n >\n <dt className=\"min-w-0 text-muted-foreground\">\n <span className=\"block truncate\">{item.label}</span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-0.5 block text-[0.6875rem] leading-4 text-muted-foreground/80\">\n {item.description}\n </span>\n ) : null}\n </dt>\n <dd className=\"shrink-0 font-semibold tabular-nums text-foreground\">\n {item.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))]\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => (\n <div\n key={item.id}\n className={cn(\n \"min-w-0 rounded-lg border border-border/70 bg-card text-card-foreground\",\n density === \"compact\" ? \"p-3\" : \"p-4\",\n itemClassName,\n )}\n >\n <dt className=\"truncate text-xs font-medium text-muted-foreground\">\n {item.label}\n </dt>\n <dd\n className={cn(\n \"font-semibold tabular-nums text-foreground\",\n density === \"compact\" ? \"mt-1.5 text-xl\" : \"mt-2 text-2xl\",\n )}\n >\n {item.value}\n </dd>\n {hasRenderableNode(item.description) ? (\n <div className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {item.description}\n </div>\n ) : null}\n </div>\n ))}\n </dl>\n );\n }\n\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr))]\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => {\n const progress = normalizeProgress(item.progress);\n return (\n <div key={item.id} className={cn(\"min-w-0\", itemClassName)}>\n <div\n role={progress === undefined ? undefined : \"meter\"}\n aria-label={\n progress === undefined ? undefined : String(item.label)\n }\n aria-valuemin={progress === undefined ? undefined : 0}\n aria-valuemax={progress === undefined ? undefined : 100}\n aria-valuenow={\n progress === undefined ? undefined : Math.round(progress * 100)\n }\n className={cn(\n \"overflow-hidden rounded-full bg-muted\",\n density === \"compact\" ? \"h-1.5\" : \"h-2\",\n )}\n >\n {progress === undefined ? null : (\n <span\n className=\"block h-full rounded-full bg-primary transition-[width] duration-200 motion-reduce:transition-none\"\n style={{\n width: `${Math.max(progress > 0 ? 4 : 0, progress * 100)}%`,\n }}\n />\n )}\n </div>\n <div className=\"mt-1.5 flex min-w-0 items-baseline justify-between gap-2\">\n <dt className=\"truncate text-[0.6875rem] text-muted-foreground\">\n {item.label}\n </dt>\n <dd className=\"shrink-0 text-xs font-semibold tabular-nums text-foreground\">\n {item.value}\n </dd>\n </div>\n </div>\n );\n })}\n </dl>\n );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\n\nexport interface WorkbenchRelationshipNode {\n id: string;\n label: string;\n meta?: string;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRelationshipEdge {\n id?: string;\n sourceId: string;\n targetId: string;\n label?: string;\n}\n\nexport interface WorkbenchRelationshipGraphProps {\n nodes: WorkbenchRelationshipNode[];\n edges: WorkbenchRelationshipEdge[];\n selectedNodeId?: string;\n onNodeSelect?: (node: WorkbenchRelationshipNode) => void;\n width?: number;\n height?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n variant?: \"default\" | \"radar\";\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n primary: \"fill-primary/10 stroke-primary text-primary\",\n secondary:\n \"fill-secondary stroke-secondary-foreground text-secondary-foreground\",\n accent: \"fill-accent stroke-accent-foreground text-accent-foreground\",\n muted: \"fill-muted stroke-muted-foreground text-muted-foreground\",\n};\n\nconst radarToneVariable: Record<WorkbenchVisualizationTone, string> = {\n primary: \"--radar-series-one\",\n secondary: \"--radar-series-two\",\n accent: \"--radar-series-three\",\n muted: \"--radar-series-four\",\n};\n\nconst radarToneFallback: Record<WorkbenchVisualizationTone, string> = {\n primary: \"var(--primary)\",\n secondary: \"var(--secondary-foreground)\",\n accent: \"var(--accent-foreground)\",\n muted: \"var(--muted-foreground)\",\n};\n\nconst radarToneColor = (tone: WorkbenchVisualizationTone, alpha = 1) =>\n `hsl(var(${radarToneVariable[tone]}, ${radarToneFallback[tone]}) / ${alpha})`;\n\nconst activateNode = (\n event: KeyboardEvent<SVGGElement>,\n node: WorkbenchRelationshipNode,\n onNodeSelect?: (node: WorkbenchRelationshipNode) => void,\n) => {\n if (!onNodeSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onNodeSelect(node);\n};\n\nexport function WorkbenchRelationshipGraph({\n nodes,\n edges,\n selectedNodeId,\n onNodeSelect,\n width = 900,\n height = 440,\n emptyState = null,\n ariaLabel = \"Relationship graph\",\n className,\n variant = \"default\",\n}: WorkbenchRelationshipGraphProps) {\n if (!nodes.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const radar = variant === \"radar\";\n const radius = Math.min(width, height) * (radar ? 0.37 : 0.35);\n const selectedIndex = selectedNodeId\n ? nodes.findIndex((node) => node.id === selectedNodeId)\n : -1;\n const orbitNodes = selectedIndex >= 0\n ? nodes.filter((_, index) => index !== selectedIndex)\n : nodes;\n const positions = new Map(\n nodes.map((node, index) => {\n if (nodes.length === 1)\n return [node.id, { x: width / 2, y: height / 2 }] as const;\n if (radar && index === selectedIndex) {\n return [node.id, { x: width / 2, y: height / 2 }] as const;\n }\n const orbitIndex = orbitNodes.findIndex((item) => item.id === node.id);\n const angle = (Math.PI * 2 * orbitIndex) / orbitNodes.length - Math.PI / 2;\n return [\n node.id,\n {\n x: width / 2 + Math.cos(angle) * radius,\n y: height / 2 + Math.sin(angle) * radius,\n },\n ] as const;\n }),\n );\n\n return (\n <div\n data-monkeys-component=\"workbench-relationship-graph\"\n data-workbench-relationship-variant={variant}\n className={cn(\n \"relative min-w-0 overflow-hidden rounded-lg border\",\n radar\n ? \"min-h-[42rem]\"\n : \"overflow-x-auto border-border/70 bg-card\",\n className,\n )}\n style={radar ? {\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n backgroundImage:\n \"linear-gradient(hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), radial-gradient(circle at center, hsl(var(--primary) / 0.1), transparent 45%)\",\n backgroundSize: \"4rem 4rem, 4rem 4rem, 100% 100%\",\n } : undefined}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className={cn(radar ? \"absolute inset-0 size-full\" : \"min-w-[42rem]\")}\n preserveAspectRatio={radar ? \"xMidYMid meet\" : undefined}\n role=\"img\"\n aria-label={ariaLabel}\n >\n {edges.map((edge, index) => {\n const source = positions.get(edge.sourceId);\n const target = positions.get(edge.targetId);\n if (!source || !target) return null;\n return (\n <line\n key={edge.id || `${edge.sourceId}:${edge.targetId}:${index}`}\n x1={source.x}\n y1={source.y}\n x2={target.x}\n y2={target.y}\n className={radar ? undefined : \"stroke-border\"}\n strokeWidth={radar ? \"2\" : \"1.5\"}\n style={radar ? {\n stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.46)\",\n filter: \"drop-shadow(0 0 0.35rem hsl(var(--primary) / 0.34))\",\n } : undefined}\n >\n <title>\n {edge.label || `${edge.sourceId} to ${edge.targetId}`}\n </title>\n </line>\n );\n })}\n {nodes.map((node) => {\n const point = positions.get(node.id)!;\n const selected = node.id === selectedNodeId;\n const tone = node.tone || \"muted\";\n const radarNodeStyle: CSSProperties | undefined = radar ? {\n color: radarToneColor(tone),\n } : undefined;\n return (\n <g\n key={node.id}\n transform={`translate(${point.x}, ${point.y})`}\n role={onNodeSelect ? \"button\" : undefined}\n tabIndex={onNodeSelect ? 0 : undefined}\n aria-label={\n node.meta ? `${node.label}, ${node.meta}` : node.label\n }\n aria-pressed={onNodeSelect ? selected : undefined}\n onClick={onNodeSelect ? () => onNodeSelect(node) : undefined}\n onKeyDown={(event) => activateNode(event, node, onNodeSelect)}\n className={cn(\n radar ? \"outline-none\" : toneClassNames[tone],\n onNodeSelect && \"cursor-pointer outline-none\",\n )}\n style={radarNodeStyle}\n >\n <circle\n r={radar && selected ? \"50\" : radar ? \"40\" : \"36\"}\n className={cn(\n \"stroke-1 transition-[stroke-width] duration-150 motion-reduce:transition-none\",\n selected && \"stroke-[3]\",\n )}\n style={radar ? {\n fill: radarToneColor(tone, selected ? 0.22 : 0.12),\n stroke: radarToneColor(tone, selected ? 1 : 0.78),\n filter: `drop-shadow(0 0 ${selected ? \"1.4rem\" : \"0.75rem\"} ${radarToneColor(tone, 0.62)})`,\n } : undefined}\n />\n <text\n textAnchor=\"middle\"\n y={node.meta ? -3 : 4}\n className={cn(\n \"pointer-events-none fill-current font-semibold\",\n radar ? \"text-[0.875rem]\" : \"text-xs\",\n )}\n >\n {node.label.slice(0, 18)}\n </text>\n {node.meta ? (\n <text\n textAnchor=\"middle\"\n y=\"16\"\n className={cn(\n \"pointer-events-none text-[0.625rem]\",\n radar ? \"fill-current opacity-70\" : \"fill-muted-foreground\",\n )}\n >\n {node.meta.slice(0, 22)}\n </text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchVisualizationTone =\n \"primary\" | \"secondary\" | \"accent\" | \"muted\";\n\nexport interface WorkbenchScatterPoint {\n id: string;\n label: string;\n x: number;\n y: number;\n size?: number;\n description?: string;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchScatterAxis {\n label: string;\n min?: number;\n max?: number;\n}\n\nexport interface WorkbenchScatterThresholds {\n x?: number;\n y?: number;\n}\n\nexport interface WorkbenchScatterPlotProps {\n points: WorkbenchScatterPoint[];\n xAxis: WorkbenchScatterAxis;\n yAxis: WorkbenchScatterAxis;\n thresholds?: WorkbenchScatterThresholds;\n selectedPointId?: string;\n onPointSelect?: (point: WorkbenchScatterPoint) => void;\n width?: number;\n height?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n primary: \"fill-primary stroke-primary\",\n secondary: \"fill-secondary stroke-secondary-foreground\",\n accent: \"fill-accent stroke-accent-foreground\",\n muted: \"fill-muted stroke-muted-foreground\",\n};\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n const candidates = finiteValues(values);\n const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n if (lower === upper) return [lower, upper + 1] as const;\n return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n value: number,\n domain: readonly [number, number],\n start: number,\n end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst activatePoint = (\n event: KeyboardEvent<SVGGElement>,\n point: WorkbenchScatterPoint,\n onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onPointSelect(point);\n};\n\nexport function WorkbenchScatterPlot({\n points,\n xAxis,\n yAxis,\n thresholds,\n selectedPointId,\n onPointSelect,\n width = 900,\n height = 420,\n emptyState = null,\n ariaLabel = `${xAxis.label} by ${yAxis.label}`,\n className,\n}: WorkbenchScatterPlotProps) {\n const validPoints = points.filter(\n (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n );\n if (!validPoints.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const padding = 56;\n const xDomain = getDomain(\n validPoints.map((point) => point.x),\n xAxis.min,\n xAxis.max,\n );\n const yDomain = getDomain(\n validPoints.map((point) => point.y),\n yAxis.min,\n yAxis.max,\n );\n const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n const plotLeft = padding;\n const plotRight = width - padding;\n const plotTop = padding;\n const plotBottom = height - padding;\n const xThreshold = Number.isFinite(thresholds?.x)\n ? scale(Number(thresholds?.x), xDomain, plotLeft, plotRight)\n : undefined;\n const yThreshold = Number.isFinite(thresholds?.y)\n ? scale(Number(thresholds?.y), yDomain, plotBottom, plotTop)\n : undefined;\n\n return (\n <div\n data-monkeys-component=\"workbench-scatter-plot\"\n className={cn(\n \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-3\",\n className,\n )}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className=\"min-w-[42rem]\"\n role=\"img\"\n aria-label={ariaLabel}\n >\n <line\n x1={plotLeft}\n y1={plotBottom}\n x2={plotRight}\n y2={plotBottom}\n className=\"stroke-border\"\n />\n <line\n x1={plotLeft}\n y1={plotTop}\n x2={plotLeft}\n y2={plotBottom}\n className=\"stroke-border\"\n />\n {xThreshold === undefined ? null : (\n <line\n x1={clamp(xThreshold, plotLeft, plotRight)}\n y1={plotTop}\n x2={clamp(xThreshold, plotLeft, plotRight)}\n y2={plotBottom}\n className=\"stroke-muted-foreground/50\"\n strokeDasharray=\"5 5\"\n />\n )}\n {yThreshold === undefined ? null : (\n <line\n x1={plotLeft}\n y1={clamp(yThreshold, plotTop, plotBottom)}\n x2={plotRight}\n y2={clamp(yThreshold, plotTop, plotBottom)}\n className=\"stroke-muted-foreground/50\"\n strokeDasharray=\"5 5\"\n />\n )}\n <text\n x={width / 2}\n y={height - 12}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-xs\"\n >\n {xAxis.label}\n </text>\n <text\n x=\"16\"\n y={height / 2}\n textAnchor=\"middle\"\n transform={`rotate(-90 16 ${height / 2})`}\n className=\"fill-muted-foreground text-xs\"\n >\n {yAxis.label}\n </text>\n {validPoints.map((point) => {\n const x = clamp(\n scale(point.x, xDomain, plotLeft, plotRight),\n plotLeft,\n plotRight,\n );\n const y = clamp(\n scale(point.y, yDomain, plotBottom, plotTop),\n plotTop,\n plotBottom,\n );\n const radius =\n point.size === undefined\n ? 9\n : clamp(scale(point.size, sizeDomain, 7, 18), 7, 18);\n const selected = selectedPointId === point.id;\n return (\n <g\n key={point.id}\n transform={`translate(${x}, ${y})`}\n role={onPointSelect ? \"button\" : undefined}\n tabIndex={onPointSelect ? 0 : undefined}\n aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n aria-pressed={onPointSelect ? selected : undefined}\n onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n >\n <circle\n r={radius}\n className={cn(\n \"stroke-1 opacity-80 transition-opacity duration-150 motion-reduce:transition-none\",\n toneClassNames[point.tone || \"primary\"],\n selected ? \"opacity-100 stroke-[3]\" : \"hover:opacity-100\",\n )}\n />\n <text\n y={-radius - 7}\n textAnchor=\"middle\"\n className=\"pointer-events-none fill-foreground text-[0.6875rem] font-semibold\"\n >\n {point.label.slice(0, 24)}\n </text>\n <title>{point.description || point.label}</title>\n </g>\n );\n })}\n </svg>\n </div>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchJourneyItemState = \"complete\" | \"current\" | \"upcoming\";\n\nexport interface WorkbenchJourneyItem {\n id: string;\n label: ReactNode;\n eyebrow?: ReactNode;\n state?: WorkbenchJourneyItemState;\n disabled?: boolean;\n}\n\nexport interface WorkbenchJourneyNavigationProps {\n items: WorkbenchJourneyItem[];\n onItemSelect?: (item: WorkbenchJourneyItem) => void;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchJourneyItem,\n onItemSelect?: (item: WorkbenchJourneyItem) => void,\n) => {\n if (!onItemSelect || item.disabled || (event.key !== \"Enter\" && event.key !== \" \"))\n return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchJourneyNavigation({\n items,\n onItemSelect,\n ariaLabel = \"Journey\",\n className,\n}: WorkbenchJourneyNavigationProps) {\n return (\n <nav\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-journey-navigation\"\n className={cn(\n \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-2\",\n className,\n )}\n >\n <ol className=\"flex min-w-max items-stretch gap-1\">\n {items.map((item, index) => {\n const state = item.state || \"upcoming\";\n return (\n <li key={item.id} className=\"flex items-center\">\n {index ? (\n <span className=\"mx-1 h-px w-5 bg-border\" aria-hidden=\"true\" />\n ) : null}\n <button\n type=\"button\"\n disabled={item.disabled}\n aria-current={state === \"current\" ? \"page\" : undefined}\n onClick={\n onItemSelect && !item.disabled\n ? () => onItemSelect(item)\n : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"min-w-28 rounded-md border px-3 py-2 text-left outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-reduce:transition-none\",\n state === \"current\" &&\n \"border-primary bg-primary text-primary-foreground\",\n state === \"complete\" &&\n \"border-primary/30 bg-primary/10 text-foreground\",\n state === \"upcoming\" &&\n \"border-transparent bg-muted/50 text-muted-foreground\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {hasRenderableNode(item.eyebrow) ? (\n <span\n className={cn(\n \"block text-[0.625rem] font-semibold uppercase tracking-[0.14em]\",\n state === \"current\"\n ? \"text-primary-foreground/75\"\n : \"text-muted-foreground\",\n )}\n >\n {item.eyebrow}\n </span>\n ) : null}\n <span className=\"mt-0.5 block text-xs font-semibold\">\n {item.label}\n </span>\n </button>\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchRankedListMetric {\n id: string;\n label: ReactNode;\n value: ReactNode;\n}\n\nexport interface WorkbenchRankedListItem {\n id: string;\n label: ReactNode;\n description?: ReactNode;\n score?: ReactNode;\n tags?: ReactNode[];\n metrics?: WorkbenchRankedListMetric[];\n leading?: ReactNode;\n trailing?: ReactNode;\n}\n\nexport interface WorkbenchRankedListProps {\n items: WorkbenchRankedListItem[];\n selectedItemId?: string;\n onItemSelect?: (item: WorkbenchRankedListItem) => void;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchRankedListItem,\n onItemSelect?: (item: WorkbenchRankedListItem) => void,\n) => {\n if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchRankedList({\n items,\n selectedItemId,\n onItemSelect,\n emptyState = null,\n ariaLabel = \"Ranked items\",\n className,\n}: WorkbenchRankedListProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ol\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-ranked-list\"\n className={cn(\"grid min-w-0 gap-2\", className)}\n >\n {items.map((item, index) => {\n const selected = selectedItemId === item.id;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n aria-pressed={onItemSelect ? selected : undefined}\n onClick={\n onItemSelect ? () => onItemSelect(item) : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"grid w-full min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-lg border bg-card p-3 text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary bg-primary/5\"\n : \"border-border/70 hover:border-primary/40 hover:bg-accent/50\",\n !onItemSelect && \"cursor-default\",\n )}\n >\n <span className=\"flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold tabular-nums text-muted-foreground\">\n {item.leading || index + 1}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate text-sm font-semibold text-foreground\">\n {item.label}\n </span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {item.tags?.length ? (\n <span className=\"mt-2 flex flex-wrap gap-1.5\">\n {item.tags.map((tag, tagIndex) => (\n <span\n key={`${item.id}:tag:${tagIndex}`}\n className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] font-medium text-secondary-foreground\"\n >\n {tag}\n </span>\n ))}\n </span>\n ) : null}\n {item.metrics?.length ? (\n <span className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 sm:grid-cols-4\">\n {item.metrics.map((metric) => (\n <span key={metric.id} className=\"min-w-0\">\n <span className=\"block truncate text-[0.625rem] text-muted-foreground\">\n {metric.label}\n </span>\n <span className=\"block text-xs font-semibold tabular-nums text-foreground\">\n {metric.value}\n </span>\n </span>\n ))}\n </span>\n ) : null}\n </span>\n <span className=\"shrink-0 text-right\">\n {hasRenderableNode(item.score) ? (\n <span className=\"block text-lg font-semibold tabular-nums text-primary\">\n {item.score}\n </span>\n ) : null}\n {hasRenderableNode(item.trailing) ? (\n <span className=\"mt-1 block text-muted-foreground\">\n {item.trailing}\n </span>\n ) : null}\n </span>\n </button>\n </li>\n );\n })}\n </ol>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchSelectionTrayItem {\n id: string;\n label: ReactNode;\n meta?: ReactNode;\n}\n\nexport interface WorkbenchSelectionTrayProps {\n title: ReactNode;\n description?: ReactNode;\n items: WorkbenchSelectionTrayItem[];\n onRemove?: (item: WorkbenchSelectionTrayItem) => void;\n removeLabel?: (item: WorkbenchSelectionTrayItem) => string;\n actions?: ReactNode;\n emptyState?: ReactNode;\n className?: string;\n}\n\nexport function WorkbenchSelectionTray({\n title,\n description,\n items,\n onRemove,\n removeLabel = () => \"Remove\",\n actions,\n emptyState = null,\n className,\n}: WorkbenchSelectionTrayProps) {\n return (\n <section\n data-monkeys-component=\"workbench-selection-tray\"\n className={cn(\n \"rounded-lg border border-border/70 bg-card p-4 text-card-foreground\",\n className,\n )}\n >\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h2 className=\"text-sm font-semibold text-foreground\">{title}</h2>\n {hasRenderableNode(description) ? (\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n <span className=\"rounded-full bg-primary/10 px-2.5 py-1 text-xs font-semibold tabular-nums text-primary\">\n {items.length}\n </span>\n </div>\n {items.length ? (\n <ul className=\"mt-3 flex flex-wrap gap-2\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex max-w-full items-center gap-2 rounded-full border border-border bg-background px-3 py-1.5 text-xs text-foreground\"\n >\n <span className=\"min-w-0 truncate font-medium\">{item.label}</span>\n {hasRenderableNode(item.meta) ? (\n <span className=\"shrink-0 text-muted-foreground\">{item.meta}</span>\n ) : null}\n {onRemove ? (\n <button\n type=\"button\"\n aria-label={removeLabel(item)}\n onClick={() => onRemove(item)}\n className=\"rounded-full px-1 text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\"\n >\n ×\n </button>\n ) : null}\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"mt-3 rounded-md border border-dashed border-border px-4 py-5 text-center text-xs text-muted-foreground\">\n {emptyState}\n </div>\n )}\n {hasRenderableNode(actions) ? (\n <div className=\"mt-4 flex flex-wrap justify-end gap-2 border-t border-border pt-4\">\n {actions}\n </div>\n ) : null}\n </section>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchEvidenceItem {\n id: string;\n title: ReactNode;\n description?: ReactNode;\n source?: ReactNode;\n timestamp?: ReactNode;\n marker?: ReactNode;\n action?: ReactNode;\n}\n\nexport interface WorkbenchEvidenceListProps {\n items: WorkbenchEvidenceItem[];\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nexport function WorkbenchEvidenceList({\n items,\n emptyState = null,\n ariaLabel = \"Evidence\",\n className,\n}: WorkbenchEvidenceListProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ol\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-evidence-list\"\n className={cn(\"grid min-w-0 gap-0\", className)}\n >\n {items.map((item, index) => (\n <li\n key={item.id}\n className=\"grid min-w-0 grid-cols-[1.25rem_minmax(0,1fr)_auto] gap-3\"\n >\n <span className=\"flex flex-col items-center\" aria-hidden=\"true\">\n <span className=\"mt-1 flex size-5 items-center justify-center rounded-full border border-primary/40 bg-primary/10 text-[0.625rem] font-semibold text-primary\">\n {item.marker || index + 1}\n </span>\n {index < items.length - 1 ? (\n <span className=\"min-h-8 w-px flex-1 bg-border\" />\n ) : null}\n </span>\n <span className=\"min-w-0 pb-5\">\n <span className=\"block text-sm font-semibold text-foreground\">\n {item.title}\n </span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {hasRenderableNode(item.source) ||\n hasRenderableNode(item.timestamp) ? (\n <span className=\"mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-[0.6875rem] text-muted-foreground\">\n {hasRenderableNode(item.source) ? (\n <span>{item.source}</span>\n ) : null}\n {hasRenderableNode(item.timestamp) ? (\n <time>{item.timestamp}</time>\n ) : null}\n </span>\n ) : null}\n </span>\n {hasRenderableNode(item.action) ? (\n <span className=\"pb-5\">{item.action}</span>\n ) : null}\n </li>\n ))}\n </ol>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchAssetGalleryItem {\n id: string;\n url: string;\n alt: string;\n title?: ReactNode;\n description?: ReactNode;\n badges?: ReactNode[];\n}\n\nexport interface WorkbenchAssetGalleryProps {\n items: WorkbenchAssetGalleryItem[];\n selectedItemId?: string;\n onItemSelect?: (item: WorkbenchAssetGalleryItem) => void;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchAssetGalleryItem,\n onItemSelect?: (item: WorkbenchAssetGalleryItem) => void,\n) => {\n if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchAssetGallery({\n items,\n selectedItemId,\n onItemSelect,\n emptyState = null,\n ariaLabel = \"Assets\",\n className,\n}: WorkbenchAssetGalleryProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ul\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-asset-gallery\"\n className={cn(\n \"grid min-w-0 gap-3 [grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))]\",\n className,\n )}\n >\n {items.map((item) => {\n const selected = selectedItemId === item.id;\n return (\n <li key={item.id} className=\"min-w-0\">\n <button\n type=\"button\"\n aria-pressed={onItemSelect ? selected : undefined}\n onClick={\n onItemSelect ? () => onItemSelect(item) : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"group w-full overflow-hidden rounded-lg border bg-card text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary ring-1 ring-primary\"\n : \"border-border/70 hover:border-primary/40\",\n !onItemSelect && \"cursor-default\",\n )}\n >\n <span className=\"block aspect-[4/3] overflow-hidden bg-muted\">\n <img\n src={item.url}\n alt={item.alt}\n loading=\"lazy\"\n className=\"size-full object-cover transition-transform duration-200 group-hover:scale-[1.02] motion-reduce:transition-none\"\n />\n </span>\n <span className=\"block p-3\">\n {hasRenderableNode(item.title) ? (\n <span className=\"block truncate text-sm font-semibold text-foreground\">\n {item.title}\n </span>\n ) : null}\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {item.badges?.length ? (\n <span className=\"mt-2 flex flex-wrap gap-1.5\">\n {item.badges.map((badge, index) => (\n <span\n key={`${item.id}:badge:${index}`}\n className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] text-secondary-foreground\"\n >\n {badge}\n </span>\n ))}\n </span>\n ) : null}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchRadarNavigationChild {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface WorkbenchRadarNavigationItem {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n children?: WorkbenchRadarNavigationChild[];\n}\n\nexport interface WorkbenchRadarWorkspaceProps {\n navigationItems?: WorkbenchRadarNavigationItem[];\n activeNavigationId?: string;\n onNavigationSelect?: (item: WorkbenchRadarNavigationItem) => void;\n navigationFooter?: ReactNode;\n navigation?: ReactNode;\n children: ReactNode;\n inspector?: ReactNode;\n inspectorLabel?: string;\n className?: string;\n contentClassName?: string;\n minimumHeight?: string | number;\n ariaLabel?: string;\n}\n\nconst radarWorkspaceStyle: CSSProperties = {\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n color: \"hsl(var(--foreground))\",\n};\n\nconst radarPanelStyle: CSSProperties = {\n backgroundColor: \"hsl(var(--radar-panel, var(--card)))\",\n borderColor: \"hsl(var(--radar-border, var(--border)))\",\n};\n\nexport interface WorkbenchRadarNavigationProps {\n items: WorkbenchRadarNavigationItem[];\n activeItemId?: string;\n onItemSelect?: (item: WorkbenchRadarNavigationItem) => void;\n footer?: ReactNode;\n ariaLabel?: string;\n}\n\nexport function WorkbenchRadarNavigation({\n items,\n activeItemId,\n onItemSelect,\n footer,\n ariaLabel = \"Radar navigation\",\n}: WorkbenchRadarNavigationProps) {\n return (\n <aside\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-radar-navigation\"\n className=\"flex min-h-0 flex-col overflow-hidden rounded-[calc(var(--radius)+0.25rem)] border\"\n style={radarPanelStyle}\n >\n <nav className=\"min-h-0 flex-1 overflow-y-auto p-3\">\n <ul className=\"grid gap-2\">\n {items.map((item) => {\n const active = item.id === activeItemId;\n return (\n <li key={item.id} className=\"grid gap-1\">\n <button\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n onClick={onItemSelect ? () => onItemSelect(item) : undefined}\n className={cn(\n \"flex min-h-11 w-full items-center gap-3 rounded-[var(--radius)] border border-transparent px-3 py-2 text-left text-sm font-semibold outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n active\n ? \"bg-primary text-primary-foreground shadow-[0_0_1.25rem_hsl(var(--primary)/0.28)]\"\n : \"text-muted-foreground hover:border-border hover:bg-muted/60 hover:text-foreground\",\n )}\n >\n {hasRenderableNode(item.icon) ? (\n <span className=\"flex size-5 shrink-0 items-center justify-center\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n </button>\n {item.children?.length ? (\n <ul className=\"ml-5 grid gap-0.5 border-l border-border/70 py-1 pl-3\">\n {item.children.map((child) => (\n <li key={child.id}>\n <div className=\"flex min-h-9 items-center gap-2 rounded-md px-2 text-xs font-medium text-muted-foreground\">\n {hasRenderableNode(child.icon) ? (\n <span className=\"flex size-4 shrink-0 items-center justify-center\" aria-hidden=\"true\">\n {child.icon}\n </span>\n ) : null}\n <span className=\"truncate\">{child.label}</span>\n </div>\n </li>\n ))}\n </ul>\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n {hasRenderableNode(footer) ? (\n <div className=\"border-t border-border/70 p-3\">{footer}</div>\n ) : null}\n </aside>\n );\n}\n\nexport function WorkbenchRadarWorkspace({\n navigationItems = [],\n activeNavigationId,\n onNavigationSelect,\n navigationFooter,\n navigation,\n children,\n inspector,\n inspectorLabel = \"Context controls\",\n className,\n contentClassName,\n minimumHeight = \"calc(100dvh - 1rem)\",\n ariaLabel = \"Radar workspace\",\n}: WorkbenchRadarWorkspaceProps) {\n return (\n <section\n data-monkeys-component=\"workbench-radar-workspace\"\n data-radar-active-navigation-id={activeNavigationId}\n aria-label={ariaLabel}\n className={cn(\n \"grid min-w-0 gap-3 overflow-hidden p-3 lg:grid-cols-[12.5rem_minmax(0,1fr)] xl:grid-cols-[12.5rem_minmax(0,1fr)_20rem]\",\n className,\n )}\n style={{ ...radarWorkspaceStyle, minHeight: minimumHeight }}\n >\n {hasRenderableNode(navigation) ? navigation : (\n <WorkbenchRadarNavigation\n items={navigationItems}\n activeItemId={activeNavigationId}\n onItemSelect={onNavigationSelect}\n footer={navigationFooter}\n />\n )}\n\n <div\n data-radar-workspace-region=\"content\"\n className={cn(\n \"relative min-h-[42rem] min-w-0 overflow-hidden rounded-[calc(var(--radius)+0.25rem)] border\",\n contentClassName,\n )}\n style={{\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n boxShadow: \"inset 0 0 0 1px hsl(var(--radar-grid, var(--border)) / 0.22)\",\n }}\n >\n {children}\n </div>\n\n {hasRenderableNode(inspector) ? (\n <aside\n aria-label={inspectorLabel}\n data-radar-workspace-region=\"inspector\"\n className=\"min-h-0 overflow-y-auto rounded-[calc(var(--radius)+0.25rem)] border lg:col-span-2 xl:col-span-1\"\n style={radarPanelStyle}\n >\n {inspector}\n </aside>\n ) : null}\n </section>\n );\n}\n\nexport function WorkbenchRadarInspectorSection({\n title,\n icon,\n description,\n children,\n className,\n}: {\n title: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n className?: string;\n}) {\n return (\n <section\n data-monkeys-component=\"workbench-radar-inspector-section\"\n className={cn(\"border-b border-border/70 p-4 last:border-b-0\", className)}\n >\n <div className=\"flex items-center gap-2 text-sm font-semibold text-primary\">\n {hasRenderableNode(icon) ? <span aria-hidden=\"true\">{icon}</span> : null}\n <h2>{title}</h2>\n </div>\n {hasRenderableNode(description) ? (\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">{description}</p>\n ) : null}\n {hasRenderableNode(children) ? <div className=\"mt-3\">{children}</div> : null}\n </section>\n );\n}\n\nexport function WorkbenchRadarFilterChip({\n label,\n value,\n icon,\n selected = false,\n onSelect,\n className,\n}: {\n label: ReactNode;\n value?: ReactNode;\n icon?: ReactNode;\n selected?: boolean;\n onSelect?: () => void;\n className?: string;\n}) {\n const Comp = onSelect ? \"button\" : \"div\";\n return (\n <Comp\n type={onSelect ? \"button\" : undefined}\n aria-pressed={onSelect ? selected : undefined}\n onClick={onSelect}\n className={cn(\n \"flex min-h-9 min-w-0 items-center gap-2 rounded-full border px-3 text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary bg-primary/20 text-primary\"\n : \"border-border bg-background/40 text-foreground hover:border-primary/60 hover:bg-primary/10\",\n className,\n )}\n >\n {hasRenderableNode(icon) ? <span className=\"shrink-0\" aria-hidden=\"true\">{icon}</span> : null}\n <span className=\"min-w-0 truncate\">{label}</span>\n {hasRenderableNode(value) ? <span className=\"ml-auto shrink-0 text-muted-foreground\">{value}</span> : null}\n </Comp>\n );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type {\n WorkbenchScatterAxis,\n WorkbenchScatterPoint,\n WorkbenchScatterThresholds,\n WorkbenchVisualizationTone,\n} from \"./WorkbenchScatterPlot\";\n\nexport interface WorkbenchRadarQuadrant {\n id: \"low-high\" | \"high-high\" | \"low-low\" | \"high-low\";\n title: ReactNode;\n description?: ReactNode;\n}\n\nexport interface WorkbenchRadarLegendItem {\n id: string;\n label: ReactNode;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRadarMatrixProps {\n points: WorkbenchScatterPoint[];\n xAxis: WorkbenchScatterAxis;\n yAxis: WorkbenchScatterAxis;\n thresholds?: WorkbenchScatterThresholds;\n quadrants?: WorkbenchRadarQuadrant[];\n legend?: WorkbenchRadarLegendItem[];\n selectedPointId?: string;\n onPointSelect?: (point: WorkbenchScatterPoint) => void;\n width?: number;\n height?: number;\n labelLimit?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n const candidates = finiteValues(values);\n const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n if (lower === upper) return [lower, upper + 1] as const;\n return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n value: number,\n domain: readonly [number, number],\n start: number,\n end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst toneVariable: Record<WorkbenchVisualizationTone, string> = {\n primary: \"--radar-series-one\",\n secondary: \"--radar-series-two\",\n accent: \"--radar-series-three\",\n muted: \"--radar-series-four\",\n};\n\nconst toneFallback: Record<WorkbenchVisualizationTone, string> = {\n primary: \"var(--primary)\",\n secondary: \"var(--secondary-foreground)\",\n accent: \"var(--accent-foreground)\",\n muted: \"var(--muted-foreground)\",\n};\n\nconst toneColor = (tone: WorkbenchVisualizationTone) =>\n `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;\n\nconst toneColorWithAlpha = (tone: WorkbenchVisualizationTone, alpha: number) =>\n `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;\n\nconst activatePoint = (\n event: KeyboardEvent<SVGGElement>,\n point: WorkbenchScatterPoint,\n onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onPointSelect(point);\n};\n\nconst quadrantPosition = {\n \"low-high\": { x: 26, y: 8, anchor: \"start\" as const },\n \"high-high\": { x: 974, y: 8, anchor: \"end\" as const },\n \"low-low\": { x: 26, y: 660, anchor: \"start\" as const },\n \"high-low\": { x: 974, y: 660, anchor: \"end\" as const },\n};\n\nexport function WorkbenchRadarMatrix({\n points,\n xAxis,\n yAxis,\n thresholds,\n quadrants = [],\n legend = [],\n selectedPointId,\n onPointSelect,\n width = 1000,\n height = 700,\n labelLimit = 18,\n emptyState = null,\n ariaLabel = `${xAxis.label} by ${yAxis.label} radar matrix`,\n className,\n}: WorkbenchRadarMatrixProps) {\n const validPoints = points.filter(\n (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n );\n if (!validPoints.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const xDomain = getDomain(\n validPoints.map((point) => point.x),\n xAxis.min,\n xAxis.max,\n );\n const yDomain = getDomain(\n validPoints.map((point) => point.y),\n yAxis.min,\n yAxis.max,\n );\n const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n const plotLeft = 0;\n const plotRight = width;\n const plotTop = 0;\n const plotBottom = height;\n const xThreshold = clamp(\n scale(\n Number.isFinite(thresholds?.x) ? Number(thresholds?.x) : (xDomain[0] + xDomain[1]) / 2,\n xDomain,\n plotLeft,\n plotRight,\n ),\n plotLeft,\n plotRight,\n );\n const yThreshold = clamp(\n scale(\n Number.isFinite(thresholds?.y) ? Number(thresholds?.y) : (yDomain[0] + yDomain[1]) / 2,\n yDomain,\n plotBottom,\n plotTop,\n ),\n plotTop,\n plotBottom,\n );\n const labelledPointIds = new Set(\n [...validPoints]\n .sort((left, right) => (right.size ?? 0) - (left.size ?? 0))\n .slice(0, labelLimit)\n .map((point) => point.id),\n );\n\n return (\n <div\n data-monkeys-component=\"workbench-radar-matrix\"\n className={cn(\"relative size-full min-h-[42rem] min-w-0 overflow-hidden\", className)}\n style={{\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n backgroundImage:\n \"radial-gradient(circle at 78% 20%, hsl(var(--primary) / 0.08), transparent 32%), radial-gradient(circle at 18% 82%, hsl(var(--radar-series-two, var(--accent-foreground)) / 0.06), transparent 30%)\",\n }}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n className=\"absolute inset-0 size-full\"\n role=\"img\"\n aria-label={ariaLabel}\n >\n <g aria-hidden=\"true\">\n {Array.from({ length: 13 }, (_, index) => {\n const x = (width / 12) * index;\n const y = (height / 12) * index;\n return (\n <g key={index}>\n <line\n x1={x}\n y1={0}\n x2={x}\n y2={height}\n style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n />\n <line\n x1={0}\n y1={y}\n x2={width}\n y2={y}\n style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n />\n </g>\n );\n })}\n <line\n x1={xThreshold}\n y1={0}\n x2={xThreshold}\n y2={height}\n strokeWidth=\"1.5\"\n style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n />\n <line\n x1={0}\n y1={yThreshold}\n x2={width}\n y2={yThreshold}\n strokeWidth=\"1.5\"\n style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n />\n </g>\n\n {quadrants.map((quadrant) => {\n const position = quadrantPosition[quadrant.id];\n return (\n <g key={quadrant.id} aria-hidden=\"true\">\n <text\n x={position.x}\n y={position.y + 20}\n textAnchor={position.anchor}\n className=\"fill-muted-foreground text-[0.8125rem] font-semibold\"\n >\n {quadrant.title}\n </text>\n {hasRenderableNode(quadrant.description) && typeof quadrant.description === \"string\" ? (\n <text\n x={position.x}\n y={position.y + 40}\n textAnchor={position.anchor}\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {quadrant.description}\n </text>\n ) : null}\n </g>\n );\n })}\n\n {validPoints.map((point, index) => {\n const x = clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40);\n const y = clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48);\n const tone = point.tone || (index % 2 === 0 ? \"primary\" : \"accent\");\n const selected = selectedPointId === point.id;\n const labelled = labelledPointIds.has(point.id);\n const radius = labelled\n ? clamp(scale(point.size ?? 1, sizeDomain, 5, 9), 5, 9)\n : 3.5;\n const fontSize = labelled\n ? clamp(scale(point.size ?? 1, sizeDomain, 14, 31), 14, 31)\n : 0;\n const pointStyle: CSSProperties = {\n fill: toneColor(tone),\n stroke: \"hsl(var(--foreground) / 0.74)\",\n };\n const labelStyle: CSSProperties = {\n fill: toneColor(tone),\n filter: `drop-shadow(0 0 0.65rem ${toneColorWithAlpha(tone, 0.72)})`,\n };\n return (\n <g\n key={point.id}\n transform={`translate(${x}, ${y})`}\n role={onPointSelect ? \"button\" : undefined}\n tabIndex={onPointSelect ? 0 : undefined}\n aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n aria-pressed={onPointSelect ? selected : undefined}\n onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n >\n {selected ? (\n <circle\n r={radius + 10}\n fill=\"none\"\n strokeWidth=\"2\"\n style={{ stroke: toneColorWithAlpha(tone, 0.48) }}\n />\n ) : null}\n <circle r={radius} strokeWidth=\"1.25\" style={pointStyle} />\n {labelled ? (\n <text\n y={-radius - 8}\n textAnchor=\"middle\"\n fontSize={fontSize}\n fontWeight=\"700\"\n style={labelStyle}\n className=\"pointer-events-none\"\n >\n {point.label.slice(0, 22)}\n </text>\n ) : null}\n <title>{point.description || point.label}</title>\n </g>\n );\n })}\n\n <circle\n cx={xThreshold}\n cy={yThreshold}\n r=\"10\"\n style={{ fill: \"hsl(var(--radar-axis, var(--primary)))\" }}\n />\n <circle cx={xThreshold} cy={yThreshold} r=\"3\" className=\"fill-primary-foreground\" />\n <text\n x={width / 2}\n y={height - 12}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {xAxis.label}\n </text>\n <text\n x=\"14\"\n y={height / 2}\n textAnchor=\"middle\"\n transform={`rotate(-90 14 ${height / 2})`}\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {yAxis.label}\n </text>\n </svg>\n\n <div\n className=\"absolute bottom-4 left-4 hidden w-44 overflow-hidden rounded-[var(--radius)] border bg-card/95 shadow-xl sm:block\"\n style={{ borderColor: \"hsl(var(--radar-border, var(--border)))\" }}\n aria-hidden=\"true\"\n >\n <div className=\"flex h-9 items-center justify-between border-b border-border px-3 text-xs font-semibold text-muted-foreground\">\n <span>−</span><span>100%</span><span>+</span>\n </div>\n <svg viewBox={`0 0 ${width} ${height}`} className=\"h-24 w-full\">\n <rect width={width} height={height} style={{ fill: \"hsl(var(--radar-canvas, var(--background)))\" }} />\n <line x1={xThreshold} y1={0} x2={xThreshold} y2={height} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n <line x1={0} y1={yThreshold} x2={width} y2={yThreshold} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n {validPoints.map((point, index) => (\n <circle\n key={point.id}\n cx={clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40)}\n cy={clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48)}\n r=\"8\"\n style={{ fill: toneColor(point.tone || (index % 2 === 0 ? \"primary\" : \"accent\")) }}\n />\n ))}\n <rect\n x={width * 0.22}\n y={height * 0.12}\n width={width * 0.58}\n height={height * 0.62}\n fill=\"none\"\n strokeWidth=\"8\"\n style={{ stroke: \"hsl(var(--primary))\" }}\n />\n </svg>\n </div>\n\n {legend.length ? (\n <div className=\"absolute bottom-4 left-1/2 hidden -translate-x-1/2 items-center gap-4 rounded-full border border-border bg-card/95 px-4 py-2 text-xs font-semibold shadow-xl md:flex\">\n {legend.map((item) => {\n const tone = item.tone || \"muted\";\n return (\n <span key={item.id} className=\"flex items-center gap-2 text-muted-foreground\">\n <span className=\"size-2 rounded-full\" style={{ backgroundColor: toneColor(tone) }} />\n {item.label}\n </span>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/workbench/WorkbenchResizableSidebar.tsx","../../../src/components/workbench/WorkbenchContentPane.tsx","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseButton.tsx","../../../src/components/base/internal/baseFieldContext.tsx","../../../src/components/base/BaseCheckbox.tsx","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/BaseContextMenu.tsx","../../../src/components/base/BaseDescriptionList.tsx","../../../src/components/base/BaseField.tsx","../../../src/components/base/BaseInput.tsx","../../../src/components/base/BaseSelect.tsx","../../../src/components/base/BaseSegmentedControl.tsx","../../../src/components/base/BaseTable.tsx","../../../src/components/workbench/WorkbenchGallerySettings.tsx","../../../src/components/workbench/WorkbenchContentToolbar.tsx","../../../src/components/workbench/WorkbenchDetailSidebar.tsx","../../../src/components/workbench/workbenchIconUtils.tsx","../../../src/components/workbench/WorkbenchTableView.tsx","../../../src/components/workbench/InteractiveTable.tsx","../../../src/components/workbench/workbenchGalleryUtils.tsx","../../../src/components/workbench/WorkbenchGalleryCard.tsx","../../../src/components/workbench/WorkbenchMasonryLayout.tsx","../../../src/components/workbench/WorkbenchGalleryView.tsx","../../../src/components/workbench/WorkbenchLaneView.tsx","../../../src/components/workbench/WorkbenchMetricGrid.tsx","../../../src/components/workbench/WorkbenchRelationshipGraph.tsx","../../../src/components/workbench/WorkbenchScatterPlot.tsx","../../../src/components/workbench/WorkbenchJourneyNavigation.tsx","../../../src/components/workbench/WorkbenchRankedList.tsx","../../../src/components/workbench/WorkbenchSelectionTray.tsx","../../../src/components/workbench/WorkbenchEvidenceList.tsx","../../../src/components/workbench/WorkbenchAssetGallery.tsx","../../../src/components/workbench/WorkbenchRadarWorkspace.tsx","../../../src/components/workbench/WorkbenchRadarMatrix.tsx"],"names":["WorkbenchResizableSidebar","forwardRef","WorkbenchContentPane","jsxs","jsx","BaseButton","createContext","useContext","useRef","useEffect","BaseCheckbox","useState","useCallback","Fragment","BaseContextMenuTrigger","BaseContextMenuContent","BaseContextMenuLabel","BaseContextMenuSeparator","BaseContextMenuItem","BaseContextMenuCheckboxItem","BaseContextMenuRadioItem","BaseContextMenuSubTrigger","BaseContextMenuSubContent","BaseField","useMemo","BaseInput","BaseSelect","useId","assignRef","clampWidth","BaseTableContainer","BaseTable","BaseTableHeader","BaseTableBody","BaseTableFooter","BaseTableRow","BaseTableHead","BaseTableCell","BaseTableCaption","BaseTableEmpty","WorkbenchContentToolbar","shouldRenderBodyWrapper","Children","isValidElement","WorkbenchDetailSidebar","toCssSize","defaultGetRowKey","normalizeColumnOrder","getOrderedColumns","defaultFormatLabel","summaryText","useLayoutEffect","getDefaultGalleryDetailLimit","getNormalizedGalleryBentoColumns","getNormalizedGalleryDetailLimit","toneClassNames","clamp","activateItem","finiteValues","getDomain","scale","activatePoint"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type ElementType,\n type ForwardedRef,\n type KeyboardEvent,\n type MutableRefObject,\n type MouseEvent,\n type PointerEvent,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchResizableSidebarItem {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n active?: boolean;\n disabled?: boolean;\n href?: string;\n to?: string;\n title?: string;\n endContent?: ReactNode;\n className?: string;\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nexport interface WorkbenchResizableSidebarSection {\n id: string;\n label?: ReactNode;\n items: WorkbenchResizableSidebarItem[];\n className?: string;\n labelClassName?: string;\n}\n\nexport interface WorkbenchResizableSidebarClassNames {\n root?: string;\n header?: string;\n title?: string;\n collapseButton?: string;\n list?: string;\n section?: string;\n sectionLabel?: string;\n item?: string;\n itemIcon?: string;\n itemLabel?: string;\n resizeHandle?: string;\n mobileNav?: string;\n mobileItem?: string;\n}\n\nexport interface WorkbenchResizableSidebarProps {\n title?: ReactNode;\n items: WorkbenchResizableSidebarItem[];\n sections?: WorkbenchResizableSidebarSection[];\n activeItemId?: string;\n itemAs?: ElementType;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n width?: number;\n onWidthChange?: (width: number) => void;\n defaultWidth?: number;\n minWidth?: number;\n maxWidth?: number;\n collapsedWidth?: number;\n collapseThreshold?: number;\n storageKey?: string;\n resizable?: boolean;\n collapsible?: boolean;\n collapseLabel?: string;\n expandLabel?: string;\n resizeLabel?: string;\n desktopClassName?: string;\n mobileClassName?: string;\n className?: string;\n classNames?: WorkbenchResizableSidebarClassNames;\n style?: CSSProperties;\n}\n\nfunction ClampIcon({ expanded }: { expanded: boolean }) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <path\n d=\"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={expanded ? '' : 'hidden'}\n />\n <path\n d=\"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={expanded ? 'hidden' : ''}\n />\n </svg>\n );\n}\n\nfunction ResizeGripIcon() {\n return (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-1/2 top-3 bottom-3 w-px translate-x-1/2 rounded-full bg-border/65 opacity-0 transition-opacity group-hover/resize:opacity-100\"\n />\n );\n}\n\nfunction getItemTitle(item: WorkbenchResizableSidebarItem) {\n if (item.title) return item.title;\n return typeof item.label === 'string' ? item.label : undefined;\n}\n\nfunction clampWidth(width: number, minWidth: number, maxWidth: number) {\n return Math.min(Math.max(width, minWidth), maxWidth);\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<T | null>).current = node;\n }\n}\n\nfunction readStoredLayout(\n storageKey: string | undefined,\n options: {\n defaultCollapsed: boolean;\n defaultWidth: number;\n minWidth: number;\n maxWidth: number;\n },\n) {\n const fallback = {\n collapsed: options.defaultCollapsed,\n width: clampWidth(options.defaultWidth, options.minWidth, options.maxWidth),\n };\n\n if (typeof window === 'undefined' || !storageKey) return fallback;\n\n try {\n const rawValue = window.localStorage.getItem(storageKey);\n if (!rawValue) return fallback;\n\n const parsedValue = JSON.parse(rawValue) as Partial<{ collapsed: boolean; width: number }>;\n return {\n collapsed: typeof parsedValue.collapsed === 'boolean' ? parsedValue.collapsed : fallback.collapsed,\n width: typeof parsedValue.width === 'number' && Number.isFinite(parsedValue.width)\n ? clampWidth(parsedValue.width, options.minWidth, options.maxWidth)\n : fallback.width,\n };\n } catch {\n return fallback;\n }\n}\n\nexport const WorkbenchResizableSidebar = forwardRef<HTMLElement, WorkbenchResizableSidebarProps>(\n function WorkbenchResizableSidebar(\n {\n title,\n items,\n sections = [],\n activeItemId,\n itemAs,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n width,\n onWidthChange,\n defaultWidth = 220,\n minWidth = 180,\n maxWidth = 420,\n collapsedWidth = 60,\n collapseThreshold = 140,\n storageKey,\n resizable = true,\n collapsible = true,\n collapseLabel = 'Collapse sidebar',\n expandLabel = 'Expand sidebar',\n resizeLabel = 'Resize sidebar',\n desktopClassName = 'hidden md:flex',\n mobileClassName = 'flex md:hidden',\n className,\n classNames,\n style,\n },\n ref,\n ) {\n const initialLayoutRef = useRef<ReturnType<typeof readStoredLayout> | null>(null);\n if (!initialLayoutRef.current) {\n initialLayoutRef.current = readStoredLayout(storageKey, {\n defaultCollapsed,\n defaultWidth,\n minWidth,\n maxWidth,\n });\n }\n\n const sidebarRef = useRef<HTMLElement | null>(null);\n const [internalCollapsed, setInternalCollapsed] = useState(initialLayoutRef.current.collapsed);\n const [internalWidth, setInternalWidth] = useState(initialLayoutRef.current.width);\n const [isResizing, setIsResizing] = useState(false);\n const resolvedCollapsed = collapsed ?? internalCollapsed;\n const resolvedWidth = width ?? internalWidth;\n const isCollapsedControlled = collapsed !== undefined;\n const isWidthControlled = width !== undefined;\n\n const setSidebarRef = (node: HTMLElement | null) => {\n sidebarRef.current = node;\n assignRef(ref, node);\n };\n\n const updateCollapsed = (nextCollapsed: boolean) => {\n if (!collapsible && nextCollapsed) return;\n if (!isCollapsedControlled) {\n setInternalCollapsed(nextCollapsed);\n }\n onCollapsedChange?.(nextCollapsed);\n };\n\n const updateWidth = (nextWidth: number) => {\n const clampedWidth = clampWidth(nextWidth, minWidth, maxWidth);\n if (!isWidthControlled) {\n setInternalWidth(clampedWidth);\n }\n onWidthChange?.(clampedWidth);\n };\n\n const startResize = (event: PointerEvent<HTMLButtonElement>) => {\n if (!resizable) return;\n event.preventDefault();\n setIsResizing(true);\n };\n\n const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (!resizable) return;\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n\n event.preventDefault();\n if (event.key === 'ArrowLeft') {\n const nextWidth = resolvedWidth - 24;\n if (nextWidth < collapseThreshold && collapsible) {\n updateCollapsed(true);\n return;\n }\n updateWidth(nextWidth);\n } else {\n if (resolvedCollapsed) {\n updateCollapsed(false);\n updateWidth(Math.max(resolvedWidth, minWidth));\n return;\n }\n updateWidth(resolvedWidth + 24);\n }\n };\n\n useEffect(() => {\n if (typeof window === 'undefined' || !storageKey) return;\n\n window.localStorage.setItem(storageKey, JSON.stringify({\n collapsed: resolvedCollapsed,\n width: clampWidth(resolvedWidth, minWidth, maxWidth),\n }));\n }, [maxWidth, minWidth, resolvedCollapsed, resolvedWidth, storageKey]);\n\n useEffect(() => {\n if (!isResizing) return undefined;\n\n const handlePointerMove = (event: globalThis.PointerEvent) => {\n const sidebarNode = sidebarRef.current;\n if (!sidebarNode) return;\n\n const nextWidth = event.clientX - sidebarNode.getBoundingClientRect().left;\n if (nextWidth < collapseThreshold && collapsible) {\n updateCollapsed(true);\n return;\n }\n\n updateCollapsed(false);\n updateWidth(nextWidth);\n };\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n return () => {\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n }, [collapseThreshold, collapsible, isResizing, maxWidth, minWidth, resolvedWidth, resolvedCollapsed]);\n\n const resolvedItems = sections.length\n ? [...items, ...sections.flatMap((section) => section.items)]\n : items;\n\n const renderItem = (item: WorkbenchResizableSidebarItem, mobile = false) => {\n const active = item.active ?? item.id === activeItemId;\n const ItemComponent = itemAs ?? (item.href ? 'a' : 'button');\n const itemTitle = getItemTitle(item);\n const itemProps = {\n ...(item.to ? { to: item.to } : {}),\n ...(item.href ? { href: item.href } : {}),\n ...(ItemComponent === 'button' ? { type: 'button' } : {}),\n title: itemTitle,\n 'aria-current': active ? 'page' : undefined,\n 'aria-disabled': item.disabled || undefined,\n tabIndex: item.disabled ? -1 : undefined,\n onClick: (event: MouseEvent<HTMLElement>) => {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.onClick?.(event);\n },\n };\n\n return (\n <ItemComponent\n key={item.id}\n {...itemProps}\n data-active={active ? 'true' : 'false'}\n className={cn(\n mobile\n ? 'inline-flex h-9 shrink-0 items-center gap-2 rounded-lg border px-3 text-xs font-medium transition-colors'\n : 'relative flex h-9 w-full items-center justify-between gap-2 overflow-hidden rounded-md border px-2 text-left text-[12px] shadow-none transition-colors',\n mobile\n ? active\n ? 'border-primary/40 bg-primary/12 text-foreground'\n : 'border-border/60 bg-card/60 text-muted-foreground hover:bg-card/80 hover:text-foreground'\n : active\n ? 'border-primary/40 bg-primary/12 text-foreground shadow-sm'\n : 'border-border/60 bg-card/60 text-foreground hover:border-primary/20 hover:bg-card/80',\n !mobile && resolvedCollapsed && 'justify-center px-0',\n item.disabled && 'pointer-events-none opacity-50',\n mobile ? classNames?.mobileItem : classNames?.item,\n item.className,\n )}\n >\n <span className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center [&_svg]:h-3.5 [&_svg]:w-3.5', classNames?.itemIcon)}>\n {item.icon}\n </span>\n {mobile || !resolvedCollapsed ? (\n <span className={cn('min-w-0 flex-1 truncate', classNames?.itemLabel)}>\n {item.label}\n </span>\n ) : null}\n {!mobile && !resolvedCollapsed && item.endContent !== undefined && item.endContent !== null ? (\n <span className=\"shrink-0\">{item.endContent}</span>\n ) : null}\n </ItemComponent>\n );\n };\n\n return (\n <>\n <aside\n ref={setSidebarRef}\n data-workbench-resizable-sidebar\n data-collapsed={resolvedCollapsed ? 'true' : 'false'}\n className={cn(\n 'relative z-20 h-full min-h-0 flex-shrink-0 flex-col rounded-xl border border-border/70 bg-card p-3 text-card-foreground shadow-sm',\n 'transition-[width,opacity] duration-300',\n resolvedCollapsed && 'items-center',\n desktopClassName,\n classNames?.root,\n className,\n )}\n style={{\n width: resolvedCollapsed ? collapsedWidth : resolvedWidth,\n transition: isResizing ? 'none' : undefined,\n ...style,\n }}\n >\n {resizable ? (\n <button\n type=\"button\"\n aria-label={resizeLabel}\n title={resizeLabel}\n className={cn('group/resize absolute -right-1.5 bottom-0 top-0 z-50 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-primary/30', classNames?.resizeHandle)}\n onPointerDown={startResize}\n onKeyDown={handleResizeKeyDown}\n >\n <ResizeGripIcon />\n </button>\n ) : null}\n\n <div className=\"flex h-full w-full min-w-0 flex-col overflow-visible\">\n <div className={cn('mb-3 flex min-w-0 items-center gap-2', resolvedCollapsed ? 'justify-center px-0' : 'justify-between px-2', classNames?.header)}>\n {!resolvedCollapsed && title ? (\n <div className={cn('min-w-0 truncate text-[11px] font-medium uppercase text-muted-foreground', classNames?.title)}>\n {title}\n </div>\n ) : null}\n {collapsible ? (\n <button\n type=\"button\"\n className={cn('inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30', classNames?.collapseButton)}\n aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n title={resolvedCollapsed ? expandLabel : collapseLabel}\n onClick={() => updateCollapsed(!resolvedCollapsed)}\n >\n <ClampIcon expanded={!resolvedCollapsed} />\n </button>\n ) : null}\n </div>\n <div className={cn('min-h-0 flex-1 space-y-2 overflow-y-auto', resolvedCollapsed && 'flex w-full flex-col items-center', classNames?.list)}>\n {items.map((item) => renderItem(item))}\n {sections.map((section) => (\n <div\n key={section.id}\n className={cn('flex w-full flex-col gap-2', classNames?.section, section.className)}\n >\n {!resolvedCollapsed && section.label ? (\n <div\n className={cn(\n 'px-2 text-[11px] font-medium text-muted-foreground',\n classNames?.sectionLabel,\n section.labelClassName,\n )}\n >\n {section.label}\n </div>\n ) : null}\n {section.items.map((item) => renderItem(item))}\n </div>\n ))}\n </div>\n </div>\n </aside>\n <nav className={cn('gap-2 overflow-x-auto pb-1', mobileClassName, classNames?.mobileNav)} aria-label={typeof title === 'string' ? title : undefined}>\n {resolvedItems.map((item) => renderItem(item, true))}\n </nav>\n </>\n );\n },\n);\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchContentPaneClassNames {\n root?: string;\n header?: string;\n body?: string;\n footer?: string;\n}\n\nexport interface WorkbenchContentPaneBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n className?: string;\n}\n\nexport interface WorkbenchContentPaneProps extends Omit<ComponentPropsWithoutRef<'section'>, 'children' | 'className' | 'style'> {\n as?: ElementType;\n bodyAs?: ElementType;\n header?: ReactNode;\n footer?: ReactNode;\n children?: ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n bodyProps?: WorkbenchContentPaneBodyProps;\n classNames?: WorkbenchContentPaneClassNames;\n style?: CSSProperties;\n [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n header?: ReactNode;\n footer?: ReactNode;\n bodyAs?: ElementType;\n bodyClassName?: string;\n bodyProps?: WorkbenchContentPaneBodyProps;\n classNames?: WorkbenchContentPaneClassNames;\n}) {\n return Boolean(\n props.header ||\n props.footer ||\n props.bodyAs ||\n props.bodyClassName ||\n props.bodyProps ||\n props.classNames?.body,\n );\n}\n\nexport const WorkbenchContentPane = forwardRef<HTMLElement, WorkbenchContentPaneProps>(\n function WorkbenchContentPane(\n {\n as: Component = 'section',\n bodyAs: BodyComponent = 'div',\n header,\n footer,\n children,\n className,\n headerClassName,\n bodyClassName,\n footerClassName,\n bodyProps,\n classNames,\n style,\n ...props\n },\n ref,\n ) {\n const renderBodyWrapper = shouldRenderBodyWrapper({\n header,\n footer,\n bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n bodyClassName,\n bodyProps,\n classNames,\n });\n const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n return (\n <Component\n ref={ref}\n data-workbench-content-pane\n className={cn(\n 'workbench-surface-subtle flex h-full min-w-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/50 transition-all duration-300 dark:border-border/40',\n classNames?.root,\n className,\n )}\n style={style}\n {...props}\n >\n {header ? (\n <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n {header}\n </div>\n ) : null}\n {renderBodyWrapper ? (\n <BodyComponent\n className={cn('min-h-0 flex-1 overflow-hidden', classNames?.body, bodyClassName, bodyPropsClassName)}\n {...restBodyProps}\n >\n {children}\n </BodyComponent>\n ) : (\n children\n )}\n {footer ? (\n <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n {footer}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n agentWorkbench: {\n label: 'Session activity',\n reasoning: 'Reasoning',\n plan: 'Plan',\n taskNoDetail: 'No additional details',\n modes: { chatbot: 'Chatbot', agent: 'Agent' },\n composer: {\n send: 'Send message',\n stop: 'Stop generating',\n queue: 'Queue message',\n attach: 'Add photos or files',\n voice: 'Start voice input',\n webSearch: 'Web search',\n model: 'Model',\n reasoning: 'Reasoning effort',\n permissions: 'Permissions',\n removeAttachment: 'Remove attachment',\n editQueued: 'Edit queued message',\n deleteQueued: 'Delete queued message',\n moveUp: 'Move message up',\n moveDown: 'Move message down',\n queued: 'Queued messages',\n uploading: 'Uploading',\n noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n tool: {\n input: 'Input',\n output: 'Output',\n status: {\n pending: 'Pending',\n running: 'Running',\n completed: 'Completed',\n failed: 'Error',\n denied: 'Denied',\n },\n },\n approval: {\n approve: 'Approve',\n reject: 'Reject',\n approved: 'Approved',\n rejected: 'Rejected',\n },\n artifact: {\n pending: 'Preparing',\n ready: 'Ready',\n failed: 'Failed',\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: 'Stopping...',\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n usage: {\n label: 'Context usage',\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: 'Search agents and sessions',\n searchShortcut: 'Focus search',\n clearSearch: 'Clear search',\n tabsLabel: 'Agent workbench navigation',\n agents: 'Agents',\n sessions: 'Sessions',\n newAgent: 'New Agent',\n newSession: 'New Session',\n capabilities: 'Capabilities & Extensions',\n settings: 'Agent Settings',\n allAgents: 'All Agents',\n recentSessions: 'Recent Sessions',\n builtIn: 'Built-in',\n noDescription: 'No description',\n loading: 'Loading...',\n emptyAgents: 'No agents yet',\n emptySessions: 'No sessions yet',\n noResults: 'No matching results',\n retry: 'Retry',\n pin: 'Pin',\n unpin: 'Unpin',\n rename: 'Rename',\n delete: 'Delete',\n actions: 'Actions',\n save: 'Save',\n cancel: 'Cancel',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: 'Task details',\n description: 'Summary and workspace activity',\n duration: 'Duration',\n updated: 'Updated',\n model: 'Model',\n mode: 'Mode',\n permissions: 'Permissions',\n tokenUsage: 'Token usage',\n summary: 'Summary',\n summaryEmpty: 'No summary is available yet.',\n summaryFailed: 'The summary could not be generated.',\n highlights: 'Highlights',\n pendingItems: 'Pending items',\n tabs: {\n label: 'Task detail views',\n summary: 'Summary',\n workspace: 'Workspace',\n },\n status: {\n queued: 'Queued',\n running: 'Running',\n waiting_approval: 'Waiting for approval',\n stopping: 'Stopping',\n stopped: 'Stopped',\n completed: 'Completed',\n failed: 'Failed',\n },\n state: {\n loading: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseButtonProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst buttonSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nconst iconOnlySizeClassNames = {\n sm: 'h-8 w-8 px-0',\n md: 'h-9 w-9 px-0',\n lg: 'h-10 w-10 px-0',\n} as const;\n\nconst iconSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nfunction nonEmptyText(value: string | undefined) {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction LoadingIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-full w-full motion-safe:animate-spin motion-reduce:animate-none\"\n fill=\"none\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n className=\"opacity-25\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n />\n </svg>\n );\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(\n {\n children,\n label,\n icon,\n endIcon,\n type = 'button',\n title,\n ariaLabel,\n tone,\n size,\n active = false,\n iconOnly = false,\n disabled = false,\n loading = false,\n stopPropagation = false,\n appearance,\n variant,\n density,\n state,\n className,\n classNames,\n style,\n onClick,\n 'aria-label': nativeAriaLabel,\n ...buttonProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['active', active],\n ['iconOnly', iconOnly],\n ['disabled', disabled],\n ['loading', loading],\n ['stopPropagation', stopPropagation],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseButton ${name} must be a boolean.`);\n }\n }\n if (size !== undefined && size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseButton size must be \"sm\", \"md\", or \"lg\".');\n }\n if (\n tone !== undefined &&\n tone !== 'default' &&\n tone !== 'primary' &&\n tone !== 'success' &&\n tone !== 'warning' &&\n tone !== 'danger' &&\n tone !== 'muted'\n ) {\n throw new TypeError(\n 'BaseButton tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance({\n ...resolvedAppearance,\n variant,\n density,\n state,\n });\n const resolvedLabel = children ?? label;\n const hasLabel =\n hasRenderableNode(resolvedLabel) &&\n (typeof resolvedLabel !== 'string' || Boolean(resolvedLabel.trim()));\n const explicitAriaLabel =\n nonEmptyText(ariaLabel) ?? nonEmptyText(nativeAriaLabel);\n const labelText =\n typeof resolvedLabel === 'string'\n ? nonEmptyText(resolvedLabel)\n : undefined;\n const resolvedTitle = nonEmptyText(title);\n if (iconOnly && !hasLabel && !explicitAriaLabel && !resolvedTitle) {\n throw new TypeError(\n 'BaseButton iconOnly requires ariaLabel, aria-label, title, or a renderable label.',\n );\n }\n const resolvedAriaLabel =\n explicitAriaLabel ??\n labelText ??\n resolvedTitle;\n const resolvedDisabled = disabled || loading;\n const resolvedTone = tone ?? 'default';\n const resolvedState = state ?? (loading\n ? 'loading'\n : disabled\n ? 'disabled'\n : active\n ? 'active'\n : 'idle');\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n if (resolvedDisabled) return;\n onClick?.(event);\n };\n\n return (\n <button\n {...componentAttributes}\n {...buttonProps}\n ref={ref}\n type={type}\n title={title}\n aria-label={resolvedAriaLabel}\n aria-pressed={active || undefined}\n aria-busy={loading || undefined}\n data-variant={theme.variant}\n data-density={theme.density}\n disabled={resolvedDisabled}\n data-monkeys-component=\"button\"\n data-slot=\"root\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n data-active={active || undefined}\n data-loading={loading || undefined}\n data-disabled={resolvedDisabled || undefined}\n data-icon-only={iconOnly || undefined}\n className={cn(\n theme.slots.buttonBase,\n iconOnly && theme.slots.buttonIconOnly,\n size && buttonSizeClassNames[size],\n iconOnly && size && iconOnlySizeClassNames[size],\n getBaseButtonToneClassName(theme, tone, active),\n resolvedDisabled && theme.slots.buttonDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.button,\n ...(active ? theme.styles.buttonActive : undefined),\n ...(resolvedDisabled ? theme.styles.buttonDisabled : undefined),\n ...style,\n }}\n onClick={handleClick}\n >\n {loading ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n <LoadingIcon />\n </span>\n ) : icon ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n {icon}\n </span>\n ) : null}\n {iconOnly ? (\n hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className=\"sr-only\"\n >\n {resolvedLabel}\n </span>\n ) : null\n ) : hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(theme.slots.buttonLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n {!loading && endIcon ? (\n <span\n data-slot=\"end-icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n classNames?.endIcon,\n )}\n >\n {endIcon}\n </span>\n ) : null}\n </button>\n );\n },\n);\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\n\nexport type BaseFieldControlValue = string | boolean;\n\nexport function resolveBaseFieldValidationResult(result: unknown) {\n if (result === null) return null;\n if (typeof result === 'string' && result.trim().length > 0) return result;\n throw new TypeError(\n 'BaseField validate must return a non-empty error string or null.',\n );\n}\n\ninterface BaseFieldContextValue {\n invalid: boolean;\n registerControl: (controlKey: symbol) => () => void;\n notifyBlur: (value: BaseFieldControlValue) => void;\n notifyChange: (value: BaseFieldControlValue) => void;\n}\n\nexport const BaseFieldContext = createContext<BaseFieldContextValue | null>(\n null,\n);\n\nexport function useBaseFieldControl() {\n const context = useContext(BaseFieldContext);\n const controlKeyRef = useRef<symbol | null>(null);\n if (controlKeyRef.current === null) {\n controlKeyRef.current = Symbol('BaseFieldControl');\n }\n\n const registerControl = context?.registerControl;\n useEffect(() => {\n if (!registerControl || controlKeyRef.current === null) return undefined;\n return registerControl(controlKeyRef.current);\n }, [registerControl]);\n\n const notifyBlur = context?.notifyBlur;\n const notifyChange = context?.notifyChange;\n\n return {\n invalid: context?.invalid ?? false,\n notifyBlur: useCallback(\n (value: BaseFieldControlValue) => notifyBlur?.(value),\n [notifyBlur],\n ),\n notifyChange: useCallback(\n (value: BaseFieldControlValue) => notifyChange?.(value),\n [notifyChange],\n ),\n };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type Ref,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseCheckboxProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasNonEmptyRenderableNode, hasRenderableNode } from './utils';\n\nconst boxSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nconst indicatorSizeClassNames = {\n sm: 'text-[10px]',\n md: 'text-[11px]',\n lg: 'text-xs',\n} as const;\n\nfunction setRefs<TElement>(\n element: TElement | null,\n ...refs: Array<Ref<TElement> | undefined>\n) {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === 'function') {\n ref(element);\n continue;\n }\n (ref as { current: TElement | null }).current = element;\n }\n}\n\nexport const BaseCheckbox = forwardRef<HTMLInputElement, BaseCheckboxProps>(\n function BaseCheckbox(\n {\n label,\n description,\n indeterminate = false,\n invalid = false,\n disabled = false,\n controlSize,\n appearance,\n className,\n classNames,\n style,\n checked,\n defaultChecked,\n onBlur,\n onChange,\n 'aria-invalid': nativeAriaInvalid,\n ...checkboxProps\n },\n forwardedRef,\n ) {\n for (const [name, value] of [\n ['indeterminate', indeterminate],\n ['invalid', invalid],\n ['disabled', disabled],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseCheckbox ${name} must be a boolean.`);\n }\n }\n if (\n controlSize !== undefined &&\n controlSize !== 'sm' &&\n controlSize !== 'md' &&\n controlSize !== 'lg'\n ) {\n throw new TypeError(\n 'BaseCheckbox controlSize must be \"sm\", \"md\", or \"lg\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n const hasLabel = hasRenderableNode(label);\n const hasDescription = hasNonEmptyRenderableNode(description);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const indeterminateRef = useRef(indeterminate);\n indeterminateRef.current = indeterminate;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(\n defaultChecked ?? false,\n );\n const isControlled = checked !== undefined;\n const resolvedChecked = Boolean(isControlled ? checked : uncontrolledChecked);\n const active = indeterminate || resolvedChecked;\n const state = indeterminate\n ? 'mixed'\n : resolvedChecked\n ? 'checked'\n : 'unchecked';\n\n const setInputRef = useCallback(\n (element: HTMLInputElement | null) => {\n inputRef.current = element;\n if (element) element.indeterminate = indeterminateRef.current;\n setRefs(element, forwardedRef);\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) {\n setUncontrolledChecked(event.currentTarget.checked);\n }\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.checked);\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n };\n\n return (\n <label\n {...componentAttributes}\n data-monkeys-component=\"checkbox\"\n data-slot=\"root\"\n data-state={state}\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.checkboxRoot,\n !hasDescription && 'items-center',\n disabled && theme.slots.checkboxDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.checkboxRoot,\n ...style,\n }}\n >\n <span\n data-slot=\"box\"\n data-state={state}\n data-size={controlSize}\n className={cn(\n theme.slots.checkboxBox,\n !hasDescription && 'mt-0',\n active && theme.slots.checkboxBoxChecked,\n resolvedInvalid && theme.slots.checkboxBoxInvalid,\n controlSize && boxSizeClassNames[controlSize],\n classNames?.box,\n )}\n style={{\n ...theme.styles.checkboxBox,\n }}\n >\n <input\n {...checkboxProps}\n ref={setInputRef}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-checked={indeterminate ? 'mixed' : resolvedChecked}\n data-slot=\"input\"\n data-state={state}\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.checkboxInput, classNames?.input)}\n onBlur={(event) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.checked);\n }}\n onChange={handleChange}\n />\n {active ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"indicator\"\n data-state={state}\n data-size={controlSize}\n className={cn(\n theme.slots.checkboxIndicator,\n controlSize && indicatorSizeClassNames[controlSize],\n classNames?.indicator,\n )}\n >\n {indeterminate ? '–' : '✓'}\n </span>\n ) : null}\n </span>\n {hasLabel || hasDescription ? (\n <span\n data-slot=\"content\"\n className={cn(theme.slots.checkboxContent, classNames?.content)}\n >\n {hasLabel ? (\n <span\n data-slot=\"label\"\n className={cn(theme.slots.checkboxLabel, classNames?.label)}\n >\n {label}\n </span>\n ) : null}\n {hasDescription ? (\n <span\n data-slot=\"description\"\n className={cn(\n theme.slots.checkboxDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n ) : null}\n </label>\n );\n },\n);\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import * as ContextMenu from '@radix-ui/react-context-menu';\nimport { forwardRef, type ComponentRef, type ReactNode } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysDirection,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\n\nimport type {\n BaseContextMenuCheckboxItemProps,\n BaseContextMenuContentProps,\n BaseContextMenuItemProps,\n BaseContextMenuLabelProps,\n BaseContextMenuProps,\n BaseContextMenuRadioGroupProps,\n BaseContextMenuRadioItemProps,\n BaseContextMenuSeparatorProps,\n BaseContextMenuSubContentProps,\n BaseContextMenuSubProps,\n BaseContextMenuSubTriggerProps,\n BaseContextMenuTriggerProps,\n} from './types';\nimport {\n getBaseMenuItemToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst contextMenuTones = [\n 'default',\n 'primary',\n 'success',\n 'warning',\n 'danger',\n 'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseContextMenu ${name} must be a boolean.`);\n }\n}\n\nfunction validateTone(value: unknown) {\n if (\n value !== undefined &&\n !contextMenuTones.includes(\n value as (typeof contextMenuTones)[number],\n )\n ) {\n throw new TypeError(\n 'BaseContextMenu tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n}\n\nfunction validateDirection(value: unknown) {\n if (value !== undefined && value !== 'ltr' && value !== 'rtl') {\n throw new TypeError('BaseContextMenu dir must be \"ltr\" or \"rtl\".');\n }\n}\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"M3.5 8.5 6.5 11.5 12.5 4.5\" />\n </svg>\n );\n}\n\nfunction DotIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"currentColor\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"3\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"m6 4 4 4-4 4\" />\n </svg>\n );\n}\n\nfunction renderItemContent({\n label,\n icon,\n shortcut,\n children,\n classNames,\n inset,\n indicator,\n}: Pick<\n BaseContextMenuItemProps,\n 'children' | 'classNames' | 'icon' | 'inset' | 'label' | 'shortcut'\n> & {\n indicator?: ReactNode;\n}) {\n const resolvedLabel = children ?? label;\n\n return (\n <>\n {indicator ? indicator : null}\n {hasRenderableNode(icon) ? (\n <span data-slot=\"icon\" className={cn(classNames?.icon)}>\n {icon}\n </span>\n ) : inset ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"icon\"\n className=\"h-4 w-4 shrink-0\"\n />\n ) : null}\n {hasRenderableNode(resolvedLabel) ? (\n <span data-slot=\"label\" className={cn(classNames?.label)}>\n {resolvedLabel}\n </span>\n ) : null}\n {hasRenderableNode(shortcut) ? (\n <span data-slot=\"shortcut\" className={cn(classNames?.shortcut)}>\n {shortcut}\n </span>\n ) : null}\n </>\n );\n}\n\nexport function BaseContextMenu({\n children,\n trigger,\n content,\n disabled = false,\n modal = true,\n dir,\n appearance,\n className,\n classNames,\n onOpenChange,\n}: BaseContextMenuProps) {\n validateBoolean(disabled, 'disabled');\n validateBoolean(modal, 'modal');\n validateDirection(dir);\n const inheritedDirection = useMonkeysDirection();\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n\n return (\n <ContextMenu.Root\n onOpenChange={onOpenChange}\n modal={modal}\n dir={dir ?? inheritedDirection}\n >\n {trigger ? (\n <BaseContextMenuTrigger\n disabled={disabled}\n appearance={resolvedAppearance}\n className={cn(classNames?.trigger, className)}\n >\n {trigger}\n </BaseContextMenuTrigger>\n ) : null}\n {content ? (\n <BaseContextMenuContent\n appearance={resolvedAppearance}\n className={classNames?.content}\n >\n {content}\n </BaseContextMenuContent>\n ) : null}\n {children}\n </ContextMenu.Root>\n );\n}\n\nexport const BaseContextMenuTrigger = forwardRef<\n ComponentRef<typeof ContextMenu.Trigger>,\n BaseContextMenuTriggerProps\n>(function BaseContextMenuTrigger(\n {\n children,\n disabled = false,\n asChild = false,\n appearance,\n className,\n style,\n ...triggerProps\n },\n ref,\n) {\n validateBoolean(disabled, 'Trigger disabled');\n validateBoolean(asChild, 'Trigger asChild');\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Trigger\n {...componentAttributes}\n {...triggerProps}\n ref={ref}\n asChild={asChild}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"trigger\"\n data-disabled={disabled || undefined}\n className={cn(\n !asChild && theme.slots.menuTrigger,\n disabled && !asChild && theme.slots.menuItemDisabled,\n className,\n )}\n style={style}\n >\n {children}\n </ContextMenu.Trigger>\n );\n});\n\nexport const BaseContextMenuContent = forwardRef<\n ComponentRef<typeof ContextMenu.Content>,\n BaseContextMenuContentProps\n>(function BaseContextMenuContent(\n {\n children,\n appearance,\n className,\n classNames,\n style,\n ...contentProps\n },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const portal = useBaseOverlayPortal();\n const content = (\n <ContextMenu.Content\n {...componentAttributes}\n {...contentProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"content\"\n className={cn(theme.slots.menuContent, classNames?.root, className)}\n style={{\n ...theme.styles.menuContent,\n ...style,\n }}\n >\n {children}\n </ContextMenu.Content>\n );\n\n return portal.shouldPortal ? (\n <ContextMenu.Portal {...portal.radixPortalProps}>\n {content}\n </ContextMenu.Portal>\n ) : content;\n});\n\nexport const BaseContextMenuLabel = forwardRef<\n ComponentRef<typeof ContextMenu.Label>,\n BaseContextMenuLabelProps\n>(function BaseContextMenuLabel(\n { children, appearance, className, style, ...labelProps },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Label\n {...componentAttributes}\n {...labelProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"label\"\n className={cn(theme.slots.menuLabel, className)}\n style={style}\n >\n {children}\n </ContextMenu.Label>\n );\n});\n\nexport const BaseContextMenuSeparator = forwardRef<\n ComponentRef<typeof ContextMenu.Separator>,\n BaseContextMenuSeparatorProps\n>(function BaseContextMenuSeparator(\n { appearance, className, style, ...separatorProps },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Separator\n {...componentAttributes}\n {...separatorProps}\n ref={ref}\n data-monkeys-component=\"context-menu\"\n data-slot=\"separator\"\n className={cn(theme.slots.menuSeparator, className)}\n style={style}\n />\n );\n});\n\nexport const BaseContextMenuItem = forwardRef<\n ComponentRef<typeof ContextMenu.Item>,\n BaseContextMenuItemProps\n>(function BaseContextMenuItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'Item disabled');\n validateBoolean(inset, 'Item inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.Item\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"item\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuItem,\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n })}\n </ContextMenu.Item>\n );\n});\n\nexport const BaseContextMenuCheckboxItem = forwardRef<\n ComponentRef<typeof ContextMenu.CheckboxItem>,\n BaseContextMenuCheckboxItemProps\n>(function BaseContextMenuCheckboxItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n checked,\n onCheckedChange,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'CheckboxItem disabled');\n validateBoolean(inset, 'CheckboxItem inset');\n validateTone(tone);\n if (\n checked !== undefined &&\n checked !== 'indeterminate' &&\n typeof checked !== 'boolean'\n ) {\n throw new TypeError(\n 'BaseContextMenu CheckboxItem checked must be a boolean or \"indeterminate\".',\n );\n }\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.CheckboxItem\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n checked={checked}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"checkbox-item\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n data-checked={\n checked === 'indeterminate'\n ? 'mixed'\n : checked === undefined\n ? undefined\n : String(checked)\n }\n onCheckedChange={(nextChecked) => {\n if (disabled) return;\n onCheckedChange?.(nextChecked);\n }}\n className={cn(\n theme.slots.menuItem,\n 'pl-8',\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n indicator: (\n <ContextMenu.ItemIndicator\n data-slot=\"indicator\"\n className={cn(theme.slots.menuCheckboxIndicator, classNames?.indicator)}\n >\n <CheckIcon />\n </ContextMenu.ItemIndicator>\n ),\n })}\n </ContextMenu.CheckboxItem>\n );\n});\n\nexport function BaseContextMenuRadioGroup({\n children,\n value,\n onValueChange,\n}: BaseContextMenuRadioGroupProps) {\n return (\n <ContextMenu.RadioGroup value={value} onValueChange={onValueChange}>\n {children}\n </ContextMenu.RadioGroup>\n );\n}\n\nexport const BaseContextMenuRadioItem = forwardRef<\n ComponentRef<typeof ContextMenu.RadioItem>,\n BaseContextMenuRadioItemProps\n>(function BaseContextMenuRadioItem(\n {\n children,\n label,\n icon,\n shortcut,\n tone,\n disabled = false,\n inset = false,\n value,\n appearance,\n className,\n classNames,\n style,\n onSelect,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'RadioItem disabled');\n validateBoolean(inset, 'RadioItem inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n\n return (\n <ContextMenu.RadioItem\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n value={value}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"radio-item\"\n data-tone={resolvedTone}\n data-value={value}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuItem,\n 'pl-8',\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n onSelect={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n >\n {renderItemContent({\n children,\n label,\n icon,\n shortcut,\n inset,\n classNames: {\n icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n label: cn(theme.slots.menuItemLabel, classNames?.label),\n shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n },\n indicator: (\n <ContextMenu.ItemIndicator\n data-slot=\"indicator\"\n className={cn(theme.slots.menuRadioIndicator, classNames?.indicator)}\n >\n <DotIcon />\n </ContextMenu.ItemIndicator>\n ),\n })}\n </ContextMenu.RadioItem>\n );\n});\n\nexport function BaseContextMenuSub({\n children,\n open,\n defaultOpen,\n onOpenChange,\n}: BaseContextMenuSubProps) {\n if (open !== undefined) validateBoolean(open, 'Sub open');\n if (defaultOpen !== undefined) {\n validateBoolean(defaultOpen, 'Sub defaultOpen');\n }\n return (\n <ContextMenu.Sub\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n {children}\n </ContextMenu.Sub>\n );\n}\n\nexport const BaseContextMenuSubTrigger = forwardRef<\n ComponentRef<typeof ContextMenu.SubTrigger>,\n BaseContextMenuSubTriggerProps\n>(function BaseContextMenuSubTrigger(\n {\n children,\n label,\n icon,\n tone,\n disabled = false,\n inset = false,\n appearance,\n className,\n classNames,\n style,\n ...itemProps\n },\n ref,\n) {\n validateBoolean(disabled, 'SubTrigger disabled');\n validateBoolean(inset, 'SubTrigger inset');\n validateTone(tone);\n const resolvedTone = tone ?? 'default';\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const resolvedLabel = children ?? label;\n\n return (\n <ContextMenu.SubTrigger\n {...componentAttributes}\n {...itemProps}\n ref={ref}\n disabled={disabled}\n data-monkeys-component=\"context-menu\"\n data-slot=\"sub-trigger\"\n data-tone={resolvedTone}\n data-disabled={disabled || undefined}\n className={cn(\n theme.slots.menuSubTrigger,\n getBaseMenuItemToneClassName(theme, tone),\n disabled && theme.slots.menuItemDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.menuItem,\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span\n data-slot=\"icon\"\n className={cn(theme.slots.menuItemIcon, classNames?.icon)}\n >\n {icon}\n </span>\n ) : inset ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"icon\"\n className=\"h-4 w-4 shrink-0\"\n />\n ) : null}\n {hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n className={cn(theme.slots.menuItemLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n <span\n data-slot=\"sub-indicator\"\n className={cn(\n theme.slots.menuSubTriggerIcon,\n classNames?.shortcut,\n 'rtl:rotate-180',\n )}\n >\n <ChevronRightIcon />\n </span>\n </ContextMenu.SubTrigger>\n );\n});\n\nexport const BaseContextMenuSubContent = forwardRef<\n ComponentRef<typeof ContextMenu.SubContent>,\n BaseContextMenuSubContentProps\n>(function BaseContextMenuSubContent(\n {\n children,\n appearance,\n className,\n classNames,\n style,\n sideOffset = 6,\n ...subContentProps\n },\n ref,\n) {\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const portal = useBaseOverlayPortal();\n const content = (\n <ContextMenu.SubContent\n {...componentAttributes}\n {...subContentProps}\n ref={ref}\n sideOffset={sideOffset}\n data-monkeys-component=\"context-menu\"\n data-slot=\"sub-content\"\n className={cn(theme.slots.menuSubContent, classNames?.root, className)}\n style={{\n ...theme.styles.menuContent,\n ...style,\n }}\n >\n {children}\n </ContextMenu.SubContent>\n );\n\n return portal.shouldPortal ? (\n <ContextMenu.Portal {...portal.radixPortalProps}>\n {content}\n </ContextMenu.Portal>\n ) : content;\n});\n","import type { BaseDescriptionListProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst columnClassNames = {\n 1: 'grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 xl:grid-cols-3',\n};\n\nexport function BaseDescriptionList({\n items,\n columns = 1,\n appearance,\n className,\n classNames,\n style,\n children,\n ...listProps\n}: BaseDescriptionListProps) {\n const theme = resolveBaseAppearance(appearance);\n\n return (\n <dl\n {...listProps}\n className={cn(\n theme.slots.descriptionListRoot,\n columnClassNames[columns],\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.descriptionList,\n ...style,\n }}\n >\n {items?.map((item, index) => (\n <div\n key={index}\n className={cn(theme.slots.descriptionListItem, classNames?.item)}\n >\n <dt className={cn(theme.slots.descriptionListTerm, classNames?.term)}>\n {item.term}\n </dt>\n <dd\n className={cn(theme.slots.descriptionListValue, classNames?.value)}\n >\n {item.value}\n </dd>\n </div>\n ))}\n {children}\n </dl>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseFieldControlProps, BaseFieldProps } from './types';\nimport {\n BaseFieldContext,\n resolveBaseFieldValidationResult,\n type BaseFieldControlValue,\n} from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction mergeAriaIds(...values: Array<string | undefined>) {\n const ids = values.flatMap(\n (value) => value?.split(/\\s+/).filter(Boolean) ?? [],\n );\n return ids.length ? Array.from(new Set(ids)).join(' ') : undefined;\n}\n\nfunction resolveOptionalId(\n value: string | undefined,\n fallback: string,\n name: string,\n) {\n if (value === undefined) return fallback;\n if (!value.trim() || /\\s/.test(value)) {\n throw new TypeError(\n `BaseField ${name} must be a non-empty ID without whitespace.`,\n );\n }\n return value;\n}\n\nexport const BaseField = forwardRef<HTMLDivElement, BaseFieldProps>(\n function BaseField(\n {\n label,\n description,\n message,\n error,\n required = false,\n disabled = false,\n htmlFor,\n descriptionId,\n messageId,\n errorId,\n validate,\n validationMode = 'onBlur',\n children,\n appearance,\n className,\n classNames,\n style,\n ...fieldProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['required', required],\n ['disabled', disabled],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseField ${name} must be a boolean.`);\n }\n }\n if (validate !== undefined && typeof validate !== 'function') {\n throw new TypeError('BaseField validate must be a function.');\n }\n if (validationMode !== 'onBlur' && validationMode !== 'onChange') {\n throw new TypeError(\n 'BaseField validationMode must be \"onBlur\" or \"onChange\".',\n );\n }\n\n const generatedId = useId();\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const hasDescription = hasRenderableNode(description);\n const [internalError, setInternalError] = useState<string | null>(null);\n const registeredControlsRef = useRef(new Set<symbol>());\n const validateRef = useRef(validate);\n const validationModeRef = useRef(validationMode);\n const disabledRef = useRef(disabled);\n validateRef.current = validate;\n validationModeRef.current = validationMode;\n disabledRef.current = disabled;\n const hasValidator = validate !== undefined;\n\n useEffect(() => {\n if (!hasValidator || disabled) {\n setInternalError(null);\n }\n }, [disabled, hasValidator]);\n\n useEffect(() => {\n if (hasValidator && registeredControlsRef.current.size !== 1) {\n throw new TypeError(\n 'BaseField with validate must contain exactly one compatible Base control.',\n );\n }\n }, [hasValidator]);\n\n const registerControl = useCallback((controlKey: symbol) => {\n const registeredControls = registeredControlsRef.current;\n if (\n validateRef.current !== undefined &&\n !registeredControls.has(controlKey) &&\n registeredControls.size > 0\n ) {\n throw new TypeError(\n 'BaseField with validate supports exactly one compatible Base control. Use BaseFieldset for control groups.',\n );\n }\n registeredControls.add(controlKey);\n return () => {\n registeredControls.delete(controlKey);\n };\n }, []);\n\n const runValidation = useCallback(\n (mode: 'onBlur' | 'onChange', value: BaseFieldControlValue) => {\n const currentValidate = validateRef.current;\n if (\n disabledRef.current ||\n currentValidate === undefined ||\n validationModeRef.current !== mode\n ) {\n return;\n }\n\n const result = resolveBaseFieldValidationResult(currentValidate(value));\n if (result === null) {\n setInternalError(null);\n return;\n }\n setInternalError(result);\n },\n [],\n );\n\n const notifyBlur = useCallback(\n (value: BaseFieldControlValue) => runValidation('onBlur', value),\n [runValidation],\n );\n const notifyChange = useCallback(\n (value: BaseFieldControlValue) => runValidation('onChange', value),\n [runValidation],\n );\n\n const hasExternalError = hasRenderableNode(error);\n const resolvedError = hasExternalError ? error : internalError;\n const hasError = hasRenderableNode(resolvedError);\n const hasMessage = !hasError && hasRenderableNode(message);\n const resolvedMessage = hasError ? resolvedError : message;\n const resolvedControlId = htmlFor ?? `${generatedId}-control`;\n const resolvedDescriptionId = hasDescription\n ? resolveOptionalId(\n descriptionId,\n `${generatedId}-description`,\n 'descriptionId',\n )\n : undefined;\n const resolvedMessageId = hasMessage\n ? resolveOptionalId(messageId, `${generatedId}-message`, 'messageId')\n : undefined;\n const resolvedErrorId = hasError\n ? resolveOptionalId(errorId, `${generatedId}-error`, 'errorId')\n : undefined;\n const controlProps: BaseFieldControlProps = {\n id: resolvedControlId,\n 'aria-describedby': mergeAriaIds(\n resolvedDescriptionId,\n resolvedMessageId,\n ),\n 'aria-errormessage': resolvedErrorId,\n 'aria-invalid': hasError ? true : undefined,\n 'aria-required': required ? true : undefined,\n required: required || undefined,\n disabled: disabled || undefined,\n };\n const renderedChildren =\n typeof children === 'function' ? children(controlProps) : children;\n const fieldContextValue = useMemo(\n () => ({\n invalid: hasError,\n registerControl,\n notifyBlur,\n notifyChange,\n }),\n [hasError, notifyBlur, notifyChange, registerControl],\n );\n\n return (\n <div\n {...componentAttributes}\n {...fieldProps}\n ref={ref}\n aria-disabled={disabled || undefined}\n data-monkeys-component=\"field\"\n data-slot=\"root\"\n data-required={required || undefined}\n data-disabled={disabled || undefined}\n data-invalid={hasError || undefined}\n className={cn(\n theme.slots.fieldRoot,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.field,\n ...style,\n }}\n >\n {hasRenderableNode(label) ? (\n <div\n data-slot=\"label-row\"\n className={cn(theme.slots.fieldLabelRow, classNames?.labelRow)}\n >\n <label\n htmlFor={typeof children === 'function' ? resolvedControlId : htmlFor}\n data-slot=\"label\"\n className={cn(theme.slots.fieldLabel, classNames?.label)}\n >\n {label}\n {required ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"required-indicator\"\n className={cn(\n theme.slots.fieldRequired,\n classNames?.required,\n )}\n >\n {' '}\n *\n </span>\n ) : null}\n </label>\n </div>\n ) : null}\n\n {hasDescription ? (\n <div\n id={resolvedDescriptionId}\n data-slot=\"description\"\n className={cn(\n theme.slots.fieldDescription,\n classNames?.description,\n )}\n >\n {description}\n </div>\n ) : null}\n\n {hasRenderableNode(renderedChildren) ? (\n <div\n data-slot=\"control\"\n className={cn(theme.slots.fieldControl, classNames?.control)}\n style={theme.styles.fieldControl}\n >\n <BaseFieldContext.Provider value={fieldContextValue}>\n {renderedChildren}\n </BaseFieldContext.Provider>\n </div>\n ) : null}\n\n {hasRenderableNode(resolvedMessage) ? (\n <div\n id={hasError ? resolvedErrorId : resolvedMessageId}\n role={hasError ? 'alert' : undefined}\n data-slot={hasError ? 'error' : 'message'}\n className={cn(\n theme.slots.fieldMessage,\n hasError && 'text-destructive-text',\n classNames?.message,\n )}\n >\n {resolvedMessage}\n </div>\n ) : null}\n </div>\n );\n },\n);\n","import { forwardRef } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseInputProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst controlSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nexport const BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(\n function BaseInput(\n {\n icon,\n trailing,\n invalid = false,\n disabled = false,\n readOnly = false,\n controlSize,\n appearance,\n className,\n classNames,\n style,\n 'aria-invalid': nativeAriaInvalid,\n onBlur,\n onChange,\n ...inputProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['invalid', invalid],\n ['disabled', disabled],\n ['readOnly', readOnly],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseInput ${name} must be a boolean.`);\n }\n }\n if (\n controlSize !== undefined &&\n controlSize !== 'sm' &&\n controlSize !== 'md' &&\n controlSize !== 'lg'\n ) {\n throw new TypeError('BaseInput controlSize must be \"sm\", \"md\", or \"lg\".');\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n\n return (\n <div\n {...componentAttributes}\n data-monkeys-component=\"input\"\n data-slot=\"root\"\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n className={cn(\n theme.slots.controlWrapper,\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n readOnly && theme.slots.controlReadOnly,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span\n data-slot=\"icon\"\n className={cn(theme.slots.controlIcon, classNames?.icon)}\n >\n {icon}\n </span>\n ) : null}\n <input\n {...inputProps}\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n data-slot=\"control\"\n data-size={controlSize}\n data-invalid={resolvedInvalid || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlInput,\n controlSize && controlSizeClassNames[controlSize],\n classNames?.control,\n )}\n onBlur={(event) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.value);\n }}\n onChange={(event) => {\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.value);\n }}\n />\n {hasRenderableNode(trailing) ? (\n <span\n data-slot=\"trailing\"\n className={cn(theme.slots.controlTrailing, classNames?.trailing)}\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n },\n);\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type FocusEvent,\n type FormEvent,\n type KeyboardEvent,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseSelectOption, BaseSelectProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst typeaheadResetDelay = 500;\n\nfunction validateSelectProps({\n options,\n value,\n defaultValue,\n invalid,\n disabled,\n openForPreview,\n required,\n}: Pick<\n BaseSelectProps,\n | 'defaultValue'\n | 'disabled'\n | 'invalid'\n | 'openForPreview'\n | 'options'\n | 'required'\n | 'value'\n>) {\n for (const [name, state] of [\n ['invalid', invalid],\n ['disabled', disabled],\n ['openForPreview', openForPreview],\n ] as const) {\n if (typeof state !== 'boolean') {\n throw new TypeError(`BaseSelect ${name} must be a boolean.`);\n }\n }\n if (required !== undefined && typeof required !== 'boolean') {\n throw new TypeError('BaseSelect required must be a boolean.');\n }\n\n if (options !== undefined && !Array.isArray(options)) {\n throw new TypeError('BaseSelect options must be an array.');\n }\n options?.forEach((option, index) => {\n if (!option || typeof option !== 'object') {\n throw new TypeError(`BaseSelect option at index ${index} must be an object.`);\n }\n if (typeof option.value !== 'string') {\n throw new TypeError(\n `BaseSelect option value at index ${index} must be a string.`,\n );\n }\n if (\n option.disabled !== undefined &&\n typeof option.disabled !== 'boolean'\n ) {\n throw new TypeError(\n `BaseSelect option disabled at index ${index} must be a boolean.`,\n );\n }\n if (\n option.textValue !== undefined &&\n typeof option.textValue !== 'string'\n ) {\n throw new TypeError(\n `BaseSelect option textValue at index ${index} must be a string.`,\n );\n }\n });\n\n if (options?.length) {\n if (\n value !== undefined &&\n typeof value !== 'string' &&\n typeof value !== 'number'\n ) {\n throw new TypeError(\n 'BaseSelect value must be a string or number when options are used.',\n );\n }\n if (\n defaultValue !== undefined &&\n typeof defaultValue !== 'string' &&\n typeof defaultValue !== 'number'\n ) {\n throw new TypeError(\n 'BaseSelect defaultValue must be a string or number when options are used.',\n );\n }\n }\n}\n\nfunction normalizeValue(value: BaseSelectProps['value']) {\n return typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n}\n\nfunction findOption(options: BaseSelectOption[], value: string | undefined) {\n if (value === undefined) return undefined;\n return options.find((option) => option.value === value);\n}\n\nfunction getInitialActiveIndex(options: BaseSelectOption[], value: string) {\n const selectedIndex = options.findIndex(\n (option) => option.value === value && !option.disabled,\n );\n if (selectedIndex >= 0) return selectedIndex;\n return options.findIndex((option) => !option.disabled);\n}\n\nfunction getNextEnabledIndex(\n options: BaseSelectOption[],\n currentIndex: number,\n direction: 1 | -1,\n) {\n if (!options.length) return -1;\n const startIndex = currentIndex >= 0 ? currentIndex : direction === 1 ? -1 : 0;\n\n for (let offset = 1; offset <= options.length; offset += 1) {\n const nextIndex =\n (startIndex + offset * direction + options.length) % options.length;\n if (!options[nextIndex]?.disabled) {\n return nextIndex;\n }\n }\n\n return -1;\n}\n\nfunction getBoundaryEnabledIndex(\n options: BaseSelectOption[],\n boundary: 'first' | 'last',\n) {\n if (boundary === 'first') {\n return options.findIndex((option) => !option.disabled);\n }\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.disabled) return index;\n }\n return -1;\n}\n\nfunction getOptionText(option: BaseSelectOption) {\n if (option.textValue !== undefined) return option.textValue;\n if (typeof option.label === 'string') return option.label;\n return option.value;\n}\n\nfunction toDomId(value: string) {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nexport const BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\n function BaseSelect(\n {\n options,\n placeholder,\n icon,\n invalid = false,\n disabled = false,\n openForPreview = false,\n appearance,\n className,\n classNames,\n style,\n children,\n value,\n defaultValue,\n onBlur,\n onChange,\n onFocus,\n onInvalid,\n name,\n id,\n required,\n 'aria-invalid': nativeAriaInvalid,\n 'aria-label': nativeAriaLabel,\n 'aria-labelledby': nativeAriaLabelledBy,\n 'aria-describedby': nativeAriaDescribedBy,\n 'aria-errormessage': nativeAriaErrorMessage,\n 'aria-required': nativeAriaRequired,\n ...selectProps\n },\n ref,\n ) {\n validateSelectProps({\n options,\n value,\n defaultValue,\n invalid,\n disabled,\n openForPreview,\n required,\n });\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const fieldControl = useBaseFieldControl();\n const resolvedInvalid = invalid || fieldControl.invalid;\n const generatedId = useId();\n const selectId = id ?? generatedId;\n const triggerId = `${selectId}-button`;\n const listboxId = `${selectId}-listbox`;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const selectRef = useRef<HTMLSelectElement | null>(null);\n const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const composingRef = useRef(false);\n const typeaheadBufferRef = useRef('');\n const typeaheadTimerRef = useRef<{\n ownerWindow: Window;\n timerId: number;\n } | null>(null);\n const optionList = options ?? [];\n const isCustomSelect = optionList.length > 0;\n const forceOpen = openForPreview;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = forceOpen || uncontrolledOpen;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeValue(defaultValue),\n );\n const isControlled = value !== undefined;\n const selectedValue = isControlled\n ? normalizeValue(value)\n : uncontrolledValue;\n const selectedOption = findOption(optionList, selectedValue);\n const [activeIndex, setActiveIndex] = useState(() =>\n getInitialActiveIndex(optionList, selectedValue),\n );\n const resolvedActiveIndex =\n activeIndex >= 0 && !optionList[activeIndex]?.disabled\n ? activeIndex\n : getInitialActiveIndex(optionList, selectedValue);\n const optionIds = optionList.map(\n (option, index) =>\n `${selectId}-option-${index}-${toDomId(option.value)}`,\n );\n const visibleLabel = selectedOption?.label ?? placeholder;\n const isPlaceholder = !selectedOption;\n const layerDirection = selectProps.dir ?? componentAttributes.dir;\n const rootState = disabled\n ? 'disabled'\n : resolvedInvalid\n ? 'invalid'\n : open\n ? 'open'\n : 'closed';\n\n const setSelectRef = (node: HTMLSelectElement | null) => {\n selectRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const handleNativeBlur = (event: FocusEvent<HTMLSelectElement>) => {\n onBlur?.(event);\n fieldControl.notifyBlur(event.currentTarget.value);\n };\n\n const handleNativeChange = (event: ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n fieldControl.notifyChange(event.currentTarget.value);\n };\n\n const resetActiveIndex = () => {\n setActiveIndex(getInitialActiveIndex(optionList, selectedValue));\n };\n\n const cancelAndClose = () => {\n resetActiveIndex();\n if (!forceOpen) setUncontrolledOpen(false);\n };\n\n const openMenu = (nextActiveIndex?: number) => {\n setActiveIndex(\n nextActiveIndex ?? getInitialActiveIndex(optionList, selectedValue),\n );\n if (!forceOpen) setUncontrolledOpen(true);\n };\n\n const notifyChange = (nextValue: string) => {\n const selectElement = selectRef.current;\n if (!selectElement) return;\n const ownerWindow = selectElement.ownerDocument.defaultView;\n if (!ownerWindow) {\n throw new Error(\n 'BaseSelect cannot dispatch change without an owning window.',\n );\n }\n const valueSetter = Object.getOwnPropertyDescriptor(\n ownerWindow.HTMLSelectElement.prototype,\n 'value',\n )?.set;\n if (!valueSetter) {\n throw new Error('BaseSelect could not resolve the native select value setter.');\n }\n valueSetter.call(selectElement, nextValue);\n selectElement.dispatchEvent(\n new ownerWindow.Event('change', { bubbles: true }),\n );\n };\n\n const commitIndex = (nextIndex: number) => {\n const option = optionList[nextIndex];\n if (!option || option.disabled || disabled) return;\n setActiveIndex(nextIndex);\n if (option.value !== selectedValue) {\n if (!isControlled) {\n setUncontrolledValue(option.value);\n }\n notifyChange(option.value);\n }\n if (!forceOpen) setUncontrolledOpen(false);\n };\n\n const moveActive = (nextIndex: number) => {\n if (nextIndex < 0 || optionList[nextIndex]?.disabled) return;\n setActiveIndex(nextIndex);\n if (!open) openMenu(nextIndex);\n };\n\n const handleTypeahead = (\n event: KeyboardEvent<HTMLButtonElement>,\n character: string,\n ) => {\n const ownerWindow = event.currentTarget.ownerDocument.defaultView;\n if (!ownerWindow) return;\n const nextBuffer = `${typeaheadBufferRef.current}${character}`.toLocaleLowerCase();\n typeaheadBufferRef.current = nextBuffer;\n if (typeaheadTimerRef.current) {\n typeaheadTimerRef.current.ownerWindow.clearTimeout(\n typeaheadTimerRef.current.timerId,\n );\n }\n typeaheadTimerRef.current = {\n ownerWindow,\n timerId: ownerWindow.setTimeout(() => {\n typeaheadBufferRef.current = '';\n typeaheadTimerRef.current = null;\n }, typeaheadResetDelay),\n };\n\n const repeatedCharacter = Array.from(nextBuffer).every(\n (bufferCharacter) => bufferCharacter === nextBuffer[0],\n );\n const query = repeatedCharacter ? character.toLocaleLowerCase() : nextBuffer;\n const startIndex = open\n ? resolvedActiveIndex\n : optionList.findIndex(\n (option) => option.value === selectedValue && !option.disabled,\n );\n for (let offset = 1; offset <= optionList.length; offset += 1) {\n const index = (startIndex + offset + optionList.length) % optionList.length;\n const option = optionList[index];\n if (\n !option?.disabled &&\n getOptionText(option).trim().toLocaleLowerCase().startsWith(query)\n ) {\n event.preventDefault();\n moveActive(index);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled || composingRef.current || event.nativeEvent.isComposing) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const selectedIndex = optionList.findIndex(\n (option) => option.value === selectedValue && !option.disabled,\n );\n const currentIndex = open ? resolvedActiveIndex : selectedIndex;\n moveActive(\n getNextEnabledIndex(\n optionList,\n currentIndex,\n event.key === 'ArrowDown' ? 1 : -1,\n ),\n );\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n moveActive(\n getBoundaryEnabledIndex(\n optionList,\n event.key === 'Home' ? 'first' : 'last',\n ),\n );\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n if (open) {\n commitIndex(resolvedActiveIndex);\n } else {\n openMenu();\n }\n return;\n }\n\n if (event.key === 'Escape' && open) {\n event.preventDefault();\n cancelAndClose();\n return;\n }\n\n if (event.key === 'Tab' && open) {\n commitIndex(resolvedActiveIndex);\n return;\n }\n\n if (\n event.key.length === 1 &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !/\\s/.test(event.key)\n ) {\n handleTypeahead(event, event.key);\n }\n };\n\n const handleCustomFocus = (event: FocusEvent<HTMLSelectElement>) => {\n onFocus?.(event);\n if (!event.defaultPrevented) triggerRef.current?.focus();\n };\n\n const handleCustomInvalid = (event: FormEvent<HTMLSelectElement>) => {\n onInvalid?.(event);\n event.preventDefault();\n triggerRef.current?.focus();\n };\n\n useEffect(() => {\n if (!isCustomSelect || !open || forceOpen) return undefined;\n const ownerDocument = rootRef.current?.ownerDocument;\n if (!ownerDocument) return undefined;\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n cancelAndClose();\n }\n };\n\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n return () => {\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n };\n }, [forceOpen, isCustomSelect, open, optionList, selectedValue]);\n\n useEffect(() => {\n if (!isCustomSelect || !open || resolvedActiveIndex < 0) return;\n optionRefs.current[resolvedActiveIndex]?.scrollIntoView?.({\n block: 'nearest',\n });\n }, [isCustomSelect, open, resolvedActiveIndex]);\n\n useEffect(() => {\n if (!isCustomSelect || isControlled) return undefined;\n const selectElement = selectRef.current;\n const form = selectElement?.form;\n const ownerWindow = selectElement?.ownerDocument.defaultView;\n if (!form || !ownerWindow) return undefined;\n\n const handleReset = () => {\n ownerWindow.setTimeout(() => {\n const resetValue = normalizeValue(defaultValue);\n setUncontrolledValue(resetValue);\n setActiveIndex(getInitialActiveIndex(optionList, resetValue));\n if (!forceOpen) setUncontrolledOpen(false);\n }, 0);\n };\n form.addEventListener('reset', handleReset);\n return () => form.removeEventListener('reset', handleReset);\n }, [defaultValue, forceOpen, isControlled, isCustomSelect, optionList]);\n\n useEffect(\n () => () => {\n if (typeaheadTimerRef.current) {\n typeaheadTimerRef.current.ownerWindow.clearTimeout(\n typeaheadTimerRef.current.timerId,\n );\n }\n },\n [],\n );\n\n if (!isCustomSelect) {\n return (\n <div\n {...componentAttributes}\n data-monkeys-component=\"select\"\n data-slot=\"root\"\n data-state={rootState}\n data-native=\"true\"\n className={cn(\n theme.slots.controlWrapper,\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n <select\n {...componentAttributes}\n {...selectProps}\n id={id}\n ref={ref}\n name={name}\n value={value}\n defaultValue={defaultValue}\n required={required}\n disabled={disabled}\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-label={nativeAriaLabel}\n aria-labelledby={nativeAriaLabelledBy}\n aria-describedby={nativeAriaDescribedBy}\n aria-errormessage={nativeAriaErrorMessage}\n aria-required={nativeAriaRequired}\n data-monkeys-component=\"select\"\n data-slot=\"native\"\n data-state={rootState}\n data-native=\"true\"\n onBlur={handleNativeBlur}\n onFocus={onFocus}\n onInvalid={onInvalid}\n onChange={handleNativeChange}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlSelect,\n classNames?.control,\n )}\n >\n {hasRenderableNode(placeholder) ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {children}\n </select>\n <span className={theme.slots.selectChevron} />\n </div>\n );\n }\n\n return (\n <div\n {...componentAttributes}\n ref={rootRef}\n dir={layerDirection}\n data-monkeys-component=\"select\"\n data-slot=\"root\"\n data-state={rootState}\n data-native=\"false\"\n className={cn(\n theme.slots.controlWrapper,\n 'overflow-visible',\n open && 'z-50',\n resolvedInvalid && theme.slots.controlInvalid,\n disabled && theme.slots.controlDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.control,\n ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n ...(disabled ? theme.styles.controlDisabled : undefined),\n ...style,\n }}\n >\n {hasRenderableNode(icon) ? (\n <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n <button\n {...componentAttributes}\n ref={triggerRef}\n type=\"button\"\n id={triggerId}\n role=\"combobox\"\n disabled={disabled}\n dir={layerDirection}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-activedescendant={\n open && resolvedActiveIndex >= 0\n ? optionIds[resolvedActiveIndex]\n : undefined\n }\n aria-autocomplete=\"none\"\n aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n aria-label={nativeAriaLabel}\n aria-labelledby={nativeAriaLabelledBy}\n aria-describedby={nativeAriaDescribedBy}\n aria-errormessage={nativeAriaErrorMessage}\n aria-required={nativeAriaRequired ?? (required || undefined)}\n data-monkeys-component=\"select\"\n data-slot=\"trigger\"\n data-state={rootState}\n className={cn(\n theme.slots.controlBase,\n theme.slots.controlSelect,\n 'flex items-center text-left',\n classNames?.control,\n )}\n onClick={() => {\n if (open) cancelAndClose();\n else openMenu();\n }}\n onBlur={(event) => {\n if (!rootRef.current?.contains(event.relatedTarget)) {\n cancelAndClose();\n fieldControl.notifyBlur(selectedValue);\n }\n }}\n onCompositionStart={() => {\n composingRef.current = true;\n }}\n onCompositionEnd={() => {\n composingRef.current = false;\n }}\n onKeyDown={handleKeyDown}\n >\n <span\n className={cn(\n 'min-w-0 flex-1 truncate',\n isPlaceholder && theme.slots.selectPlaceholder,\n isPlaceholder && classNames?.placeholder,\n )}\n >\n {visibleLabel}\n </span>\n </button>\n <span\n className={cn(\n theme.slots.selectChevron,\n open && 'rotate-[225deg]',\n )}\n />\n <select\n {...componentAttributes}\n {...selectProps}\n ref={setSelectRef}\n id={id}\n name={name}\n value={selectedValue}\n required={required}\n disabled={disabled}\n dir={layerDirection}\n aria-hidden=\"true\"\n tabIndex={-1}\n data-monkeys-component=\"select\"\n data-slot=\"native\"\n data-state={rootState}\n data-native=\"false\"\n className={theme.slots.selectNative}\n onBlur={onBlur}\n onFocus={handleCustomFocus}\n onInvalid={handleCustomInvalid}\n onChange={handleNativeChange}\n >\n {hasRenderableNode(placeholder) ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {optionList.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {getOptionText(option)}\n </option>\n ))}\n </select>\n {open ? (\n <div\n {...componentAttributes}\n id={listboxId}\n role=\"listbox\"\n dir={layerDirection}\n aria-labelledby={triggerId}\n data-monkeys-component=\"select\"\n data-slot=\"menu\"\n data-state=\"open\"\n className={cn(theme.slots.selectMenu, classNames?.menu)}\n style={theme.styles.selectMenu}\n >\n {optionList.map((option, index) => {\n const selected = option.value === selectedValue;\n const active = index === resolvedActiveIndex;\n const optionState = option.disabled\n ? 'disabled'\n : active\n ? 'active'\n : selected\n ? 'selected'\n : 'idle';\n return (\n <button\n {...componentAttributes}\n ref={(node) => {\n optionRefs.current[index] = node;\n }}\n key={option.value}\n id={optionIds[index]}\n type=\"button\"\n role=\"option\"\n tabIndex={-1}\n disabled={option.disabled}\n dir={layerDirection}\n aria-selected={selected}\n data-monkeys-component=\"select\"\n data-slot=\"option\"\n data-state={optionState}\n data-active={active || undefined}\n data-selected={selected || undefined}\n data-disabled={option.disabled || undefined}\n className={cn(\n theme.slots.selectOption,\n active && theme.slots.selectOptionActive,\n selected && theme.slots.selectOptionSelected,\n option.disabled && theme.slots.selectOptionDisabled,\n classNames?.option,\n )}\n style={{\n ...theme.styles.selectOption,\n ...(active ? theme.styles.selectOptionActive : undefined),\n ...(selected ? theme.styles.selectOptionSelected : undefined),\n }}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => commitIndex(index)}\n >\n <span className=\"min-w-0 flex-1 truncate\">\n {option.label}\n </span>\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n },\n);\n","import { useState, type KeyboardEvent } from 'react';\n\nimport type { BaseSegmentedControlProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction getInitialSegmentValue(\n options: BaseSegmentedControlProps['options'],\n defaultValue?: string,\n) {\n if (defaultValue && options?.some((option) => option.value === defaultValue)) {\n const defaultOption = options.find((option) => option.value === defaultValue);\n if (!defaultOption?.disabled) {\n return defaultValue;\n }\n }\n return options?.find((option) => !option.disabled)?.value ?? options?.[0]?.value;\n}\n\nexport function BaseSegmentedControl({\n options = [],\n value,\n defaultValue,\n appearance,\n className,\n classNames,\n style,\n onValueChange,\n ...controlProps\n}: BaseSegmentedControlProps) {\n const theme = resolveBaseAppearance(appearance);\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n getInitialSegmentValue(options, defaultValue),\n );\n const isControlled = value !== undefined;\n const selectedValue = isControlled ? value : uncontrolledValue;\n\n const handleSelect = (nextValue: string, disabled?: boolean) => {\n if (disabled) return;\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n onValueChange?.(nextValue);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n return;\n }\n\n const enabledOptions = options.filter((option) => !option.disabled);\n if (enabledOptions.length === 0) return;\n\n event.preventDefault();\n const currentIndex = Math.max(\n 0,\n enabledOptions.findIndex((option) => option.value === selectedValue),\n );\n const nextIndex =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? enabledOptions.length - 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? (currentIndex - 1 + enabledOptions.length) % enabledOptions.length\n : (currentIndex + 1) % enabledOptions.length;\n const nextOption = enabledOptions[nextIndex];\n const buttons = event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]');\n const target = Array.from(buttons).find(\n (button) => button.dataset.value === nextOption.value,\n );\n handleSelect(nextOption.value);\n target?.focus();\n };\n\n return (\n <div\n {...controlProps}\n role=\"radiogroup\"\n aria-orientation=\"horizontal\"\n className={cn(theme.slots.segmentedRoot, classNames?.root, className)}\n style={{\n ...theme.styles.segmentedRoot,\n ...style,\n }}\n onKeyDown={handleKeyDown}\n >\n {options.map((option) => {\n const selected = option.value === selectedValue;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n data-value={option.value}\n aria-checked={selected}\n tabIndex={selected ? 0 : -1}\n disabled={option.disabled}\n className={cn(\n theme.slots.segmentedItem,\n selected && theme.slots.segmentedItemActive,\n option.disabled && theme.slots.segmentedItemDisabled,\n classNames?.item,\n )}\n style={theme.styles.segmentedItem}\n onClick={() => handleSelect(option.value, option.disabled)}\n >\n {hasRenderableNode(option.icon) ? (\n <span className={cn('inline-flex h-4 w-4 shrink-0', classNames?.icon)}>\n {option.icon}\n </span>\n ) : null}\n <span className={cn('min-w-0 truncate', classNames?.label)}>\n {option.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type DragEvent,\n type ForwardedRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type MutableRefObject,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n type UIEvent as ReactUIEvent,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type {\n BaseAppearance,\n BaseResolvedTheme,\n BaseTableAlign,\n BaseTableBodyProps,\n BaseTableCaptionProps,\n BaseTableCellProps,\n BaseTableColumnDefinition,\n BaseTableColumnInteractionOptions,\n BaseTableContainerProps,\n BaseTableEmptyProps,\n BaseTableFooterProps,\n BaseTableHeaderProps,\n BaseTableHeadProps,\n BaseTableLayout,\n BaseTableLoadingProps,\n BaseTableProps,\n BaseTableRowProps,\n BaseTableSortDirection,\n BaseTableVerticalAlign,\n} from './types';\nimport { cn, hasRenderableNode } from './utils';\n\nconst DATA_TRANSFER_COLUMN_TYPE = 'application/x-monkeys-base-table-column';\nconst COLUMN_RESIZE_KEYBOARD_STEP = 8;\n\nfunction assignRef<T>(ref: ForwardedRef<T> | undefined, value: T | null) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nfunction assertBoolean(name: string, value: unknown) {\n if (value !== undefined && typeof value !== 'boolean') {\n throw new Error(`BaseTable ${name} must be a boolean.`);\n }\n}\n\nfunction assertEnum<T extends string>(\n name: string,\n value: unknown,\n values: readonly T[],\n) {\n if (value !== undefined && !values.includes(value as T)) {\n throw new Error(\n `BaseTable ${name} must be one of ${values.map((item) => `\"${item}\"`).join(', ')}.`,\n );\n }\n}\n\nfunction assertOptionalLabel(name: string, value: unknown) {\n if (\n value !== undefined &&\n (typeof value !== 'string' || value.trim().length === 0)\n ) {\n throw new Error(`BaseTable ${name} must be a non-empty string when provided.`);\n }\n}\n\nfunction assertOptionalFunction(name: string, value: unknown) {\n if (value !== undefined && typeof value !== 'function') {\n throw new Error(`BaseTable ${name} must be a function when provided.`);\n }\n}\n\nfunction validateCssSizeValue(\n value: unknown,\n name: string,\n options: { stringAllowed?: boolean } = {},\n) {\n if (value === undefined) return;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable ${name} must be a finite non-negative number${\n options.stringAllowed ? ' or a non-empty CSS size string' : ''\n }.`,\n );\n }\n return;\n }\n if (\n options.stringAllowed &&\n typeof value === 'string' &&\n value.trim().length > 0\n ) {\n return;\n }\n throw new Error(\n `BaseTable ${name} must be ${\n options.stringAllowed\n ? 'a finite non-negative number or a non-empty CSS size string'\n : 'a finite non-negative number'\n }.`,\n );\n}\n\nfunction validateColumns(columns: unknown) {\n if (columns === undefined) return undefined;\n if (!Array.isArray(columns)) {\n throw new Error('BaseTable columns must be an array when provided.');\n }\n\n const ids = new Set<string>();\n columns.forEach((column, index) => {\n if (!column || typeof column !== 'object' || Array.isArray(column)) {\n throw new Error(`BaseTable column at index ${index} must be an object.`);\n }\n const definition = column as BaseTableColumnDefinition;\n if (typeof definition.id !== 'string' || definition.id.trim().length === 0) {\n throw new Error(\n `BaseTable column id at index ${index} must be a non-empty string.`,\n );\n }\n const columnId = definition.id.trim();\n if (definition.id !== columnId) {\n throw new Error(\n `BaseTable column id \"${definition.id}\" must not contain surrounding whitespace.`,\n );\n }\n if (ids.has(columnId)) {\n throw new Error(`BaseTable columns contain duplicate id \"${columnId}\".`);\n }\n ids.add(columnId);\n validateCssSizeValue(definition.width, `column \"${columnId}\" width`, {\n stringAllowed: true,\n });\n validateCssSizeValue(definition.minWidth, `column \"${columnId}\" minWidth`, {\n stringAllowed: true,\n });\n validateCssSizeValue(definition.maxWidth, `column \"${columnId}\" maxWidth`, {\n stringAllowed: true,\n });\n if (\n typeof definition.minWidth === 'number' &&\n typeof definition.maxWidth === 'number' &&\n definition.minWidth > definition.maxWidth\n ) {\n throw new Error(\n `BaseTable column \"${columnId}\" minWidth cannot be greater than maxWidth.`,\n );\n }\n });\n return ids;\n}\n\nfunction validateColumnOrder(columnOrder: unknown, knownColumnIds?: Set<string>) {\n if (columnOrder === undefined) return;\n if (!Array.isArray(columnOrder)) {\n throw new Error('BaseTable columnOrder must be an array when provided.');\n }\n\n const ids = new Set<string>();\n columnOrder.forEach((value, index) => {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new Error(\n `BaseTable columnOrder entry at index ${index} must be a non-empty string.`,\n );\n }\n const columnId = value.trim();\n if (value !== columnId) {\n throw new Error(\n `BaseTable columnOrder entry \"${value}\" must not contain surrounding whitespace.`,\n );\n }\n if (ids.has(columnId)) {\n throw new Error(\n `BaseTable columnOrder contains duplicate id \"${columnId}\".`,\n );\n }\n if (knownColumnIds && !knownColumnIds.has(columnId)) {\n throw new Error(\n `BaseTable columnOrder contains unknown column id \"${columnId}\".`,\n );\n }\n ids.add(columnId);\n });\n\n if (knownColumnIds && ids.size !== knownColumnIds.size) {\n const missing = [...knownColumnIds].filter((columnId) => !ids.has(columnId));\n throw new Error(\n `BaseTable columnOrder must contain every configured column id; missing ${missing\n .map((columnId) => `\"${columnId}\"`)\n .join(', ')}.`,\n );\n }\n}\n\nfunction validateColumnSizes(columnSizes: unknown, knownColumnIds?: Set<string>) {\n if (columnSizes === undefined) return;\n if (\n !columnSizes ||\n typeof columnSizes !== 'object' ||\n Array.isArray(columnSizes) ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(columnSizes))\n ) {\n throw new Error(\n 'BaseTable columnSizes must be a plain record when provided.',\n );\n }\n\n Object.entries(columnSizes).forEach(([columnId, value]) => {\n const normalizedColumnId = columnId.trim();\n if (normalizedColumnId.length === 0) {\n throw new Error('BaseTable columnSizes keys must be non-empty strings.');\n }\n if (columnId !== normalizedColumnId) {\n throw new Error(\n `BaseTable columnSizes key \"${columnId}\" must not contain surrounding whitespace.`,\n );\n }\n if (knownColumnIds && !knownColumnIds.has(normalizedColumnId)) {\n throw new Error(\n `BaseTable columnSizes contains unknown column id \"${columnId}\".`,\n );\n }\n validateCssSizeValue(value, `columnSizes[\"${columnId}\"]`);\n });\n}\n\nfunction isRtl(element: HTMLElement) {\n const ownerWindow = element.ownerDocument.defaultView;\n if (ownerWindow) {\n return ownerWindow.getComputedStyle(element).direction === 'rtl';\n }\n return element.closest('[dir=\"rtl\"]') !== null;\n}\n\nfunction setPointerCaptureIfAvailable(target: HTMLElement, pointerId: number) {\n if (!target.setPointerCapture) return;\n try {\n target.setPointerCapture(pointerId);\n } catch (error) {\n const OwnerDOMException = target.ownerDocument.defaultView?.DOMException;\n if (\n OwnerDOMException &&\n error instanceof OwnerDOMException &&\n error.name === 'NotFoundError'\n ) {\n return;\n }\n throw error;\n }\n}\n\ntype BaseTableContextValue = BaseTableColumnInteractionOptions & {\n appearance?: BaseAppearance;\n theme: BaseResolvedTheme;\n layout: BaseTableLayout;\n columnTemplate?: string;\n bodyMaxHeight?: number | string;\n bodyClassName?: string;\n splitHeaderRef?: MutableRefObject<HTMLTableSectionElement | null>;\n splitFooterRef?: MutableRefObject<HTMLTableSectionElement | null>;\n draggingColumnId?: string;\n setDraggingColumnId: (columnId?: string) => void;\n};\n\nconst BaseTableContext = createContext<BaseTableContextValue | null>(null);\n\nfunction useBaseTableContext(appearance?: BaseAppearance) {\n const context = useContext(BaseTableContext);\n const providerAppearance = useMonkeysBaseAppearance(appearance);\n if (context) {\n const resolvedAppearance =\n appearance === undefined ? context.appearance : providerAppearance;\n return {\n ...context,\n theme:\n appearance === undefined\n ? context.theme\n : resolveBaseAppearance(resolvedAppearance),\n appearance: resolvedAppearance,\n };\n }\n\n const theme = resolveBaseAppearance(providerAppearance);\n return {\n appearance: providerAppearance,\n theme,\n layout: 'native',\n setDraggingColumnId: () => {},\n } satisfies BaseTableContextValue;\n}\n\nfunction hasSplitScrollTable(children: ReactNode): boolean {\n let found = false;\n\n Children.forEach(children, (child) => {\n if (found || !isValidElement(child)) return;\n\n const childProps = child.props as {\n children?: ReactNode;\n layout?: unknown;\n };\n\n if (childProps.layout === 'split-scroll') {\n found = true;\n return;\n }\n\n if (childProps.children) {\n found = hasSplitScrollTable(childProps.children);\n }\n });\n\n return found;\n}\n\nfunction toCssSize(value?: number | string) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction validateTableCssSize(\n value: number | string | undefined,\n property: string,\n) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable ${property} must be a finite non-negative number when numeric.`,\n );\n }\n return `${value}px`;\n }\n\n if (value.trim().length === 0) {\n throw new Error(`BaseTable ${property} must not be an empty CSS size.`);\n }\n\n return value;\n}\n\nfunction validateCssSize(\n value: number | string | undefined,\n columnId: string,\n property: string,\n) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n );\n }\n return `${value}px`;\n }\n\n if (value.trim().length === 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has an empty ${property} value.`,\n );\n }\n\n return value;\n}\n\nfunction validateNumericSize(\n value: number | string | undefined,\n columnId: string,\n property: string,\n) {\n if (value === undefined || typeof value !== 'number') return undefined;\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n );\n }\n return value;\n}\n\nfunction buildSplitColumnTemplate(\n columns: BaseTableColumnDefinition[] | undefined,\n columnSizes: BaseTableColumnInteractionOptions['columnSizes'],\n) {\n if (!columns?.length) {\n throw new Error(\n 'BaseTable layout=\"split-scroll\" requires at least one column definition.',\n );\n }\n\n const seenColumnIds = new Set<string>();\n const tracks = columns.map((column, index) => {\n const columnId = column.id.trim();\n if (!columnId) {\n throw new Error(\n `BaseTable split-scroll column at index ${index} requires a non-empty id.`,\n );\n }\n if (seenColumnIds.has(columnId)) {\n throw new Error(\n `BaseTable layout=\"split-scroll\" received duplicate column id \"${columnId}\".`,\n );\n }\n seenColumnIds.add(columnId);\n\n const columnSize = columnSizes?.[columnId];\n const numericMinWidth = validateNumericSize(column.minWidth, columnId, 'minWidth');\n const numericMaxWidth = validateNumericSize(column.maxWidth, columnId, 'maxWidth');\n if (\n numericMinWidth !== undefined &&\n numericMaxWidth !== undefined &&\n numericMaxWidth < numericMinWidth\n ) {\n throw new Error(\n `BaseTable split-scroll column \"${columnId}\" has maxWidth smaller than minWidth.`,\n );\n }\n\n const minWidth = validateCssSize(column.minWidth, columnId, 'minWidth');\n const maxWidth = validateCssSize(column.maxWidth, columnId, 'maxWidth');\n const baseWidth =\n columnSize !== undefined\n ? clampWidth(columnSize, numericMinWidth, numericMaxWidth)\n : column.width;\n const width = validateCssSize(baseWidth, columnId, 'width');\n if (width) return width;\n\n return `minmax(${minWidth ?? '0px'}, ${maxWidth ?? '1fr'})`;\n });\n\n return `${tracks.join(' ')} var(--base-table-split-scrollbar-gutter)`;\n}\n\nfunction clampWidth(value: number, minWidth?: number, maxWidth?: number) {\n const min = minWidth ?? 48;\n const max = maxWidth ?? Number.POSITIVE_INFINITY;\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getNextColumnOrder(\n order: string[] | undefined,\n columnId: string,\n targetColumnId: string,\n) {\n if (!order || columnId === targetColumnId) return undefined;\n const fromIndex = order.indexOf(columnId);\n const toIndex = order.indexOf(targetColumnId);\n if (fromIndex < 0 || toIndex < 0) return undefined;\n\n const next = [...order];\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n return next;\n}\n\nfunction sortAriaValue(direction?: BaseTableSortDirection) {\n switch (direction) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return undefined;\n }\n}\n\nfunction getSplitHeadJustifyContent(align: BaseTableAlign) {\n switch (align) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n}\n\nfunction getSplitHeadAlignItems(verticalAlign: BaseTableVerticalAlign) {\n switch (verticalAlign) {\n case 'top':\n return 'flex-start';\n case 'bottom':\n return 'flex-end';\n default:\n return 'center';\n }\n}\n\nfunction SortIndicator({\n direction,\n className,\n}: {\n direction?: BaseTableSortDirection;\n className?: string;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n className,\n direction === 'desc' && 'rotate-180',\n (!direction || direction === 'none') && 'opacity-45',\n )}\n >\n ▲\n </span>\n );\n}\n\nfunction DragHandleIcon() {\n return (\n <span aria-hidden=\"true\" className=\"grid gap-0.5\">\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n </span>\n );\n}\n\nexport const BaseTableContainer = forwardRef<\n HTMLDivElement,\n BaseTableContainerProps\n>(function BaseTableContainer(\n {\n appearance,\n attachedFooter = false,\n children,\n className,\n classNames,\n style,\n ...containerProps\n },\n ref,\n) {\n assertBoolean('attachedFooter', attachedFooter);\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const containsSplitScrollTable = hasSplitScrollTable(children);\n const splitScrollContainerStyle = containsSplitScrollTable\n ? ({\n overflow: 'hidden',\n scrollbarGutter: 'auto',\n } as CSSProperties)\n : undefined;\n\n return (\n <div\n {...componentAttributes}\n {...containerProps}\n ref={ref}\n data-monkeys-component=\"table-container\"\n data-slot=\"container\"\n data-base-table-container=\"\"\n data-attached-footer={attachedFooter ? '' : undefined}\n className={cn(\n theme.slots.tableContainer,\n attachedFooter && theme.slots.tableContainerFooterAttached,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableContainer,\n ...(attachedFooter ? theme.styles.tableContainerFooterAttached : undefined),\n ...splitScrollContainerStyle,\n ...style,\n }}\n >\n {children}\n </div>\n );\n});\n\nexport const BaseTable = forwardRef<HTMLTableElement, BaseTableProps>(\n function BaseTable(\n {\n appearance,\n className,\n classNames,\n style,\n layout = 'native',\n columns,\n bodyMaxHeight,\n bodyClassName,\n columnOrder,\n columnSizes,\n columnDragEnabled = false,\n columnResizeEnabled = false,\n onColumnOrderChange,\n onColumnSizeChange,\n ...tableProps\n },\n ref,\n ) {\n assertEnum('layout', layout, ['native', 'split-scroll'] as const);\n assertBoolean('columnDragEnabled', columnDragEnabled);\n assertBoolean('columnResizeEnabled', columnResizeEnabled);\n assertOptionalFunction('onColumnOrderChange', onColumnOrderChange);\n assertOptionalFunction('onColumnSizeChange', onColumnSizeChange);\n validateCssSizeValue(bodyMaxHeight, 'bodyMaxHeight', { stringAllowed: true });\n const knownColumnIds = validateColumns(columns);\n validateColumnOrder(columnOrder, knownColumnIds);\n validateColumnSizes(columnSizes, knownColumnIds);\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const [draggingColumnId, setDraggingColumnId] = useState<string | undefined>();\n const splitHeaderRef = useRef<HTMLTableSectionElement | null>(null);\n const splitFooterRef = useRef<HTMLTableSectionElement | null>(null);\n const isSplitScroll = layout === 'split-scroll';\n const columnTemplate = isSplitScroll\n ? buildSplitColumnTemplate(columns, columnSizes)\n : undefined;\n const contextValue: BaseTableContextValue = {\n appearance: resolvedAppearance,\n theme,\n layout,\n columnTemplate,\n bodyMaxHeight,\n bodyClassName,\n splitHeaderRef,\n splitFooterRef,\n columnOrder,\n columnSizes,\n columnDragEnabled,\n columnResizeEnabled,\n onColumnOrderChange,\n onColumnSizeChange,\n draggingColumnId,\n setDraggingColumnId,\n };\n\n return (\n <BaseTableContext.Provider value={contextValue}>\n <table\n {...componentAttributes}\n {...tableProps}\n ref={ref}\n data-monkeys-component=\"table\"\n data-slot=\"root\"\n data-base-table-layout={layout}\n className={cn(\n theme.slots.tableRoot,\n isSplitScroll && theme.slots.tableSplitRoot,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.table,\n ...(isSplitScroll ? theme.styles.tableSplitRoot : undefined),\n ...(columnTemplate\n ? ({\n '--base-table-column-template': columnTemplate,\n } as CSSProperties)\n : undefined),\n ...style,\n }}\n />\n </BaseTableContext.Provider>\n );\n});\n\nexport const BaseTableHeader = forwardRef<\n HTMLTableSectionElement,\n BaseTableHeaderProps\n>(function BaseTableHeader(\n { appearance, className, classNames, style, ...headerProps },\n ref,\n) {\n const { layout, splitHeaderRef, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const setHeaderRef = (node: HTMLTableSectionElement | null) => {\n if (splitHeaderRef) splitHeaderRef.current = isSplitScroll ? node : null;\n assignRef(ref, node);\n };\n\n return (\n <thead\n {...headerProps}\n ref={setHeaderRef}\n data-slot=\"header\"\n className={cn(\n theme.slots.tableHeader,\n isSplitScroll && theme.slots.tableSplitHeader,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableHeader,\n ...(isSplitScroll ? theme.styles.tableSplitHeader : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableBody = forwardRef<\n HTMLTableSectionElement,\n BaseTableBodyProps\n>(function BaseTableBody(\n { appearance, className, classNames, onScroll, style, ...bodyProps },\n ref,\n) {\n const {\n bodyClassName,\n bodyMaxHeight,\n layout,\n splitFooterRef,\n splitHeaderRef,\n theme,\n } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const handleScroll = isSplitScroll\n ? (event: ReactUIEvent<HTMLTableSectionElement>) => {\n const scrollLeft = event.currentTarget.scrollLeft;\n\n if (splitHeaderRef?.current) {\n splitHeaderRef.current.scrollLeft = scrollLeft;\n }\n if (splitFooterRef?.current) {\n splitFooterRef.current.scrollLeft = scrollLeft;\n }\n onScroll?.(event);\n }\n : onScroll;\n\n return (\n <tbody\n {...bodyProps}\n ref={ref}\n data-slot=\"body\"\n onScroll={handleScroll}\n className={cn(\n theme.slots.tableBody,\n isSplitScroll && theme.slots.tableSplitBody,\n isSplitScroll && bodyClassName,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableBody,\n ...(isSplitScroll ? theme.styles.tableSplitBody : undefined),\n ...(isSplitScroll && bodyMaxHeight !== undefined\n ? { maxHeight: validateTableCssSize(bodyMaxHeight, 'bodyMaxHeight') }\n : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableFooter = forwardRef<\n HTMLTableSectionElement,\n BaseTableFooterProps\n>(function BaseTableFooter(\n { appearance, className, classNames, style, ...footerProps },\n ref,\n) {\n const { layout, splitFooterRef, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const setFooterRef = (node: HTMLTableSectionElement | null) => {\n if (splitFooterRef) splitFooterRef.current = isSplitScroll ? node : null;\n assignRef(ref, node);\n };\n\n return (\n <tfoot\n {...footerProps}\n ref={setFooterRef}\n data-slot=\"footer\"\n className={cn(\n theme.slots.tableFooter,\n isSplitScroll && theme.slots.tableSplitFooter,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableFooter,\n ...(isSplitScroll ? theme.styles.tableSplitFooter : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableRow = forwardRef<HTMLTableRowElement, BaseTableRowProps>(\n function BaseTableRow(\n {\n interactive,\n selected,\n disabled,\n appearance,\n className,\n classNames,\n style,\n ...rowProps\n },\n ref,\n ) {\n assertBoolean('interactive', interactive);\n assertBoolean('selected', selected);\n assertBoolean('disabled', disabled);\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <tr\n {...rowProps}\n ref={ref}\n data-slot=\"row\"\n aria-disabled={disabled || undefined}\n data-state={selected ? 'selected' : undefined}\n className={cn(\n theme.slots.tableRow,\n isSplitScroll && theme.slots.tableSplitRow,\n interactive && !disabled && theme.slots.tableRowInteractive,\n selected && theme.slots.tableRowSelected,\n disabled && theme.slots.tableRowDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableRow,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableHead = forwardRef<HTMLTableCellElement, BaseTableHeadProps>(function BaseTableHead({\n columnId,\n align,\n verticalAlign,\n icon,\n label,\n description,\n meta,\n actions,\n trailing,\n sortable,\n sortDirection = 'none',\n sortLabel,\n onSort,\n draggable,\n dragLabel,\n resizable,\n resizeLabel,\n width,\n minWidth,\n maxWidth,\n appearance,\n className,\n classNames,\n style,\n children,\n onDragOver,\n onDrop,\n ...headProps\n}, forwardedRef) {\n assertEnum('head align', align, ['left', 'center', 'right'] as const);\n assertEnum('head verticalAlign', verticalAlign, [\n 'top',\n 'middle',\n 'bottom',\n ] as const);\n assertEnum('head sortDirection', sortDirection, [\n 'asc',\n 'desc',\n 'none',\n ] as const);\n assertBoolean('head sortable', sortable);\n assertBoolean('head draggable', draggable);\n assertBoolean('head resizable', resizable);\n assertOptionalFunction('head onSort', onSort);\n assertOptionalLabel('head sortLabel', sortLabel);\n assertOptionalLabel('head dragLabel', dragLabel);\n assertOptionalLabel('head resizeLabel', resizeLabel);\n if (\n columnId !== undefined &&\n (typeof columnId !== 'string' || columnId.trim().length === 0)\n ) {\n throw new Error(\n 'BaseTable head columnId must be a non-empty string when provided.',\n );\n }\n validateCssSizeValue(width, 'head width', { stringAllowed: true });\n validateCssSizeValue(minWidth, 'head minWidth');\n validateCssSizeValue(maxWidth, 'head maxWidth');\n if (\n minWidth !== undefined &&\n maxWidth !== undefined &&\n minWidth > maxWidth\n ) {\n throw new Error('BaseTable head minWidth cannot be greater than maxWidth.');\n }\n const tableContext = useBaseTableContext(appearance);\n const { theme } = tableContext;\n const messages = useMonkeysLocaleMessages().table;\n const isSplitScroll = tableContext.layout === 'split-scroll';\n const resolvedAlign = align ?? (isSplitScroll ? 'center' : 'left');\n const resolvedVerticalAlign = verticalAlign ?? 'middle';\n const headRef = useRef<HTMLTableCellElement | null>(null);\n const resizeCleanupRef = useRef<() => void>(() => {});\n const [measuredWidth, setMeasuredWidth] = useState<number>();\n const setHeadRef = (node: HTMLTableCellElement | null) => {\n headRef.current = node;\n assignRef(forwardedRef, node);\n };\n const controlledWidth =\n columnId && tableContext.columnSizes?.[columnId] !== undefined\n ? tableContext.columnSizes[columnId]\n : width;\n const canDrag = Boolean(\n columnId &&\n draggable !== false &&\n (draggable || tableContext.columnDragEnabled) &&\n tableContext.columnOrder &&\n tableContext.onColumnOrderChange,\n );\n const canResize = Boolean(\n columnId &&\n resizable !== false &&\n (resizable || tableContext.columnResizeEnabled) &&\n tableContext.onColumnSizeChange,\n );\n if (\n canResize &&\n maxWidth !== undefined &&\n maxWidth < (minWidth ?? 48)\n ) {\n throw new Error(\n 'BaseTable resizable head maxWidth cannot be smaller than its effective minWidth.',\n );\n }\n const interactiveSort = Boolean(sortable || onSort);\n const ariaSort = sortAriaValue(sortDirection);\n\n const content = hasRenderableNode(label) ? label : children;\n const hasVisibleSortName =\n hasRenderableNode(content) || hasRenderableNode(description);\n const sortAccessibleName =\n sortLabel ??\n (!hasVisibleSortName\n ? messages.sortColumn({ columnId: columnId?.trim() || undefined })\n : undefined);\n const usesRichHeader =\n canDrag ||\n hasRenderableNode(icon) ||\n hasRenderableNode(label) ||\n hasRenderableNode(description) ||\n hasRenderableNode(meta) ||\n hasRenderableNode(actions) ||\n hasRenderableNode(trailing) ||\n interactiveSort;\n const renderedContent =\n usesRichHeader ? (\n <div className={cn(theme.slots.tableHeadContent, classNames?.content)}>\n <div className={cn(theme.slots.tableHeadMain, classNames?.main)}>\n {canDrag ? (\n <button\n type=\"button\"\n draggable\n title={dragLabel}\n aria-label={\n dragLabel ?? messages.dragColumn({ columnId: columnId as string })\n }\n className={cn(theme.slots.tableHeadDragHandle, classNames?.dragHandle)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => {\n if (\n !columnId ||\n !tableContext.columnOrder ||\n (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight')\n ) {\n return;\n }\n const currentIndex = tableContext.columnOrder.indexOf(columnId);\n if (currentIndex < 0) return;\n const rtl = isRtl(event.currentTarget);\n const physicalDelta = event.key === 'ArrowLeft' ? -1 : 1;\n const nextIndex = currentIndex + (rtl ? -physicalDelta : physicalDelta);\n const targetColumnId = tableContext.columnOrder[nextIndex];\n if (!targetColumnId) return;\n const nextOrder = getNextColumnOrder(\n tableContext.columnOrder,\n columnId,\n targetColumnId,\n );\n if (!nextOrder) return;\n event.preventDefault();\n tableContext.onColumnOrderChange?.(nextOrder, {\n columnId,\n targetColumnId,\n });\n }}\n onDragStart={(event) => {\n event.stopPropagation();\n tableContext.setDraggingColumnId(columnId);\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData(DATA_TRANSFER_COLUMN_TYPE, columnId as string);\n }}\n onDragEnd={(event) => {\n event.stopPropagation();\n tableContext.setDraggingColumnId(undefined);\n }}\n >\n <DragHandleIcon />\n </button>\n ) : null}\n {icon ? (\n <span className={cn(theme.slots.tableHeadIcon, classNames?.icon)}>\n {icon}\n </span>\n ) : null}\n {interactiveSort ? (\n <button\n type=\"button\"\n disabled={!onSort}\n title={sortLabel}\n aria-label={sortAccessibleName}\n className={cn(theme.slots.tableHeadSortButton, classNames?.sortButton)}\n onClick={(event) => {\n event.stopPropagation();\n onSort?.(columnId);\n }}\n >\n <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n {hasRenderableNode(content) ? (\n <span className={cn(theme.slots.tableHeadLabel, classNames?.label)}>\n {content}\n </span>\n ) : null}\n {hasRenderableNode(description) ? (\n <span\n className={cn(\n theme.slots.tableHeadDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n <SortIndicator\n direction={sortDirection}\n className={cn(theme.slots.tableHeadSortIcon, classNames?.sortIcon)}\n />\n </button>\n ) : (\n <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n {hasRenderableNode(content) ? (\n <span className={cn(theme.slots.tableHeadLabel, classNames?.label)}>\n {content}\n </span>\n ) : null}\n {hasRenderableNode(description) ? (\n <span\n className={cn(\n theme.slots.tableHeadDescription,\n classNames?.description,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n )}\n </div>\n {hasRenderableNode(meta) || hasRenderableNode(actions) || hasRenderableNode(trailing) ? (\n <div className={cn(theme.slots.tableHeadActions, classNames?.actions)}>\n {hasRenderableNode(meta) ? (\n <span className={cn(theme.slots.tableHeadMeta, classNames?.meta)}>\n {meta}\n </span>\n ) : null}\n {actions}\n {trailing}\n </div>\n ) : null}\n </div>\n ) : (\n children\n );\n\n const handleDragOver = (event: DragEvent<HTMLTableCellElement>) => {\n onDragOver?.(event);\n if (!canDrag || !tableContext.draggingColumnId || tableContext.draggingColumnId === columnId) {\n return;\n }\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n };\n\n const handleDrop = (event: DragEvent<HTMLTableCellElement>) => {\n onDrop?.(event);\n if (!canDrag || !columnId) return;\n const sourceColumnId =\n tableContext.draggingColumnId ||\n event.dataTransfer.getData(DATA_TRANSFER_COLUMN_TYPE);\n if (!sourceColumnId || sourceColumnId === columnId) return;\n\n const nextOrder = getNextColumnOrder(\n tableContext.columnOrder,\n sourceColumnId,\n columnId,\n );\n if (nextOrder) {\n event.preventDefault();\n tableContext.onColumnOrderChange?.(nextOrder, {\n columnId: sourceColumnId,\n targetColumnId: columnId,\n });\n }\n tableContext.setDraggingColumnId(undefined);\n };\n\n const handleResizePointerDown = (event: ReactPointerEvent<HTMLButtonElement>) => {\n if (\n !canResize ||\n !columnId ||\n !tableContext.onColumnSizeChange ||\n (event.button !== 0 && event.pointerType !== 'touch')\n ) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n resizeCleanupRef.current();\n\n const startX = event.clientX;\n const currentWidth =\n currentResizeWidth ?? headRef.current?.offsetWidth ?? minWidth ?? 48;\n const previousWidth = clampWidth(currentWidth, minWidth, maxWidth);\n const pointerId = event.pointerId;\n const target = event.currentTarget;\n const ownerDocument = target.ownerDocument;\n const rtl = isRtl(target);\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n if (moveEvent.pointerId !== pointerId) return;\n const nextWidth = clampWidth(\n previousWidth + (rtl ? startX - moveEvent.clientX : moveEvent.clientX - startX),\n minWidth,\n maxWidth,\n );\n tableContext.onColumnSizeChange?.(columnId, nextWidth, {\n columnId,\n previousWidth,\n minWidth,\n maxWidth,\n });\n };\n\n const handleStop = (nextEvent: PointerEvent) => {\n if (nextEvent.pointerId !== pointerId) return;\n resizeCleanupRef.current();\n };\n const handleLostCapture = (nextEvent: PointerEvent) => {\n if (nextEvent.pointerId !== pointerId) return;\n resizeCleanupRef.current();\n };\n\n resizeCleanupRef.current = () => {\n ownerDocument.removeEventListener('pointermove', handlePointerMove);\n ownerDocument.removeEventListener('pointerup', handleStop);\n ownerDocument.removeEventListener('pointercancel', handleStop);\n target.removeEventListener('lostpointercapture', handleLostCapture);\n if (target.hasPointerCapture?.(pointerId)) {\n target.releasePointerCapture?.(pointerId);\n }\n resizeCleanupRef.current = () => {};\n };\n setPointerCaptureIfAvailable(target, pointerId);\n ownerDocument.addEventListener('pointermove', handlePointerMove);\n ownerDocument.addEventListener('pointerup', handleStop);\n ownerDocument.addEventListener('pointercancel', handleStop);\n target.addEventListener('lostpointercapture', handleLostCapture);\n };\n\n const currentResizeWidth =\n typeof controlledWidth === 'number'\n ? clampWidth(controlledWidth, minWidth, maxWidth)\n : measuredWidth;\n const announcedResizeWidth =\n currentResizeWidth ?? clampWidth(minWidth ?? 48, minWidth, maxWidth);\n\n const handleResizeKeyDown = (\n event: ReactKeyboardEvent<HTMLButtonElement>,\n ) => {\n if (!canResize || !columnId || !tableContext.onColumnSizeChange) return;\n const rtl = isRtl(event.currentTarget);\n const previousWidth =\n currentResizeWidth ??\n clampWidth(\n headRef.current?.offsetWidth || minWidth || 48,\n minWidth,\n maxWidth,\n );\n let nextWidth: number | undefined;\n if (event.key === 'ArrowLeft') {\n nextWidth = previousWidth + (rtl ? COLUMN_RESIZE_KEYBOARD_STEP : -COLUMN_RESIZE_KEYBOARD_STEP);\n }\n if (event.key === 'ArrowRight') {\n nextWidth = previousWidth + (rtl ? -COLUMN_RESIZE_KEYBOARD_STEP : COLUMN_RESIZE_KEYBOARD_STEP);\n }\n if (event.key === 'Home' && minWidth !== undefined) nextWidth = minWidth;\n if (event.key === 'End' && maxWidth !== undefined) nextWidth = maxWidth;\n if (nextWidth === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n tableContext.onColumnSizeChange(\n columnId,\n clampWidth(nextWidth, minWidth, maxWidth),\n {\n columnId,\n previousWidth,\n minWidth,\n maxWidth,\n },\n );\n };\n\n useEffect(() => {\n if (typeof controlledWidth === 'number') {\n setMeasuredWidth(undefined);\n return;\n }\n const measured = headRef.current?.getBoundingClientRect().width;\n if (measured && Number.isFinite(measured)) {\n const nextWidth = clampWidth(measured, minWidth, maxWidth);\n setMeasuredWidth((current) =>\n current === nextWidth ? current : nextWidth,\n );\n }\n }, [controlledWidth, minWidth, maxWidth, canResize]);\n\n useEffect(() => {\n if (!canResize) resizeCleanupRef.current();\n return () => resizeCleanupRef.current();\n }, [canResize, columnId, tableContext.onColumnSizeChange]);\n\n return (\n <th\n {...headProps}\n ref={setHeadRef}\n data-slot=\"head\"\n scope={headProps.scope ?? 'col'}\n aria-sort={ariaSort}\n className={cn(\n theme.slots.tableHead,\n isSplitScroll && theme.slots.tableSplitHead,\n resolvedAlign === 'center' && theme.slots.tableCellAlignCenter,\n resolvedAlign === 'right' && theme.slots.tableCellAlignRight,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableHead,\n ...(isSplitScroll ? theme.styles.tableSplitHead : undefined),\n width: isSplitScroll ? undefined : toCssSize(controlledWidth),\n minWidth: isSplitScroll ? undefined : toCssSize(minWidth),\n maxWidth: isSplitScroll ? undefined : toCssSize(maxWidth),\n ...(isSplitScroll\n ? {\n alignItems: getSplitHeadAlignItems(resolvedVerticalAlign),\n justifyContent: getSplitHeadJustifyContent(resolvedAlign),\n textAlign: resolvedAlign,\n }\n : verticalAlign\n ? { verticalAlign }\n : undefined),\n ...style,\n }}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {renderedContent}\n {canResize ? (\n <button\n type=\"button\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-valuenow={announcedResizeWidth}\n aria-valuemin={minWidth ?? 48}\n aria-valuemax={maxWidth}\n aria-valuetext={`${announcedResizeWidth}px`}\n title={resizeLabel}\n aria-label={\n resizeLabel ?? messages.resizeColumn({ columnId: columnId as string })\n }\n className={cn(theme.slots.tableHeadResizeHandle, classNames?.resizeHandle)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={handleResizeKeyDown}\n onPointerDown={handleResizePointerDown}\n />\n ) : null}\n </th>\n );\n});\n\nexport const BaseTableCell = forwardRef<HTMLTableCellElement, BaseTableCellProps>(\n function BaseTableCell(\n {\n align = 'left',\n appearance,\n className,\n classNames,\n style,\n ...cellProps\n },\n ref,\n ) {\n assertEnum('cell align', align, ['left', 'center', 'right'] as const);\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <td\n {...cellProps}\n ref={ref}\n data-slot=\"cell\"\n className={cn(\n theme.slots.tableCell,\n isSplitScroll && theme.slots.tableSplitCell,\n align === 'center' && theme.slots.tableCellAlignCenter,\n align === 'right' && theme.slots.tableCellAlignRight,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.tableCell,\n ...(isSplitScroll ? theme.styles.tableSplitCell : undefined),\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableCaption = forwardRef<\n HTMLTableCaptionElement,\n BaseTableCaptionProps\n>(function BaseTableCaption(\n { appearance, className, classNames, style, ...captionProps },\n ref,\n) {\n const { theme } = useBaseTableContext(appearance);\n\n return (\n <caption\n {...captionProps}\n ref={ref}\n data-slot=\"caption\"\n className={cn(theme.slots.tableCaption, classNames?.root, className)}\n style={{\n ...theme.styles.tableCaption,\n ...style,\n }}\n />\n );\n});\n\nexport const BaseTableEmpty = forwardRef<HTMLTableRowElement, BaseTableEmptyProps>(\n function BaseTableEmpty(\n {\n colSpan,\n icon,\n title,\n description,\n actions,\n children,\n appearance,\n className,\n classNames,\n style,\n ...emptyProps\n },\n ref,\n ) {\n if (!Number.isSafeInteger(colSpan) || colSpan < 1) {\n throw new Error('BaseTable empty colSpan must be a positive safe integer.');\n }\n const { layout, theme } = useBaseTableContext(appearance);\n const isSplitScroll = layout === 'split-scroll';\n const hasStructuredContent =\n hasRenderableNode(icon) ||\n hasRenderableNode(title) ||\n hasRenderableNode(description) ||\n hasRenderableNode(actions);\n\n return (\n <tr\n {...emptyProps}\n ref={ref}\n data-slot=\"empty-row\"\n className={cn(\n theme.slots.tableEmptyRow,\n isSplitScroll && theme.slots.tableSplitRow,\n classNames?.row,\n className,\n )}\n style={{\n ...theme.styles.tableEmpty,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n >\n <td\n colSpan={colSpan}\n data-slot=\"empty-cell\"\n className={cn(\n theme.slots.tableEmptyCell,\n isSplitScroll && theme.slots.tableSplitCell,\n classNames?.cell,\n )}\n style={isSplitScroll ? { gridColumn: '1 / -1' } : undefined}\n >\n {hasStructuredContent ? (\n <div className={cn(theme.slots.tableEmptyContent, classNames?.content)}>\n {hasRenderableNode(icon) ? (\n <div className={cn(theme.slots.tableEmptyIcon, classNames?.icon)}>\n {icon}\n </div>\n ) : null}\n {hasRenderableNode(title) ? (\n <div className={cn(theme.slots.tableEmptyTitle, classNames?.title)}>\n {title}\n </div>\n ) : null}\n {hasRenderableNode(description) ? (\n <div\n className={cn(\n theme.slots.tableEmptyDescription,\n classNames?.description,\n )}\n >\n {description}\n </div>\n ) : null}\n {hasRenderableNode(actions) ? (\n <div className={cn(theme.slots.tableEmptyActions, classNames?.actions)}>\n {actions}\n </div>\n ) : null}\n </div>\n ) : (\n children\n )}\n </td>\n </tr>\n );\n});\n\nexport function BaseTableLoading({\n rows = 3,\n columns,\n columnWidths = [],\n animated = true,\n rowLabel,\n appearance,\n className,\n classNames,\n style,\n}: BaseTableLoadingProps) {\n if (!Number.isSafeInteger(rows) || rows < 0) {\n throw new Error(\n 'BaseTable loading rows must be a non-negative safe integer.',\n );\n }\n if (!Number.isSafeInteger(columns) || columns < 1) {\n throw new Error(\n 'BaseTable loading columns must be a positive safe integer.',\n );\n }\n if (!Array.isArray(columnWidths)) {\n throw new Error('BaseTable loading columnWidths must be an array.');\n }\n columnWidths.forEach((value, index) =>\n validateCssSizeValue(value, `loading columnWidths[${index}]`, {\n stringAllowed: true,\n }),\n );\n assertBoolean('loading animated', animated);\n assertOptionalLabel('loading rowLabel', rowLabel);\n const { layout, theme } = useBaseTableContext(appearance);\n const messages = useMonkeysLocaleMessages().table;\n const resolvedRowLabel = rowLabel ?? messages.loadingRow;\n const isSplitScroll = layout === 'split-scroll';\n\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr\n key={rowIndex}\n data-slot=\"loading-row\"\n aria-label={`${resolvedRowLabel} ${rowIndex + 1}`}\n aria-busy=\"true\"\n className={cn(\n theme.slots.tableLoadingRow,\n isSplitScroll && theme.slots.tableSplitRow,\n classNames?.row,\n className,\n )}\n style={{\n ...theme.styles.tableLoading,\n ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n ...style,\n }}\n >\n {Array.from({ length: columns }).map((__, columnIndex) => (\n <td\n key={columnIndex}\n data-slot=\"loading-cell\"\n className={cn(\n theme.slots.tableLoadingCell,\n isSplitScroll && theme.slots.tableSplitCell,\n classNames?.cell,\n )}\n >\n <div\n aria-hidden=\"true\"\n data-slot=\"loading-skeleton\"\n className={cn(\n theme.slots.tableLoadingSkeleton,\n animated && 'animate-pulse motion-reduce:animate-none',\n classNames?.skeleton,\n )}\n style={{\n width: toCssSize(columnWidths[columnIndex]),\n }}\n />\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n BaseButton,\n BaseCheckbox,\n BaseField,\n BaseInput,\n BaseSelect,\n BaseSegmentedControl,\n} from '../base';\nimport { cn } from '../base/utils';\nimport type { WorkbenchGalleryColumn } from './workbenchGalleryUtils';\n\nexport interface WorkbenchGallerySettingsValue {\n visibleColumnKeys?: string[];\n galleryFieldKey?: string;\n galleryLayout?: 'fixed' | 'masonry' | string;\n galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n galleryGridColumns?: number | 'auto' | string;\n galleryBentoColumns?: 1 | 2 | 3 | number;\n galleryDetailVisibility?: 'all' | 'limit' | string;\n galleryDetailLimit?: number | string;\n [key: string]: any;\n}\n\nexport interface WorkbenchGallerySettingsOption<Value extends string | number = string> {\n value: Value;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface WorkbenchGallerySettingsLabels {\n settingsButton?: ReactNode;\n title?: ReactNode;\n visibleColumns?: ReactNode;\n coverField?: ReactNode;\n autoDetect?: ReactNode;\n cardDensity?: ReactNode;\n cardColumns?: ReactNode;\n detailColumns?: ReactNode;\n fieldVisibility?: ReactNode;\n fieldLimit?: ReactNode;\n fieldLimitHint?: ReactNode;\n layout?: ReactNode;\n compact?: ReactNode;\n comfortable?: ReactNode;\n detailed?: ReactNode;\n autoColumns?: ReactNode;\n columns?: (count: number) => ReactNode;\n bentoColumns?: (count: number) => ReactNode;\n topLimit?: ReactNode;\n allFields?: ReactNode;\n adaptiveGrid?: ReactNode;\n masonry?: ReactNode;\n}\n\nexport interface WorkbenchGallerySettingsPanelClassNames {\n root?: string;\n section?: string;\n sectionHeader?: string;\n columnList?: string;\n columnItem?: string;\n control?: string;\n}\n\nexport interface WorkbenchGallerySettingsPanelProps {\n columns?: WorkbenchGalleryColumn[];\n galleryFieldOptions?: WorkbenchGalleryColumn[];\n value?: WorkbenchGallerySettingsValue;\n onValueChange?: (\n nextValue: WorkbenchGallerySettingsValue,\n patch: Partial<WorkbenchGallerySettingsValue>,\n ) => void;\n labels?: WorkbenchGallerySettingsLabels;\n densityOptions?: Array<WorkbenchGallerySettingsOption>;\n gridColumnOptions?: Array<WorkbenchGallerySettingsOption<number | 'auto'>>;\n bentoColumnOptions?: Array<WorkbenchGallerySettingsOption<number>>;\n detailVisibilityOptions?: Array<WorkbenchGallerySettingsOption>;\n layoutOptions?: Array<WorkbenchGallerySettingsOption>;\n getColumnLabel?: (column: WorkbenchGalleryColumn) => ReactNode;\n getColumnDescription?: (column: WorkbenchGalleryColumn) => ReactNode;\n showColumnVisibility?: boolean;\n showGalleryControls?: boolean;\n showLayoutControl?: boolean;\n showGridColumns?: boolean;\n showDetailColumns?: boolean;\n allowEmptyVisibleColumns?: boolean;\n className?: string;\n classNames?: WorkbenchGallerySettingsPanelClassNames;\n}\n\nexport interface WorkbenchGallerySettingsButtonClassNames {\n root?: string;\n trigger?: string;\n popover?: string;\n header?: string;\n panel?: string;\n}\n\nexport interface WorkbenchGallerySettingsButtonProps extends WorkbenchGallerySettingsPanelProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n triggerIcon?: ReactNode;\n triggerLabel?: ReactNode;\n triggerTitle?: string;\n align?: 'start' | 'end';\n popoverWidth?: number;\n panelHeader?: ReactNode;\n panelBefore?: ReactNode;\n panelAfter?: ReactNode;\n panelClassName?: string;\n buttonClassName?: string;\n popoverClassName?: string;\n buttonClassNames?: WorkbenchGallerySettingsButtonClassNames;\n}\n\nconst defaultLabels: Required<WorkbenchGallerySettingsLabels> = {\n settingsButton: 'Gallery settings',\n title: 'Gallery settings',\n visibleColumns: 'Visible fields',\n coverField: 'Cover field',\n autoDetect: 'Auto',\n cardDensity: 'Card density',\n cardColumns: 'Cards per row',\n detailColumns: 'Detail columns',\n fieldVisibility: 'Field visibility',\n fieldLimit: 'Field limit',\n fieldLimitHint: 'Uses current field order',\n layout: 'Gallery layout',\n compact: 'Compact',\n comfortable: 'Standard',\n detailed: 'Detailed',\n autoColumns: 'Auto',\n columns: (count) => `${count}`,\n bentoColumns: (count) => `${count}`,\n topLimit: 'First fields',\n allFields: 'All fields',\n adaptiveGrid: 'Grid',\n masonry: 'Masonry',\n};\n\nfunction normalizeColumnKey(column: WorkbenchGalleryColumn | undefined) {\n return String(column?.key || '');\n}\n\nfunction getDefaultColumnLabel(column: WorkbenchGalleryColumn) {\n return column.label ?? column.key;\n}\n\nfunction getDefaultVisibleColumnKeys(columns: WorkbenchGalleryColumn[]) {\n return columns\n .filter((column) => normalizeColumnKey(column) && column.hidden !== true)\n .map((column) => normalizeColumnKey(column));\n}\n\nfunction getResolvedVisibleColumnKeys({\n columns,\n visibleColumnKeys,\n allowEmptyVisibleColumns,\n}: {\n columns: WorkbenchGalleryColumn[];\n visibleColumnKeys?: string[];\n allowEmptyVisibleColumns?: boolean;\n}) {\n const validKeys = new Set(columns.map(normalizeColumnKey).filter(Boolean));\n const controlledKeys = Array.isArray(visibleColumnKeys)\n ? visibleColumnKeys.filter((key) => validKeys.has(String(key)))\n : null;\n\n if (controlledKeys && (controlledKeys.length || allowEmptyVisibleColumns)) {\n return controlledKeys;\n }\n\n return getDefaultVisibleColumnKeys(columns);\n}\n\nfunction getDefaultDensityOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'compact', label: labels.compact },\n { value: 'comfortable', label: labels.comfortable },\n { value: 'detailed', label: labels.detailed },\n ];\n}\n\nfunction getDefaultGridColumnOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number | 'auto'>> {\n return [\n { value: 'auto' as const, label: labels.autoColumns },\n { value: 1, label: labels.columns(1) },\n { value: 2, label: labels.columns(2) },\n { value: 3, label: labels.columns(3) },\n { value: 4, label: labels.columns(4) },\n ];\n}\n\nfunction getDefaultBentoColumnOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number>> {\n return [\n { value: 1, label: labels.bentoColumns(1) },\n { value: 2, label: labels.bentoColumns(2) },\n { value: 3, label: labels.bentoColumns(3) },\n ];\n}\n\nfunction getDefaultDetailVisibilityOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'limit', label: labels.topLimit },\n { value: 'all', label: labels.allFields },\n ];\n}\n\nfunction getDefaultLayoutOptions(\n labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n return [\n { value: 'fixed', label: labels.adaptiveGrid },\n { value: 'masonry', label: labels.masonry },\n ];\n}\n\nfunction normalizeOptionValue(value: string | number) {\n return String(value);\n}\n\nfunction getOptionValue<Value extends string | number>(\n options: Array<WorkbenchGallerySettingsOption<Value>>,\n rawValue: unknown,\n fallbackValue: Value,\n) {\n const valueText = String(rawValue ?? fallbackValue);\n return options.some((option) => String(option.value) === valueText)\n ? valueText\n : String(fallbackValue);\n}\n\nfunction parseNumberOption(value: string) {\n const parsed = Number.parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : 1;\n}\n\nconst compactSegmentedClassNames = {\n root: 'flex w-full flex-wrap',\n item: 'min-w-[58px] flex-1 px-2 text-[11px]',\n label: 'text-[11px]',\n};\n\nexport function WorkbenchGallerySettingsPanel({\n columns = [],\n galleryFieldOptions,\n value,\n onValueChange,\n labels,\n densityOptions,\n gridColumnOptions,\n bentoColumnOptions,\n detailVisibilityOptions,\n layoutOptions,\n getColumnLabel = getDefaultColumnLabel,\n getColumnDescription,\n showColumnVisibility = true,\n showGalleryControls = true,\n showLayoutControl = true,\n showGridColumns = true,\n showDetailColumns = true,\n allowEmptyVisibleColumns = false,\n className,\n classNames,\n}: WorkbenchGallerySettingsPanelProps) {\n const resolvedLabels = { ...defaultLabels, ...labels };\n const resolvedValue = value || {};\n const resolvedColumns = columns.filter((column) => normalizeColumnKey(column));\n const resolvedVisibleColumnKeys = getResolvedVisibleColumnKeys({\n columns: resolvedColumns,\n visibleColumnKeys: resolvedValue.visibleColumnKeys,\n allowEmptyVisibleColumns,\n });\n const visibleColumnKeySet = new Set(resolvedVisibleColumnKeys);\n const resolvedGalleryFieldOptions = (galleryFieldOptions || resolvedColumns)\n .filter((column) => normalizeColumnKey(column));\n const resolvedDensityOptions = densityOptions || getDefaultDensityOptions(resolvedLabels);\n const resolvedGridColumnOptions = gridColumnOptions || getDefaultGridColumnOptions(resolvedLabels);\n const resolvedBentoColumnOptions = bentoColumnOptions || getDefaultBentoColumnOptions(resolvedLabels);\n const resolvedDetailVisibilityOptions = detailVisibilityOptions || getDefaultDetailVisibilityOptions(resolvedLabels);\n const resolvedLayoutOptions = layoutOptions || getDefaultLayoutOptions(resolvedLabels);\n const canUpdate = typeof onValueChange === 'function';\n\n const updateValue = (patch: Partial<WorkbenchGallerySettingsValue>) => {\n onValueChange?.({ ...resolvedValue, ...patch }, patch);\n };\n\n const toggleColumn = (columnKey: string) => {\n if (!canUpdate) return;\n const nextVisibleSet = new Set(resolvedVisibleColumnKeys);\n if (nextVisibleSet.has(columnKey)) {\n nextVisibleSet.delete(columnKey);\n } else {\n nextVisibleSet.add(columnKey);\n }\n\n let nextVisibleColumnKeys = resolvedColumns\n .map(normalizeColumnKey)\n .filter((key) => nextVisibleSet.has(key));\n\n if (!nextVisibleColumnKeys.length && !allowEmptyVisibleColumns) {\n nextVisibleColumnKeys = [columnKey];\n }\n\n updateValue({ visibleColumnKeys: nextVisibleColumnKeys });\n };\n\n const shouldRenderColumnVisibility = showColumnVisibility && resolvedColumns.length > 0;\n const shouldRenderGalleryControls = showGalleryControls;\n\n return (\n <div className={cn('space-y-3 text-foreground', classNames?.root, className)}>\n {shouldRenderColumnVisibility ? (\n <section className={cn('space-y-2', classNames?.section)}>\n <div className={cn('text-[10px] font-medium uppercase tracking-wide text-muted-foreground', classNames?.sectionHeader)}>\n {resolvedLabels.visibleColumns}\n </div>\n <div className={cn('max-h-[220px] space-y-1 overflow-y-auto pr-1', classNames?.columnList)}>\n {resolvedColumns.map((column) => {\n const columnKey = normalizeColumnKey(column);\n return (\n <BaseCheckbox\n key={`workbench-gallery-column-${columnKey}`}\n checked={visibleColumnKeySet.has(columnKey)}\n disabled={!canUpdate}\n label={getColumnLabel(column)}\n description={getColumnDescription?.(column)}\n onChange={() => toggleColumn(columnKey)}\n className={cn('flex w-full rounded-lg px-2 py-1.5 hover:bg-muted/50', classNames?.columnItem)}\n />\n );\n })}\n </div>\n </section>\n ) : null}\n\n {shouldRenderGalleryControls ? (\n <section className={cn('space-y-3 border-t border-border/60 pt-3', classNames?.section)}>\n <BaseField\n label={resolvedLabels.coverField}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSelect\n value={String(resolvedValue.galleryFieldKey || 'auto')}\n options={[\n { value: 'auto', label: resolvedLabels.autoDetect },\n ...resolvedGalleryFieldOptions.map((column) => ({\n value: normalizeColumnKey(column),\n label: getColumnLabel(column),\n })),\n ]}\n disabled={!canUpdate}\n onChange={(event) => updateValue({ galleryFieldKey: event.currentTarget.value || 'auto' })}\n className={classNames?.control}\n />\n </BaseField>\n\n <BaseField\n label={resolvedLabels.cardDensity}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedDensityOptions, resolvedValue.galleryDensity, 'comfortable')}\n options={resolvedDensityOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryDensity: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n\n {showGridColumns ? (\n <BaseField\n label={resolvedLabels.cardColumns}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedGridColumnOptions, resolvedValue.galleryGridColumns, 'auto')}\n options={resolvedGridColumnOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({\n galleryGridColumns: nextValue === 'auto' ? 'auto' : parseNumberOption(nextValue),\n })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n\n {showDetailColumns ? (\n <BaseField\n label={resolvedLabels.detailColumns}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedBentoColumnOptions, resolvedValue.galleryBentoColumns, 2)}\n options={resolvedBentoColumnOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryBentoColumns: parseNumberOption(nextValue) })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n\n <BaseField\n label={resolvedLabels.fieldVisibility}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedDetailVisibilityOptions, resolvedValue.galleryDetailVisibility, 'limit')}\n options={resolvedDetailVisibilityOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryDetailVisibility: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n\n {resolvedValue.galleryDetailVisibility !== 'all' ? (\n <BaseField\n label={resolvedLabels.fieldLimit}\n description={resolvedLabels.fieldLimitHint}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n description: 'text-[10px]',\n }}\n >\n <BaseInput\n type=\"number\"\n min={1}\n step={1}\n value={String(resolvedValue.galleryDetailLimit || 4)}\n disabled={!canUpdate}\n onChange={(event) => updateValue({ galleryDetailLimit: event.currentTarget.value })}\n className={classNames?.control}\n />\n </BaseField>\n ) : null}\n\n {showLayoutControl ? (\n <BaseField\n label={resolvedLabels.layout}\n classNames={{\n label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n }}\n >\n <BaseSegmentedControl\n value={getOptionValue(resolvedLayoutOptions, resolvedValue.galleryLayout, 'fixed')}\n options={resolvedLayoutOptions.map((option) => ({\n value: normalizeOptionValue(option.value),\n label: option.label,\n disabled: option.disabled,\n }))}\n onValueChange={(nextValue) => updateValue({ galleryLayout: nextValue })}\n className={cn('w-full', classNames?.control)}\n classNames={compactSegmentedClassNames}\n />\n </BaseField>\n ) : null}\n </section>\n ) : null}\n </div>\n );\n}\n\nexport function WorkbenchGallerySettingsButton({\n open,\n defaultOpen = false,\n onOpenChange,\n triggerIcon,\n triggerLabel,\n triggerTitle,\n align = 'end',\n popoverWidth = 320,\n panelHeader,\n panelBefore,\n panelAfter,\n panelClassName,\n buttonClassName,\n popoverClassName,\n buttonClassNames,\n labels,\n className,\n classNames,\n ...panelProps\n}: WorkbenchGallerySettingsButtonProps) {\n const resolvedLabels = { ...defaultLabels, ...labels };\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [popoverStyle, setPopoverStyle] = useState<{\n left?: number;\n top?: number;\n width?: number;\n maxHeight?: string;\n }>({});\n const isControlled = open !== undefined;\n const isOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = (nextOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n useLayoutEffect(() => {\n if (!isOpen) return undefined;\n\n const updatePopoverPosition = () => {\n const triggerRect = rootRef.current?.getBoundingClientRect();\n if (!triggerRect || typeof window === 'undefined') return;\n\n const viewportPadding = 12;\n const availableWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);\n const resolvedWidth = Math.min(popoverWidth, availableWidth || popoverWidth);\n const preferredLeft = align === 'start'\n ? triggerRect.left\n : triggerRect.right - resolvedWidth;\n const left = Math.min(\n Math.max(preferredLeft, viewportPadding),\n Math.max(window.innerWidth - resolvedWidth - viewportPadding, viewportPadding),\n );\n const top = Math.min(\n triggerRect.bottom + 8,\n Math.max(window.innerHeight - 80, viewportPadding),\n );\n\n setPopoverStyle({\n left,\n top,\n width: resolvedWidth,\n maxHeight: `calc(100vh - ${Math.round(top + viewportPadding)}px)`,\n });\n };\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setOpen(false);\n };\n\n updatePopoverPosition();\n window.addEventListener('resize', updatePopoverPosition);\n window.addEventListener('scroll', updatePopoverPosition, true);\n window.addEventListener('pointerdown', handlePointerDown);\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('resize', updatePopoverPosition);\n window.removeEventListener('scroll', updatePopoverPosition, true);\n window.removeEventListener('pointerdown', handlePointerDown);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [align, isOpen, popoverWidth]);\n\n const resolvedTriggerLabel = triggerLabel ?? resolvedLabels.settingsButton;\n const resolvedPanelHeader = panelHeader ?? resolvedLabels.title;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', buttonClassNames?.root, className)}>\n <BaseButton\n icon={triggerIcon}\n label={resolvedTriggerLabel}\n title={triggerTitle || (typeof resolvedTriggerLabel === 'string' ? resolvedTriggerLabel : undefined)}\n iconOnly={Boolean(triggerIcon)}\n active={isOpen}\n tone=\"muted\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n className={cn(buttonClassNames?.trigger, buttonClassName)}\n onClick={() => setOpen(!isOpen)}\n />\n\n {isOpen ? (\n <div\n role=\"dialog\"\n aria-label={typeof resolvedPanelHeader === 'string' ? resolvedPanelHeader : undefined}\n className={cn(\n 'fixed z-50 overflow-y-auto rounded-xl border border-border bg-card p-3 text-foreground shadow-lg',\n align === 'start' ? 'origin-top-left' : 'origin-top-right',\n buttonClassNames?.popover,\n popoverClassName,\n )}\n style={popoverStyle}\n >\n {resolvedPanelHeader ? (\n <div className={cn('mb-3 text-[11px] font-medium text-foreground', buttonClassNames?.header)}>\n {resolvedPanelHeader}\n </div>\n ) : null}\n {panelBefore}\n <WorkbenchGallerySettingsPanel\n {...panelProps}\n labels={resolvedLabels}\n className={cn(buttonClassNames?.panel, panelClassName)}\n classNames={classNames}\n />\n {panelAfter}\n </div>\n ) : null}\n </div>\n );\n}\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport {\n WorkbenchGallerySettingsButton,\n type WorkbenchGallerySettingsButtonProps,\n} from './WorkbenchGallerySettings';\n\nexport interface WorkbenchContentToolbarViewModeOption {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface WorkbenchContentToolbarClassNames {\n root?: string;\n start?: string;\n end?: string;\n viewModeRoot?: string;\n viewModeTrigger?: string;\n viewModeMenu?: string;\n viewModeItem?: string;\n settings?: string;\n}\n\nexport interface WorkbenchContentToolbarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n as?: ElementType;\n children?: ReactNode;\n end?: ReactNode;\n viewMode?: string;\n viewModeOptions?: WorkbenchContentToolbarViewModeOption[];\n onViewModeChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n gallerySettings?: WorkbenchGallerySettingsButtonProps | false;\n gallerySettingsPlacement?: 'start' | 'end';\n className?: string;\n startClassName?: string;\n endClassName?: string;\n classNames?: WorkbenchContentToolbarClassNames;\n [key: string]: any;\n}\n\nfunction TableViewIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M3 10h18M9 4v16\" />\n </svg>\n );\n}\n\nfunction GalleryViewIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n </svg>\n );\n}\n\nfunction SettingsIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M20 7h-9M7 7H4M14 17H4M20 17h-3\" />\n <circle cx=\"9\" cy=\"7\" r=\"2\" />\n <circle cx=\"16\" cy=\"17\" r=\"2\" />\n </svg>\n );\n}\n\nfunction ChevronDownIcon({ open }: { open: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className={cn('h-3 w-3 opacity-55 transition-transform', open && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nconst defaultViewModeOptions: WorkbenchContentToolbarViewModeOption[] = [\n { value: 'list', label: 'Table view', icon: <TableViewIcon /> },\n { value: 'gallery', label: 'Gallery view', icon: <GalleryViewIcon /> },\n];\n\nfunction getViewModeOptionIcon(option: WorkbenchContentToolbarViewModeOption) {\n if (option.icon !== undefined) return option.icon;\n if (option.value === 'list' || option.value === 'table') return <TableViewIcon />;\n if (option.value === 'gallery') return <GalleryViewIcon />;\n return null;\n}\n\nfunction getSettingsTriggerLabel(settings: WorkbenchGallerySettingsButtonProps) {\n return settings.triggerLabel ?? settings.labels?.settingsButton ?? 'Settings';\n}\n\nfunction WorkbenchContentToolbarViewModeControl({\n value,\n options,\n onValueChange,\n classNames,\n}: {\n value?: string;\n options: WorkbenchContentToolbarViewModeOption[];\n onValueChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n classNames?: WorkbenchContentToolbarClassNames;\n}) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [open, setOpen] = useState(false);\n const activeOption = options.find((option) => option.value === value) || options.find((option) => !option.disabled) || options[0];\n const activeIcon = activeOption ? getViewModeOptionIcon(activeOption) : null;\n\n useEffect(() => {\n if (!open) return undefined;\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setOpen(false);\n };\n\n window.addEventListener('pointerdown', handlePointerDown);\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('pointerdown', handlePointerDown);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [open]);\n\n if (!activeOption) return null;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', classNames?.viewModeRoot)}>\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n 'inline-flex h-7 min-w-0 items-center justify-center gap-1.5 rounded-md border border-border/70 bg-card px-2 text-xs font-medium text-foreground shadow-none transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25',\n classNames?.viewModeTrigger,\n )}\n onClick={() => setOpen((current) => !current)}\n >\n {activeIcon ? (\n <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center text-muted-foreground\">\n {activeIcon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{activeOption.label}</span>\n <ChevronDownIcon open={open} />\n </button>\n\n {open ? (\n <div\n role=\"listbox\"\n className={cn(\n 'absolute left-0 top-full z-50 mt-2 min-w-[160px] overflow-hidden rounded-xl border border-border/60 bg-card/95 p-1.5 text-xs text-foreground shadow-lg backdrop-blur-xl',\n classNames?.viewModeMenu,\n )}\n >\n {options.map((option) => {\n const selected = option.value === activeOption.value;\n const optionIcon = getViewModeOptionIcon(option);\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n disabled={option.disabled}\n className={cn(\n 'flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/55 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50',\n selected && 'bg-muted/60 text-foreground',\n classNames?.viewModeItem,\n )}\n onClick={() => {\n if (option.disabled) return;\n onValueChange?.(option.value, option);\n setOpen(false);\n }}\n >\n {optionIcon ? (\n <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center\">\n {optionIcon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{option.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport const WorkbenchContentToolbar = forwardRef<HTMLElement, WorkbenchContentToolbarProps>(\n function WorkbenchContentToolbar(\n {\n as: Component = 'div',\n children,\n end,\n viewMode,\n viewModeOptions,\n onViewModeChange,\n gallerySettings,\n gallerySettingsPlacement = 'start',\n className,\n startClassName,\n endClassName,\n classNames,\n ...props\n },\n ref,\n ) {\n const resolvedViewModeOptions = viewModeOptions || (viewMode ? defaultViewModeOptions : []);\n const resolvedGallerySettings = gallerySettings && typeof gallerySettings === 'object' ? gallerySettings : null;\n const shouldRenderViewMode = Boolean(resolvedViewModeOptions.length);\n const shouldRenderSettings = Boolean(resolvedGallerySettings);\n const shouldRenderSettingsInStart = shouldRenderSettings && gallerySettingsPlacement !== 'end';\n const shouldRenderSettingsInEnd = shouldRenderSettings && gallerySettingsPlacement === 'end';\n const shouldRenderStart = shouldRenderViewMode || shouldRenderSettingsInStart || Boolean(children);\n const shouldRenderEnd = Boolean(end) || shouldRenderSettingsInEnd;\n\n return (\n <Component\n ref={ref}\n data-workbench-content-toolbar\n className={cn(\n 'flex min-h-[46px] shrink-0 flex-col gap-2 border-b border-border/60 px-4 py-2 md:flex-row md:items-center md:justify-between',\n classNames?.root,\n className,\n )}\n {...props}\n >\n {shouldRenderStart ? (\n <div className={cn('flex flex-wrap items-center gap-2', classNames?.start, startClassName)}>\n {shouldRenderViewMode ? (\n <WorkbenchContentToolbarViewModeControl\n value={viewMode}\n options={resolvedViewModeOptions}\n onValueChange={onViewModeChange}\n classNames={classNames}\n />\n ) : null}\n {shouldRenderSettingsInStart && resolvedGallerySettings ? (\n <WorkbenchGallerySettingsButton\n align=\"end\"\n triggerIcon={<SettingsIcon />}\n triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n {...resolvedGallerySettings}\n buttonClassName={cn(\n '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n classNames?.settings,\n resolvedGallerySettings.buttonClassName,\n )}\n />\n ) : null}\n {children}\n </div>\n ) : null}\n {shouldRenderEnd ? (\n <div className={cn('flex shrink-0 items-center gap-2', classNames?.end, endClassName)}>\n {end}\n {shouldRenderSettingsInEnd && resolvedGallerySettings ? (\n <WorkbenchGallerySettingsButton\n align=\"end\"\n triggerIcon={<SettingsIcon />}\n triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n {...resolvedGallerySettings}\n buttonClassName={cn(\n '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n classNames?.settings,\n resolvedGallerySettings.buttonClassName,\n )}\n />\n ) : null}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import {\n Children,\n forwardRef,\n isValidElement,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ElementType,\n type ReactNode,\n} from 'react';\n\nimport { BaseDescriptionList } from '../base';\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchDetailSidebarClassNames {\n root?: string;\n header?: string;\n body?: string;\n footer?: string;\n resizeHandle?: string;\n autoBody?: string;\n section?: string;\n sectionHeader?: string;\n sectionTitle?: string;\n sectionDescription?: string;\n descriptionList?: string;\n descriptionListItem?: string;\n descriptionListTerm?: string;\n descriptionListValue?: string;\n fieldLabel?: string;\n fieldLabelIcon?: string;\n fieldValue?: string;\n mediaValue?: string;\n mediaImage?: string;\n mediaCaption?: string;\n emptyState?: string;\n}\n\nexport interface WorkbenchDetailSidebarBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n className?: string;\n}\n\nexport interface WorkbenchDetailSidebarField<Row = any> {\n key: string;\n label?: ReactNode;\n labelIcon?: ReactNode | ElementType;\n icon?: ReactNode | ElementType;\n renderType?: string;\n value?: ReactNode | ((record: Row | null | undefined, field: WorkbenchDetailSidebarField<Row>) => ReactNode);\n description?: ReactNode;\n hidden?: boolean | ((field: WorkbenchDetailSidebarField<Row>, record: Row | null | undefined) => boolean);\n emptyValue?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarSection<Row = any> {\n id?: string;\n title?: ReactNode;\n description?: ReactNode;\n fields?: WorkbenchDetailSidebarField<Row>[];\n columns?: 1 | 2 | 3;\n hidden?: boolean | ((section: WorkbenchDetailSidebarSection<Row>, record: Row | null | undefined) => boolean);\n emptyState?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarRenderContext<Row = any> {\n field: WorkbenchDetailSidebarField<Row>;\n fieldIndex: number;\n section: WorkbenchDetailSidebarSection<Row>;\n sectionIndex: number;\n record: Row | null | undefined;\n}\n\nexport interface WorkbenchDetailSidebarProps<Row = any> extends Omit<ComponentPropsWithoutRef<'aside'>, 'children' | 'className' | 'style'> {\n as?: ElementType;\n bodyAs?: ElementType;\n open?: boolean;\n width?: number | string;\n header?: ReactNode;\n footer?: ReactNode;\n resizeHandle?: ReactNode;\n children?: ReactNode;\n record?: Row | null;\n fields?: WorkbenchDetailSidebarField<Row>[];\n sections?: WorkbenchDetailSidebarSection<Row>[];\n fieldColumns?: 1 | 2 | 3;\n emptyValue?: ReactNode;\n emptyState?: ReactNode;\n getFieldValue?: (\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => unknown;\n renderFieldValue?: (\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => ReactNode;\n formatFieldValue?: (\n value: unknown,\n context: WorkbenchDetailSidebarRenderContext<Row>,\n ) => ReactNode;\n formatFieldLabel?: (\n label: ReactNode,\n context: Omit<WorkbenchDetailSidebarRenderContext<Row>, 'fieldIndex'> & {\n field: WorkbenchDetailSidebarField<Row>;\n fieldIndex?: number;\n },\n ) => ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n resizeHandleClassName?: string;\n bodyProps?: WorkbenchDetailSidebarBodyProps;\n classNames?: WorkbenchDetailSidebarClassNames;\n style?: CSSProperties;\n [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n header?: ReactNode;\n footer?: ReactNode;\n bodyAs?: ElementType;\n bodyClassName?: string;\n bodyProps?: WorkbenchDetailSidebarBodyProps;\n classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n return Boolean(\n props.header ||\n props.footer ||\n props.bodyAs ||\n props.bodyClassName ||\n props.bodyProps ||\n props.classNames?.body,\n );\n}\n\nfunction hasRenderableChildren(children: ReactNode): boolean {\n if (children === null || children === undefined || typeof children === 'boolean') return false;\n if (typeof children === 'string') return children.trim().length > 0;\n if (Array.isArray(children)) return children.some(hasRenderableChildren);\n\n const childList = Children.toArray(children);\n if (!childList.length) return false;\n\n return childList.some((child) => (typeof child === 'string' ? child.trim().length > 0 : true));\n}\n\nfunction resolveWidthStyle(open: boolean | undefined, width: number | string | undefined) {\n if (width === undefined) return {};\n if (open === undefined) return { width };\n\n return {\n width: open ? width : 0,\n opacity: open ? 1 : 0,\n };\n}\n\nfunction getFallbackFieldLabel(field: WorkbenchDetailSidebarField) {\n return field.label ?? field.key;\n}\n\nfunction getObjectDisplayValue(value: Record<string, any>) {\n const displayKeys = ['text', 'label', 'title', 'display', 'value', 'recordId'];\n\n for (const key of displayKeys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) continue;\n\n const displayValue = value[key];\n if (displayValue !== null && displayValue !== undefined && displayValue !== '') {\n return displayValue;\n }\n }\n\n return undefined;\n}\n\nfunction isEmptyDetailValue(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction isPlainDisplayValue(value: ReactNode) {\n return ['string', 'number', 'boolean'].includes(typeof value);\n}\n\nfunction getMediaDisplayData(value: unknown) {\n if (!value) return null;\n\n if (typeof value === 'string') {\n const isDataImage = value.startsWith('data:image/');\n const isImageUrl = /\\.(avif|gif|jpe?g|png|svg|webp)(\\?.*)?$/i.test(value);\n return isDataImage || isImageUrl ? { src: value } : null;\n }\n\n if (typeof value !== 'object' || isValidElement(value)) return null;\n\n const media = value as Record<string, any>;\n const src = media.src || media.url || media.thumbnail || media.preview || media.image;\n\n return src\n ? {\n src: String(src),\n alt: media.alt || media.label || media.title || '',\n caption: media.caption || media.description || media.label || media.title,\n }\n : null;\n}\n\nfunction shouldRenderAsMedia(field: WorkbenchDetailSidebarField | undefined, value: unknown) {\n const renderType = String(field?.renderType || '').toLowerCase();\n return ['image', 'media', 'preview', 'thumbnail'].includes(renderType) || Boolean(getMediaDisplayData(value));\n}\n\nfunction renderMaybeFieldIcon(icon: ReactNode | ElementType | undefined, className?: string) {\n if (!icon) {\n return (\n <span className={cn('relative inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center', className)}>\n <span className=\"absolute inset-0 rounded-full border border-primary/25 bg-primary/10\" />\n <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n </span>\n );\n }\n\n if (typeof icon === 'string' || typeof icon === 'number') {\n return (\n <span className={cn('inline-flex h-3.5 min-w-3.5 shrink-0 items-center justify-center rounded-sm text-[10px] font-semibold text-primary', className)}>\n {icon}\n </span>\n );\n }\n\n if (typeof icon === 'boolean') return null;\n\n if (isValidElement(icon)) return icon;\n\n const IconComponent = icon as ElementType;\n return <IconComponent className={cn('h-3.5 w-3.5 shrink-0 text-primary', className)} />;\n}\n\nfunction renderDetailFieldLabel<Row>(\n label: ReactNode,\n field: WorkbenchDetailSidebarField<Row>,\n classNames?: WorkbenchDetailSidebarClassNames,\n) {\n return (\n <span className={cn('inline-flex min-w-0 items-center gap-1.5 text-[11px] font-semibold text-foreground', classNames?.fieldLabel)}>\n {renderMaybeFieldIcon(field.labelIcon || field.icon, classNames?.fieldLabelIcon)}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n}\n\nfunction WorkbenchDetailSidebarMediaValue({\n media,\n classNames,\n}: {\n media: NonNullable<ReturnType<typeof getMediaDisplayData>>;\n classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n return (\n <div className={cn('grid gap-2', classNames?.mediaValue)}>\n <div className=\"overflow-hidden rounded-md border border-border/55 bg-muted/20 dark:border-border/45 dark:bg-muted/10\">\n <img\n src={media.src}\n alt={String(media.alt || '')}\n className={cn('block aspect-[16/9] w-full object-cover', classNames?.mediaImage)}\n />\n </div>\n {media.caption ? (\n <div className={cn('truncate text-[11px] leading-4 text-muted-foreground', classNames?.mediaCaption)}>\n {media.caption}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction getDefaultDetailDisplayValue(\n value: unknown,\n emptyValue: ReactNode,\n field?: WorkbenchDetailSidebarField,\n classNames?: WorkbenchDetailSidebarClassNames,\n): ReactNode {\n if (isEmptyDetailValue(value)) return emptyValue;\n if (isValidElement(value)) return value;\n if (shouldRenderAsMedia(field, value)) {\n const media = getMediaDisplayData(value);\n if (media) return <WorkbenchDetailSidebarMediaValue media={media} classNames={classNames} />;\n }\n if (Array.isArray(value)) {\n const parts: ReactNode[] = value\n .map((item) => getDefaultDetailDisplayValue(item, '', undefined, classNames))\n .filter((item) => !isEmptyDetailValue(item));\n\n if (!parts.length) return emptyValue;\n if (parts.every(isPlainDisplayValue)) return parts.map(String).join(' · ');\n\n return (\n <span className=\"inline-flex flex-wrap items-center gap-1\">\n {parts.map((part, index) => (\n <span key={index} className=\"inline-flex items-center gap-1\">\n {index > 0 ? <span className=\"text-muted-foreground\">·</span> : null}\n {isPlainDisplayValue(part) ? String(part) : part}\n </span>\n ))}\n </span>\n );\n }\n if (typeof value === 'object') {\n const displayValue = getObjectDisplayValue(value as Record<string, any>);\n return displayValue === undefined\n ? emptyValue\n : getDefaultDetailDisplayValue(displayValue, emptyValue, field, classNames);\n }\n return String(value);\n}\n\nfunction getDefaultFieldValue<Row>(\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n) {\n if (Object.prototype.hasOwnProperty.call(field, 'value')) {\n return typeof field.value === 'function'\n ? field.value(record, field)\n : field.value;\n }\n\n return record ? (record as any)?.[field.key] : undefined;\n}\n\nfunction shouldHideField<Row>(\n field: WorkbenchDetailSidebarField<Row>,\n record: Row | null | undefined,\n) {\n return typeof field.hidden === 'function'\n ? field.hidden(field, record)\n : Boolean(field.hidden);\n}\n\nfunction shouldHideSection<Row>(\n section: WorkbenchDetailSidebarSection<Row>,\n record: Row | null | undefined,\n) {\n return typeof section.hidden === 'function'\n ? section.hidden(section, record)\n : Boolean(section.hidden);\n}\n\nfunction WorkbenchDetailSidebarAutoContent<Row = any>({\n record,\n fields,\n sections,\n fieldColumns = 1,\n emptyValue = '—',\n emptyState,\n getFieldValue,\n renderFieldValue,\n formatFieldValue,\n formatFieldLabel,\n classNames,\n}: Pick<\n WorkbenchDetailSidebarProps<Row>,\n | 'record'\n | 'fields'\n | 'sections'\n | 'fieldColumns'\n | 'emptyValue'\n | 'emptyState'\n | 'getFieldValue'\n | 'renderFieldValue'\n | 'formatFieldValue'\n | 'formatFieldLabel'\n | 'classNames'\n>) {\n const resolvedSections = sections?.length\n ? sections\n : fields?.length\n ? [{ fields, columns: fieldColumns }]\n : [];\n const visibleSections = resolvedSections.filter((section) => !shouldHideSection(section, record));\n\n if (!visibleSections.length) {\n return emptyState ? (\n <div className={cn('rounded-lg border border-dashed border-border/60 px-3 py-6 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n {emptyState}\n </div>\n ) : null;\n }\n\n return (\n <div className={cn('space-y-3', classNames?.autoBody)}>\n {visibleSections.map((section, sectionIndex) => {\n const visibleFields = (section.fields || []).filter((field) => !shouldHideField(field, record));\n const sectionKey = section.id || `section-${sectionIndex}`;\n\n if (!visibleFields.length && !section.emptyState) return null;\n\n const items = visibleFields.map((field, fieldIndex) => {\n const context: WorkbenchDetailSidebarRenderContext<Row> = {\n field,\n fieldIndex,\n section,\n sectionIndex,\n record,\n };\n const rawValue = getFieldValue\n ? getFieldValue(field, record, context)\n : getDefaultFieldValue(field, record);\n const value = renderFieldValue\n ? renderFieldValue(field, record, context)\n : formatFieldValue\n ? formatFieldValue(rawValue, context)\n : getDefaultDetailDisplayValue(rawValue, field.emptyValue ?? emptyValue, field, classNames);\n const fieldLabel = formatFieldLabel\n ? formatFieldLabel(getFallbackFieldLabel(field), context)\n : getFallbackFieldLabel(field);\n\n return {\n term: renderDetailFieldLabel(fieldLabel, field, classNames),\n value,\n };\n });\n\n return (\n <section key={sectionKey} className={cn('min-w-0 space-y-3', classNames?.section)}>\n {section.title || section.description ? (\n <div className={cn('min-w-0 space-y-1.5', classNames?.sectionHeader)}>\n {section.title ? (\n <div className={cn('inline-flex max-w-full items-center gap-2 rounded-md border border-primary/20 bg-primary/5 px-2.5 py-1.5 text-xs font-medium text-primary dark:border-primary/25 dark:bg-primary/10', classNames?.sectionTitle)}>\n {section.title}\n </div>\n ) : null}\n {section.description ? (\n <div className={cn('text-[11px] leading-5 text-muted-foreground', classNames?.sectionDescription)}>\n {section.description}\n </div>\n ) : null}\n </div>\n ) : null}\n {items.length ? (\n <BaseDescriptionList\n items={items}\n columns={section.columns || fieldColumns}\n className={cn('gap-3', classNames?.descriptionList)}\n classNames={{\n item: cn('!border-0 !bg-transparent !p-0 !shadow-none !gap-1.5', classNames?.descriptionListItem),\n term: cn('!normal-case !tracking-normal !text-foreground', classNames?.descriptionListTerm),\n value: cn(\n 'min-h-10 rounded-md border border-border/55 bg-muted/25 px-3 py-2 text-xs leading-5 text-foreground shadow-[inset_0_1px_0_hsl(var(--background)/0.8)] dark:border-border/45 dark:bg-white/[0.035]',\n classNames?.fieldValue,\n classNames?.descriptionListValue,\n ),\n }}\n />\n ) : (\n <div className={cn('py-3 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n {section.emptyState}\n </div>\n )}\n </section>\n );\n })}\n </div>\n );\n}\n\nexport const WorkbenchDetailSidebar = forwardRef<HTMLElement, WorkbenchDetailSidebarProps>(\n function WorkbenchDetailSidebar(\n {\n as: Component = 'aside',\n bodyAs: BodyComponent = 'div',\n open,\n width,\n header,\n footer,\n resizeHandle,\n children,\n record,\n fields,\n sections,\n fieldColumns,\n emptyValue,\n emptyState,\n getFieldValue,\n renderFieldValue,\n formatFieldValue,\n formatFieldLabel,\n className,\n headerClassName,\n bodyClassName,\n footerClassName,\n resizeHandleClassName,\n bodyProps,\n classNames,\n style,\n ...props\n },\n ref,\n ) {\n const autoContent = hasRenderableChildren(children) ? children : (\n <WorkbenchDetailSidebarAutoContent\n record={record}\n fields={fields}\n sections={sections}\n fieldColumns={fieldColumns}\n emptyValue={emptyValue}\n emptyState={emptyState}\n getFieldValue={getFieldValue}\n renderFieldValue={renderFieldValue}\n formatFieldValue={formatFieldValue}\n formatFieldLabel={formatFieldLabel}\n classNames={classNames}\n />\n );\n const renderBodyWrapper = shouldRenderBodyWrapper({\n header,\n footer,\n bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n bodyClassName,\n bodyProps,\n classNames,\n });\n const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n return (\n <Component\n ref={ref}\n data-workbench-detail-sidebar\n data-open={open === undefined ? undefined : open ? 'true' : 'false'}\n className={cn(\n 'workbench-surface-subtle relative flex flex-shrink-0 flex-col self-stretch overflow-hidden rounded-lg border border-border/50 transition-all duration-300 dark:border-border/40',\n open === false && 'pointer-events-none',\n classNames?.root,\n className,\n )}\n style={{\n ...resolveWidthStyle(open, width),\n ...style,\n }}\n {...props}\n >\n {resizeHandle ? (\n <div className={cn(classNames?.resizeHandle, resizeHandleClassName)}>\n {resizeHandle}\n </div>\n ) : null}\n {header ? (\n <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n {header}\n </div>\n ) : null}\n {renderBodyWrapper ? (\n <BodyComponent\n className={cn('min-h-0 flex-1 overflow-y-auto', classNames?.body, bodyClassName, bodyPropsClassName)}\n {...restBodyProps}\n >\n {autoContent}\n </BodyComponent>\n ) : (\n autoContent\n )}\n {footer ? (\n <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n {footer}\n </div>\n ) : null}\n </Component>\n );\n },\n);\n","import {\n isValidElement,\n type ComponentType,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nexport type WorkbenchIconCandidate =\n | ReactNode\n | ComponentType<{ className?: string }>\n | null\n | undefined;\n\nfunction isWorkbenchIconComponent(\n icon: WorkbenchIconCandidate,\n): icon is ComponentType<{ className?: string }> {\n if (typeof icon === 'function') return true;\n return typeof icon === 'object' && icon !== null && !isValidElement(icon) && '$$typeof' in icon;\n}\n\nexport function renderWorkbenchIcon(icon: WorkbenchIconCandidate, className: string) {\n if (!icon) return null;\n if (isValidElement(icon)) return icon as ReactElement;\n if (isWorkbenchIconComponent(icon)) {\n const Icon = icon as ComponentType<{ className?: string }>;\n return <Icon className={className} />;\n }\n return icon;\n}\n\nexport function getWorkbenchIconComponent(icon: WorkbenchIconCandidate) {\n if (!icon || !isWorkbenchIconComponent(icon)) return null;\n return icon;\n}\n","import {\n type ComponentType,\n type CSSProperties,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n BaseTable,\n BaseTableBody,\n BaseTableCell,\n BaseTableContainer,\n BaseTableEmpty,\n BaseTableHead,\n BaseTableHeader,\n BaseTableRow,\n} from '../base/BaseTable';\nimport type {\n BaseAppearance,\n BaseTableColumnOrderChangeDetail,\n BaseTableColumnSizeChangeDetail,\n BaseTableColumnSizes,\n BaseTableSortDirection,\n} from '../base/types';\nimport { cn, hasRenderableNode } from '../base/utils';\nimport { renderWorkbenchIcon } from './workbenchIconUtils';\n\nexport interface WorkbenchTableViewColumn {\n key: string;\n label?: ReactNode;\n helperText?: ReactNode;\n renderType?: string;\n type?: string;\n description?: ReactNode;\n meta?: ReactNode;\n actions?: ReactNode;\n trailing?: ReactNode;\n wrap?: boolean;\n align?: 'left' | 'center' | 'right';\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n sortable?: boolean;\n sortDirection?: BaseTableSortDirection;\n sortLabel?: string;\n draggable?: boolean;\n dragLabel?: string;\n resizable?: boolean;\n resizeLabel?: string;\n compactHeaderClassName?: string;\n compactCellClassName?: string;\n headerClassName?: string;\n cellClassName?: string;\n [key: string]: any;\n}\n\nexport interface WorkbenchTableViewClassNames {\n root?: string;\n scrollArea?: string;\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string;\n cell?: string;\n footer?: string;\n helper?: string;\n}\n\nexport interface WorkbenchTableViewRenderContext<Row = any> {\n row: Row;\n rowIndex: number;\n column: WorkbenchTableViewColumn;\n columnIndex: number;\n compact: boolean;\n surface: 'list' | string;\n}\n\nexport interface WorkbenchTableViewHeaderContext<Row = any> {\n column: WorkbenchTableViewColumn;\n columnIndex: number;\n columns: WorkbenchTableViewColumn[];\n rows: Row[];\n columnType?: string;\n}\n\nexport interface WorkbenchTableViewProps<Row = any> {\n rows?: Row[];\n columns?: WorkbenchTableViewColumn[];\n onRowClick?: (row: Row, rowIndex: number) => void;\n selectedRowKey?: string;\n selectedLinkKey?: string;\n activePrimaryColumn?: WorkbenchTableViewColumn | null;\n activeTablePrimaryColumn?: WorkbenchTableViewColumn | null;\n renderedRowCount?: number;\n totalRowCount?: number;\n tableMinWidth?: number;\n minWidth?: number;\n bodyMaxHeight?: number | string;\n stickyFirstColumn?: boolean;\n appearance?: BaseAppearance;\n columnOrder?: string[];\n columnSizes?: BaseTableColumnSizes;\n columnDragEnabled?: boolean;\n columnResizeEnabled?: boolean;\n className?: string;\n tableClassName?: string;\n rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n classNames?: WorkbenchTableViewClassNames;\n style?: CSSProperties;\n renderCell?: (column: WorkbenchTableViewColumn, row: Row, context: WorkbenchTableViewRenderContext<Row>) => ReactNode;\n renderFieldValue?: (column: WorkbenchTableViewColumn, row: Row, context: WorkbenchTableViewRenderContext<Row>) => ReactNode;\n renderColumnHeader?: (column: WorkbenchTableViewColumn, context: WorkbenchTableViewHeaderContext<Row>) => ReactNode;\n onColumnOrderChange?: (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => void;\n onColumnSizeChange?: (columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => void;\n onSort?: (columnKey: string, column: WorkbenchTableViewColumn) => void;\n formatLabel?: (value: ReactNode, context?: { column?: WorkbenchTableViewColumn }) => ReactNode;\n getColumnDataType?: (columnKey: string, rows: Row[], column?: WorkbenchTableViewColumn) => string | undefined;\n getColumnIcon?: (\n columnType?: string,\n column?: WorkbenchTableViewColumn,\n ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n getColumnTypeIcon?: (\n columnType?: string,\n column?: WorkbenchTableViewColumn,\n ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n getRowKey?: (row: Row, rowIndex: number) => string | number;\n getRowSelectionKey?: (row: Row, rowIndex: number) => string | number | undefined;\n isActionColumn?: (column: WorkbenchTableViewColumn) => boolean;\n isActionField?: (column: WorkbenchTableViewColumn) => boolean;\n isRowDisabled?: (row: Row, rowIndex: number) => boolean;\n isWorkbenchPlaceholderRow?: (row: Row, rowIndex?: number) => boolean;\n emptyState?: ReactNode;\n hiddenRowsMessage?: ReactNode | ((hiddenRowCount: number, renderedRowCount: number, totalRowCount: number) => ReactNode);\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst DEFAULT_WORKBENCH_COLUMN_WIDTH = 160;\nconst DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH = 56;\nconst DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH = 128;\n\nfunction numericCssSize(value: number | string | undefined) {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n if (typeof value !== 'string') return undefined;\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)px$/i);\n return match ? Number(match[1]) : undefined;\n}\n\nfunction defaultWorkbenchColumnWidth(column: WorkbenchTableViewColumn, action: boolean) {\n if (column.renderType === 'icon') return DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH;\n if (action) return DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH;\n return DEFAULT_WORKBENCH_COLUMN_WIDTH;\n}\n\nfunction resolvedWorkbenchColumnWidth(\n column: WorkbenchTableViewColumn,\n controlledWidth: number | undefined,\n action: boolean,\n) {\n return controlledWidth\n ?? numericCssSize(column.width)\n ?? numericCssSize(column.minWidth)\n ?? defaultWorkbenchColumnWidth(column, action);\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n if (value === undefined || value === null || value === false) return null;\n return value;\n}\n\nfunction toTitle(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') return String(value);\n return undefined;\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n return row?.id ?? row?.key ?? row?.linkKey ?? rowIndex;\n}\n\nfunction defaultGetRowSelectionKey(row: any) {\n return row?.linkKey ?? row?.id ?? row?.key;\n}\n\nfunction getOrderedColumns(columns: WorkbenchTableViewColumn[], columnOrder?: string[]) {\n if (!columnOrder?.length) return columns;\n\n const columnMap = new Map(columns.map((column) => [column.key, column]));\n const orderedColumns = columnOrder\n .map((columnKey) => columnMap.get(columnKey))\n .filter(Boolean) as WorkbenchTableViewColumn[];\n const orderedKeySet = new Set(orderedColumns.map((column) => column.key));\n const remainingColumns = columns.filter((column) => !orderedKeySet.has(column.key));\n\n return [...orderedColumns, ...remainingColumns];\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n const validColumnKeys = new Set(columnKeys);\n const orderedKeys = (columnOrder || []).filter((columnKey) => validColumnKeys.has(columnKey));\n const orderedKeySet = new Set(orderedKeys);\n const remainingKeys = columnKeys.filter((columnKey) => !orderedKeySet.has(columnKey));\n\n return [...orderedKeys, ...remainingKeys];\n}\n\nfunction WorkbenchTableHeaderHelper({\n helperText,\n className,\n}: {\n helperText?: ReactNode;\n className?: string;\n}) {\n if (!hasRenderableNode(helperText)) return null;\n\n return (\n <span className={cn('group relative inline-flex items-center', className)}>\n <button\n type=\"button\"\n title={toTitle(helperText)}\n aria-label={toTitle(helperText) || 'Field help'}\n className=\"inline-flex h-4 w-4 items-center justify-center rounded-full border border-border/60 bg-background text-[10px] font-semibold normal-case tracking-normal text-muted-foreground shadow-sm transition-colors hover:border-primary/40 hover:text-primary focus-visible:border-primary/40 focus-visible:text-primary focus-visible:outline-none\"\n onClick={(event) => event.stopPropagation()}\n >\n ?\n </button>\n <span\n role=\"tooltip\"\n className=\"pointer-events-none absolute left-1/2 top-full z-40 mt-2 hidden w-72 -translate-x-1/2 whitespace-pre-line rounded-lg border border-border/60 bg-card px-3 py-2 text-[11px] font-normal normal-case leading-5 tracking-normal text-foreground shadow-sm backdrop-blur-sm group-hover:block group-focus-within:block\"\n >\n {helperText}\n </span>\n </span>\n );\n}\n\nexport function WorkbenchTableView<Row = any>({\n rows = [],\n columns = [],\n onRowClick,\n selectedRowKey,\n selectedLinkKey,\n activePrimaryColumn,\n activeTablePrimaryColumn,\n renderedRowCount,\n totalRowCount,\n tableMinWidth,\n minWidth,\n bodyMaxHeight = 'min(58vh, 38rem)',\n stickyFirstColumn = true,\n appearance,\n columnOrder,\n columnSizes,\n columnDragEnabled,\n columnResizeEnabled,\n className,\n tableClassName,\n rowClassName,\n classNames,\n style,\n renderCell,\n renderFieldValue,\n renderColumnHeader,\n onColumnOrderChange,\n onColumnSizeChange,\n onSort,\n formatLabel = defaultFormatLabel,\n getColumnDataType,\n getColumnIcon,\n getColumnTypeIcon,\n getRowKey = defaultGetRowKey,\n getRowSelectionKey = defaultGetRowSelectionKey,\n isActionColumn,\n isActionField,\n isRowDisabled,\n isWorkbenchPlaceholderRow,\n emptyState = '-',\n hiddenRowsMessage,\n}: WorkbenchTableViewProps<Row>) {\n const columnKeySignature = columns.map((column) => column.key).join('\\u0001');\n const defaultColumnOrder = useMemo(() => (\n columnKeySignature ? columnKeySignature.split('\\u0001') : []\n ), [columnKeySignature]);\n const [internalColumnOrder, setInternalColumnOrder] = useState(defaultColumnOrder);\n const [internalColumnSizes, setInternalColumnSizes] = useState<BaseTableColumnSizes>({});\n\n useEffect(() => {\n setInternalColumnOrder((current) => normalizeColumnOrder(defaultColumnOrder, current));\n }, [defaultColumnOrder]);\n\n const resolvedColumnOrder = columnOrder\n ? normalizeColumnOrder(defaultColumnOrder, columnOrder)\n : internalColumnOrder;\n const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n const handleColumnOrderChange = useCallback((nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n const normalizedOrder = normalizeColumnOrder(defaultColumnOrder, nextOrder);\n if (!columnOrder) {\n setInternalColumnOrder(normalizedOrder);\n }\n onColumnOrderChange?.(normalizedOrder, detail);\n }, [columnOrder, defaultColumnOrder, onColumnOrderChange]);\n const handleColumnSizeChange = useCallback((columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => {\n if (!columnSizes) {\n setInternalColumnSizes((current) => ({\n ...current,\n [columnId]: width,\n }));\n }\n onColumnSizeChange?.(columnId, width, detail);\n }, [columnSizes, onColumnSizeChange]);\n const resolvedSelectedKey = selectedRowKey ?? selectedLinkKey;\n const resolvedActivePrimaryColumn = activePrimaryColumn ?? activeTablePrimaryColumn;\n const orderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n const hiddenRowCount = Math.max(0, Number(totalRowCount || rows.length) - Number(renderedRowCount || rows.length));\n const renderValue = renderCell ?? renderFieldValue ?? ((column: WorkbenchTableViewColumn, row: Row) => (row as any)?.[column.key]);\n const isAction = isActionColumn ?? isActionField ?? (() => false);\n const isDisabled = isRowDisabled ?? isWorkbenchPlaceholderRow ?? (() => false);\n const resolveColumnIcon = getColumnIcon ?? getColumnTypeIcon;\n const resolvedMinWidth = tableMinWidth ?? minWidth ?? Math.max(\n 760,\n orderedColumns.reduce(\n (total, column) => total + resolvedWorkbenchColumnWidth(\n column,\n resolvedColumnSizes[column.key],\n isAction(column),\n ),\n 0,\n ),\n );\n\n const footer = hiddenRowCount > 0 && hiddenRowsMessage\n ? (typeof hiddenRowsMessage === 'function'\n ? hiddenRowsMessage(hiddenRowCount, renderedRowCount || rows.length, totalRowCount || rows.length)\n : hiddenRowsMessage)\n : null;\n\n return (\n <BaseTableContainer\n appearance={appearance}\n className={cn('w-full overflow-hidden rounded-lg border border-border/40 bg-muted/15 dark:border-border/35 dark:bg-muted/10', classNames?.root, className)}\n style={style}\n >\n <div\n className={cn('w-full overflow-auto', classNames?.scrollArea)}\n style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n >\n <BaseTable\n appearance={appearance}\n columnOrder={resolvedColumnOrder}\n columnSizes={resolvedColumnSizes}\n columnDragEnabled={columnDragEnabled}\n columnResizeEnabled={columnResizeEnabled}\n onColumnOrderChange={handleColumnOrderChange}\n onColumnSizeChange={handleColumnSizeChange}\n className={cn('w-full table-auto text-left text-xs', classNames?.table, tableClassName)}\n style={{ minWidth: resolvedMinWidth }}\n >\n <BaseTableHeader appearance={appearance} className={cn('text-[10px] font-mono uppercase tracking-wide text-muted-foreground', classNames?.header)}>\n <BaseTableRow className={cn('hover:bg-transparent', classNames?.headerRow)}>\n {orderedColumns.map((column, columnIndex) => {\n const defaultColumnWidth = defaultWorkbenchColumnWidth(column, isAction(column));\n const columnType = column.renderType || column.type || getColumnDataType?.(column.key, rows, column);\n const columnIcon = renderWorkbenchIcon(\n resolveColumnIcon?.(columnType, column),\n 'h-3.5 w-3.5 shrink-0 text-primary',\n );\n const previousColumn = orderedColumns[columnIndex - 1];\n const followsRecordIcon = previousColumn?.renderType === 'icon' && column.key === resolvedActivePrimaryColumn?.key;\n const headerContent = renderColumnHeader\n ? renderColumnHeader(column, { column, columnIndex, columns: orderedColumns, rows, columnType })\n : formatLabel(column.label, { column });\n const headerTrailing = !renderColumnHeader && (hasRenderableNode(column.trailing) || hasRenderableNode(column.helperText))\n ? (\n <span className=\"inline-flex items-center gap-1.5\">\n {hasRenderableNode(column.trailing) ? formatLabel(column.trailing, { column }) : null}\n <WorkbenchTableHeaderHelper helperText={formatLabel(column.helperText, { column })} className={classNames?.helper} />\n </span>\n )\n : undefined;\n const sortable = Boolean(column.sortable);\n const handleSort = sortable && onSort\n ? () => onSort(column.key, column)\n : undefined;\n\n return (\n <BaseTableHead\n appearance={appearance}\n key={column.key}\n columnId={column.key}\n align={column.align}\n icon={renderColumnHeader ? undefined : columnIcon}\n label={headerContent}\n description={renderColumnHeader ? undefined : formatLabel(column.description, { column })}\n meta={renderColumnHeader ? undefined : formatLabel(column.meta, { column })}\n actions={renderColumnHeader ? undefined : column.actions}\n trailing={headerTrailing}\n sortable={sortable}\n sortDirection={column.sortDirection}\n sortLabel={column.sortLabel}\n onSort={handleSort}\n draggable={column.draggable}\n dragLabel={column.dragLabel}\n resizable={column.resizable}\n resizeLabel={column.resizeLabel}\n width={column.width ?? defaultColumnWidth}\n minWidth={typeof column.minWidth === 'number' ? column.minWidth : undefined}\n maxWidth={typeof column.maxWidth === 'number' ? column.maxWidth : undefined}\n className={cn(\n 'sticky top-0 z-20 h-auto whitespace-nowrap bg-card/95 px-4 py-3 font-medium backdrop-blur-sm supports-[backdrop-filter]:bg-card/90',\n stickyFirstColumn && columnIndex === 0 && 'left-0 z-30 shadow-[1px_0_0_0_hsl(var(--border)/0.35)]',\n column.compactHeaderClassName,\n column.headerClassName,\n column.renderType === 'icon' && 'pl-3 pr-1',\n followsRecordIcon && 'pl-2',\n classNames?.headerCell,\n )}\n style={{\n minWidth: typeof column.minWidth === 'string' ? column.minWidth : undefined,\n maxWidth: typeof column.maxWidth === 'string' ? column.maxWidth : undefined,\n }}\n />\n );\n })}\n </BaseTableRow>\n </BaseTableHeader>\n <BaseTableBody appearance={appearance} className={cn('divide-y divide-border/35 dark:divide-border/30', classNames?.body)}>\n {rows.length ? rows.map((row, rowIndex) => {\n const key = getRowKey(row, rowIndex);\n const disabled = isDisabled(row, rowIndex);\n const selectionKey = getRowSelectionKey(row, rowIndex);\n const selected = Boolean(resolvedSelectedKey && String(selectionKey) === String(resolvedSelectedKey));\n const resolvedRowClassName = typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName;\n\n return (\n <BaseTableRow\n appearance={appearance}\n key={key}\n interactive={Boolean(onRowClick) && !disabled}\n selected={selected}\n disabled={disabled}\n onClick={() => {\n if (!disabled) {\n onRowClick?.(row, rowIndex);\n }\n }}\n className={cn(\n onRowClick && !disabled ? 'cursor-pointer' : 'cursor-default',\n selected ? 'bg-primary/10 hover:bg-primary/15' : disabled ? '' : 'hover:bg-muted/25 dark:hover:bg-muted/15',\n classNames?.row,\n resolvedRowClassName,\n )}\n >\n {orderedColumns.map((column, columnIndex) => {\n const shouldWrap = isAction(column) || column.wrap === true;\n const previousColumn = orderedColumns[columnIndex - 1];\n const followsRecordIcon = previousColumn?.renderType === 'icon' && column.key === resolvedActivePrimaryColumn?.key;\n\n return (\n <BaseTableCell\n appearance={appearance}\n key={`${key}-${column.key}`}\n align={column.align}\n className={cn(\n shouldWrap ? 'align-top whitespace-normal' : 'whitespace-nowrap',\n 'px-4 py-3 text-muted-foreground',\n !shouldWrap && 'overflow-hidden text-ellipsis',\n stickyFirstColumn && columnIndex === 0 && 'sticky left-0 z-10 bg-card/95 text-foreground shadow-[1px_0_0_0_hsl(var(--border)/0.3)]',\n column.compactCellClassName,\n column.cellClassName,\n column.renderType === 'icon' && 'pl-3 pr-1',\n followsRecordIcon && 'pl-2',\n classNames?.cell,\n )}\n >\n {renderValue(column, row, {\n row,\n rowIndex,\n column,\n columnIndex,\n compact: true,\n surface: 'list',\n })}\n </BaseTableCell>\n );\n })}\n </BaseTableRow>\n );\n }) : (\n <BaseTableEmpty\n appearance={appearance}\n colSpan={Math.max(orderedColumns.length, 1)}\n classNames={{ cell: 'px-4 py-10 text-center text-sm text-muted-foreground' }}\n >\n {emptyState}\n </BaseTableEmpty>\n )}\n </BaseTableBody>\n </BaseTable>\n </div>\n {footer ? (\n <div className={cn('border-t border-border/40 px-4 py-2 text-[11px] text-muted-foreground dark:border-border/30', classNames?.footer)}>\n {footer}\n </div>\n ) : null}\n </BaseTableContainer>\n );\n}\n","import {\n type CSSProperties,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport {\n BaseContextMenu,\n BaseContextMenuContent,\n BaseContextMenuItem,\n BaseContextMenuLabel,\n BaseContextMenuSeparator,\n BaseContextMenuTrigger,\n} from '../base/BaseContextMenu';\nimport {\n BaseTable,\n BaseTableBody,\n BaseTableCell,\n BaseTableContainer,\n BaseTableEmpty,\n BaseTableHead,\n BaseTableHeader,\n BaseTableRow,\n} from '../base/BaseTable';\nimport type {\n BaseAppearance,\n BaseTableColumnOrderChangeDetail,\n BaseTableColumnSizeChangeDetail,\n BaseTableColumnSizes,\n BaseTableSortDirection,\n} from '../base/types';\nimport { cn, hasRenderableNode } from '../base/utils';\n\nexport interface InteractiveTableColumn {\n key: string;\n label?: ReactNode;\n description?: ReactNode;\n align?: 'left' | 'center' | 'right';\n width?: number | string;\n minWidth?: number;\n maxWidth?: number;\n sortable?: boolean;\n sortDirection?: BaseTableSortDirection;\n sortLabel?: string;\n draggable?: boolean;\n resizable?: boolean;\n className?: string;\n headerClassName?: string;\n cellClassName?: string;\n wrap?: boolean;\n [key: string]: any;\n}\n\nexport interface InteractiveTableClassNames {\n root?: string;\n header?: string;\n headerLeading?: string;\n headerTitle?: string;\n headerDescription?: string;\n headerActions?: string;\n scrollArea?: string;\n table?: string;\n tableHeader?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string;\n pinnedTopRow?: string;\n cell?: string;\n empty?: string;\n}\n\nexport interface InteractiveTableRenderContext<Row = any> {\n row: Row;\n rowIndex: number;\n column: InteractiveTableColumn;\n columnIndex: number;\n isPinnedTopRow: boolean;\n}\n\nexport interface InteractiveTableHeaderContext<Row = any> {\n column: InteractiveTableColumn;\n columnIndex: number;\n columns: InteractiveTableColumn[];\n rows: Row[];\n}\n\nexport interface InteractiveTableRowState {\n disabled?: boolean;\n pending?: boolean;\n saving?: boolean;\n selected?: boolean;\n}\n\nexport interface InteractiveTableHeaderProps {\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n resetColumnSizesLabel?: ReactNode;\n}\n\nexport interface InteractiveTableColumnMenuLabels {\n columnActions?: ReactNode;\n freezeColumn?: ReactNode;\n freezeEndColumn?: ReactNode;\n unfreezeColumn?: ReactNode;\n unfreezeEndColumn?: ReactNode;\n unfreezeAllColumns?: ReactNode;\n resetColumnWidth?: ReactNode;\n frozenColumnTitle?: string;\n}\n\nexport interface InteractiveTableProps<Row = any, PinnedTopRow = Row> {\n rows?: Row[];\n columns?: InteractiveTableColumn[];\n pinnedTopRows?: PinnedTopRow[];\n getRowKey?: (row: Row, rowIndex: number) => string | number;\n getPinnedTopRowKey?: (row: PinnedTopRow, rowIndex: number) => string | number;\n renderCell?: (column: InteractiveTableColumn, row: Row, context: InteractiveTableRenderContext<Row>) => ReactNode;\n renderPinnedTopCell?: (\n column: InteractiveTableColumn,\n row: PinnedTopRow,\n context: InteractiveTableRenderContext<PinnedTopRow>,\n ) => ReactNode;\n renderColumnHeader?: (column: InteractiveTableColumn, context: InteractiveTableHeaderContext<Row>) => ReactNode;\n onRowClick?: (row: Row, rowIndex: number) => void;\n getRowState?: (row: Row, rowIndex: number) => InteractiveTableRowState | undefined;\n rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n pinnedTopRowClassName?: string | ((row: PinnedTopRow, rowIndex: number) => string | undefined);\n emptyState?: ReactNode;\n header?: InteractiveTableHeaderProps;\n showResetColumnSizes?: boolean;\n columnMenuLabels?: InteractiveTableColumnMenuLabels;\n columnStorageKey?: string;\n columnOrder?: string[];\n columnSizes?: BaseTableColumnSizes;\n defaultColumnSizes?: BaseTableColumnSizes;\n columnDragEnabled?: boolean;\n columnResizeEnabled?: boolean;\n frozenColumnCount?: number;\n frozenEndColumnCount?: number;\n tableMinWidth?: number;\n bodyMaxHeight?: number | string;\n appearance?: BaseAppearance;\n className?: string;\n tableClassName?: string;\n classNames?: InteractiveTableClassNames;\n style?: CSSProperties;\n onColumnOrderChange?: (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => void;\n onColumnSizeChange?: (columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => void;\n onResetColumnSizes?: (nextSizes: BaseTableColumnSizes) => void;\n onFrozenColumnCountChange?: (nextCount: number) => void;\n onFrozenEndColumnCountChange?: (nextCount: number) => void;\n onSort?: (columnKey: string, column: InteractiveTableColumn) => void;\n}\n\nexport interface InteractiveTableEditableTextCellProps {\n value?: string | null;\n placeholder?: string;\n disabled?: boolean;\n multiline?: boolean;\n commitOnBlur?: boolean;\n className?: string;\n inputClassName?: string;\n onCommit?: (value: string) => void | Promise<void>;\n}\n\nexport interface InteractiveTableReadonlyCellProps {\n children?: ReactNode;\n mono?: boolean;\n className?: string;\n}\n\nexport interface InteractiveTableSelectOption<T extends string = string> {\n value: T;\n label: string;\n}\n\nexport interface InteractiveTableSelectCellProps<T extends string = string> {\n value: T;\n options: Array<InteractiveTableSelectOption<T>>;\n disabled?: boolean;\n ariaLabel: string;\n children: ReactNode;\n className?: string;\n onChange?: (nextValue: T) => void;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n return row?.id ?? row?.key ?? rowIndex;\n}\n\nfunction getColumnDefaultSize(column: InteractiveTableColumn) {\n if (typeof column.width === 'number') return column.width;\n if (typeof column.minWidth === 'number') return column.minWidth;\n return 160;\n}\n\nfunction buildDefaultColumnSizes(columns: InteractiveTableColumn[], explicit?: BaseTableColumnSizes) {\n return columns.reduce<BaseTableColumnSizes>((acc, column) => {\n acc[column.key] = explicit?.[column.key] ?? getColumnDefaultSize(column);\n return acc;\n }, {});\n}\n\nfunction loadStoredColumnSizes(storageKey: string | undefined, defaults: BaseTableColumnSizes) {\n if (!storageKey || !isBrowser()) return defaults;\n\n try {\n const parsed = JSON.parse(window.localStorage.getItem(storageKey) || '{}');\n return Object.keys(defaults).reduce<BaseTableColumnSizes>((acc, key) => {\n const value = Number(parsed?.[key]);\n acc[key] = Number.isFinite(value) ? value : defaults[key];\n return acc;\n }, {});\n } catch {\n return defaults;\n }\n}\n\nfunction persistColumnSizes(storageKey: string | undefined, sizes: BaseTableColumnSizes) {\n if (!storageKey || !isBrowser()) return;\n window.localStorage.setItem(storageKey, JSON.stringify(sizes));\n}\n\nfunction getFrozenColumnStorageKey(storageKey: string | undefined) {\n return storageKey ? `${storageKey}.frozenColumnCount` : undefined;\n}\n\nfunction getFrozenEndColumnStorageKey(storageKey: string | undefined) {\n return storageKey ? `${storageKey}.frozenEndColumnCount` : undefined;\n}\n\nfunction clampFrozenColumnCount(count: number, columnCount: number) {\n if (!Number.isFinite(count)) return 0;\n return Math.max(0, Math.min(Math.round(count), columnCount));\n}\n\nfunction normalizeFrozenColumnCounts(startCount: number, endCount: number, columnCount: number) {\n const normalizedStartCount = clampFrozenColumnCount(startCount, columnCount);\n const normalizedEndCount = clampFrozenColumnCount(endCount, Math.max(0, columnCount - normalizedStartCount));\n return {\n startCount: normalizedStartCount,\n endCount: normalizedEndCount,\n };\n}\n\nfunction loadStoredFrozenColumnCount(\n storageKey: string | undefined,\n defaultCount: number,\n columnCount: number,\n) {\n const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return fallback;\n\n try {\n const storedValue = window.localStorage.getItem(frozenStorageKey);\n if (storedValue === null) return fallback;\n const value = Number(storedValue);\n return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction persistFrozenColumnCount(storageKey: string | undefined, count: number) {\n const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return;\n window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction loadStoredFrozenEndColumnCount(\n storageKey: string | undefined,\n defaultCount: number,\n columnCount: number,\n) {\n const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return fallback;\n\n try {\n const storedValue = window.localStorage.getItem(frozenStorageKey);\n if (storedValue === null) return fallback;\n const value = Number(storedValue);\n return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction persistFrozenEndColumnCount(storageKey: string | undefined, count: number) {\n const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n if (!frozenStorageKey || !isBrowser()) return;\n window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n const validColumnKeys = new Set(columnKeys);\n const orderedKeys = (columnOrder || []).filter((columnKey) => validColumnKeys.has(columnKey));\n const orderedKeySet = new Set(orderedKeys);\n const remainingKeys = columnKeys.filter((columnKey) => !orderedKeySet.has(columnKey));\n return [...orderedKeys, ...remainingKeys];\n}\n\nfunction getOrderedColumns(columns: InteractiveTableColumn[], columnOrder?: string[]) {\n const normalizedOrder = normalizeColumnOrder(columns.map((column) => column.key), columnOrder);\n const columnMap = new Map(columns.map((column) => [column.key, column]));\n return normalizedOrder.map((columnKey) => columnMap.get(columnKey)).filter(Boolean) as InteractiveTableColumn[];\n}\n\nfunction getColumnNumericWidth(column: InteractiveTableColumn, columnSizes: BaseTableColumnSizes) {\n const controlledWidth = columnSizes[column.key];\n if (typeof controlledWidth === 'number') return controlledWidth;\n return getColumnDefaultSize(column);\n}\n\nfunction buildFrozenOffsets(\n columns: InteractiveTableColumn[],\n columnSizes: BaseTableColumnSizes,\n frozenColumnCount: number,\n) {\n const offsets = new Map<string, number>();\n let left = 0;\n columns.slice(0, Math.max(0, frozenColumnCount)).forEach((column) => {\n offsets.set(column.key, left);\n left += getColumnNumericWidth(column, columnSizes);\n });\n return offsets;\n}\n\nfunction buildFrozenEndOffsets(\n columns: InteractiveTableColumn[],\n columnSizes: BaseTableColumnSizes,\n frozenEndColumnCount: number,\n) {\n const offsets = new Map<string, number>();\n let right = 0;\n columns.slice(Math.max(0, columns.length - frozenEndColumnCount)).reverse().forEach((column) => {\n offsets.set(column.key, right);\n right += getColumnNumericWidth(column, columnSizes);\n });\n return offsets;\n}\n\nfunction resolveRowClassName<Row>(\n rowClassName: string | ((row: Row, rowIndex: number) => string | undefined) | undefined,\n row: Row,\n rowIndex: number,\n) {\n return typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName;\n}\n\nfunction renderDefaultCell<Row>(column: InteractiveTableColumn, row: Row) {\n const value = (row as any)?.[column.key];\n if (value === undefined || value === null || value === '') return '—';\n return String(value);\n}\n\nfunction InteractiveTableCellContent({\n children,\n wrap,\n}: {\n children: ReactNode;\n wrap?: boolean;\n}) {\n return (\n <div\n className={cn(\n 'min-w-0 max-w-full overflow-auto overscroll-contain [scrollbar-width:thin]',\n wrap ? 'max-h-20 whitespace-pre-wrap break-words leading-5' : 'whitespace-nowrap',\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction PinIcon({ className }: { className?: string }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 16 16\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.75\"\n >\n <path d=\"M5.25 2.75h5.5\" />\n <path d=\"M6.25 2.75v4L4.5 9.25h7L9.75 6.75v-4\" />\n <path d=\"M8 9.25v4\" />\n </svg>\n );\n}\n\nexport function InteractiveTable<Row = any, PinnedTopRow = Row>({\n rows = [],\n columns = [],\n pinnedTopRows = [],\n getRowKey = defaultGetRowKey,\n getPinnedTopRowKey = defaultGetRowKey,\n renderCell,\n renderPinnedTopCell,\n renderColumnHeader,\n onRowClick,\n getRowState,\n rowClassName,\n pinnedTopRowClassName,\n emptyState = '—',\n columnMenuLabels,\n columnStorageKey,\n columnOrder,\n columnSizes,\n defaultColumnSizes,\n columnDragEnabled = false,\n columnResizeEnabled = true,\n frozenColumnCount = 0,\n frozenEndColumnCount = 0,\n tableMinWidth,\n bodyMaxHeight = 'min(60vh, 42rem)',\n appearance,\n className,\n tableClassName,\n classNames,\n style,\n onColumnOrderChange,\n onColumnSizeChange,\n onResetColumnSizes,\n onFrozenColumnCountChange,\n onFrozenEndColumnCountChange,\n onSort,\n}: InteractiveTableProps<Row, PinnedTopRow>) {\n const internalLabels = useMonkeysLocaleMessages().workbench.interactiveTable;\n const columnKeySignature = columns.map((column) => column.key).join('\\u0001');\n const defaultOrder = useMemo(\n () => (columnKeySignature ? columnKeySignature.split('\\u0001') : []),\n [columnKeySignature],\n );\n const defaultSizes = useMemo(\n () => buildDefaultColumnSizes(columns, defaultColumnSizes),\n [columns, defaultColumnSizes],\n );\n const [internalColumnOrder, setInternalColumnOrder] = useState(defaultOrder);\n const [internalColumnSizes, setInternalColumnSizes] = useState<BaseTableColumnSizes>(() => (\n loadStoredColumnSizes(columnStorageKey, defaultSizes)\n ));\n const [internalFrozenColumnCount, setInternalFrozenColumnCount] = useState(() => (\n loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length)\n ));\n const [internalFrozenEndColumnCount, setInternalFrozenEndColumnCount] = useState(() => (\n loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length)\n ));\n\n useEffect(() => {\n setInternalColumnOrder((current) => normalizeColumnOrder(defaultOrder, current));\n }, [defaultOrder]);\n\n useEffect(() => {\n if (columnSizes) return;\n setInternalColumnSizes(loadStoredColumnSizes(columnStorageKey, defaultSizes));\n }, [columnSizes, columnStorageKey, defaultSizes]);\n\n useEffect(() => {\n setInternalFrozenColumnCount(loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length));\n }, [columnStorageKey, columns.length, frozenColumnCount]);\n\n useEffect(() => {\n setInternalFrozenEndColumnCount(loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length));\n }, [columnStorageKey, columns.length, frozenEndColumnCount]);\n\n const resolvedColumnOrder = columnOrder\n ? normalizeColumnOrder(defaultOrder, columnOrder)\n : internalColumnOrder;\n const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n const orderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n const {\n startCount: resolvedFrozenColumnCount,\n endCount: resolvedFrozenEndColumnCount,\n } = normalizeFrozenColumnCounts(internalFrozenColumnCount, internalFrozenEndColumnCount, orderedColumns.length);\n const frozenOffsets = buildFrozenOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenColumnCount);\n const frozenEndOffsets = buildFrozenEndOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenEndColumnCount);\n const resolvedMinWidth = tableMinWidth ?? Math.max(760, orderedColumns.reduce((total, column) => total + getColumnNumericWidth(column, resolvedColumnSizes), 0));\n const labels = {\n columnActions: columnMenuLabels?.columnActions ?? internalLabels.columnActions,\n freezeColumn: columnMenuLabels?.freezeColumn ?? internalLabels.freezeColumn,\n freezeEndColumn: columnMenuLabels?.freezeEndColumn ?? internalLabels.freezeEndColumn,\n unfreezeColumn: columnMenuLabels?.unfreezeColumn ?? internalLabels.unfreezeColumn,\n unfreezeEndColumn:\n columnMenuLabels?.unfreezeEndColumn ?? internalLabels.unfreezeEndColumn,\n unfreezeAllColumns:\n columnMenuLabels?.unfreezeAllColumns ?? internalLabels.unfreezeAllColumns,\n resetColumnWidth:\n columnMenuLabels?.resetColumnWidth ?? internalLabels.resetColumnWidth,\n frozenColumnTitle:\n columnMenuLabels?.frozenColumnTitle ?? internalLabels.frozenColumnTitle,\n };\n\n const handleColumnOrderChange = useCallback((nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n const normalizedOrder = normalizeColumnOrder(defaultOrder, nextOrder);\n if (!columnOrder) {\n setInternalColumnOrder(normalizedOrder);\n }\n onColumnOrderChange?.(normalizedOrder, detail);\n }, [columnOrder, defaultOrder, onColumnOrderChange]);\n\n const handleColumnSizeChange = useCallback((columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => {\n const column = columns.find((item) => item.key === columnId);\n const minWidth = column?.minWidth;\n const maxWidth = column?.maxWidth;\n const nextWidth = Math.max(\n typeof minWidth === 'number' ? minWidth : 0,\n Math.min(width, typeof maxWidth === 'number' ? maxWidth : Number.POSITIVE_INFINITY),\n );\n const nextSizes = {\n ...resolvedColumnSizes,\n [columnId]: nextWidth,\n };\n if (!columnSizes) {\n setInternalColumnSizes(nextSizes);\n }\n persistColumnSizes(columnStorageKey, nextSizes);\n onColumnSizeChange?.(columnId, nextWidth, detail);\n }, [columnSizes, columnStorageKey, columns, onColumnSizeChange, resolvedColumnSizes]);\n\n const handleResetColumnSize = useCallback((column: InteractiveTableColumn) => {\n const nextWidth = defaultSizes[column.key] ?? getColumnDefaultSize(column);\n const previousWidth = getColumnNumericWidth(column, resolvedColumnSizes);\n const nextSizes = {\n ...resolvedColumnSizes,\n [column.key]: nextWidth,\n };\n if (!columnSizes) {\n setInternalColumnSizes(nextSizes);\n }\n persistColumnSizes(columnStorageKey, nextSizes);\n onColumnSizeChange?.(column.key, nextWidth, {\n columnId: column.key,\n previousWidth,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n });\n onResetColumnSizes?.(nextSizes);\n }, [columnSizes, columnStorageKey, defaultSizes, onColumnSizeChange, onResetColumnSizes, resolvedColumnSizes]);\n\n const setFrozenColumnCount = useCallback((nextCount: number) => {\n const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenEndColumnCount));\n setInternalFrozenColumnCount(normalizedCount);\n persistFrozenColumnCount(columnStorageKey, normalizedCount);\n onFrozenColumnCountChange?.(normalizedCount);\n }, [columnStorageKey, onFrozenColumnCountChange, orderedColumns.length, resolvedFrozenEndColumnCount]);\n\n const setFrozenEndColumnCount = useCallback((nextCount: number) => {\n const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenColumnCount));\n setInternalFrozenEndColumnCount(normalizedCount);\n persistFrozenEndColumnCount(columnStorageKey, normalizedCount);\n onFrozenEndColumnCountChange?.(normalizedCount);\n }, [columnStorageKey, onFrozenEndColumnCountChange, orderedColumns.length, resolvedFrozenColumnCount]);\n\n const getFrozenPosition = (columnIndex: number) => {\n if (columnIndex < resolvedFrozenColumnCount) return 'start';\n if (columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount) return 'end';\n return undefined;\n };\n\n const getFrozenClassName = (column: InteractiveTableColumn, columnIndex: number, isHeader = false) => {\n const position = getFrozenPosition(columnIndex);\n if (!position) return undefined;\n return cn(\n 'sticky',\n position === 'start' ? 'shadow-[1px_0_0_0_hsl(var(--border)/0.45)]' : 'shadow-[-1px_0_0_0_hsl(var(--border)/0.45)]',\n isHeader ? 'bg-muted/60' : 'bg-inherit',\n isHeader ? 'z-40' : 'z-20',\n (columnIndex === 0 || columnIndex === orderedColumns.length - 1) && (isHeader ? 'z-50' : 'z-30'),\n );\n };\n\n const getFrozenStyle = (column: InteractiveTableColumn, columnIndex: number): CSSProperties | undefined => {\n const position = getFrozenPosition(columnIndex);\n if (position === 'start') return { left: frozenOffsets.get(column.key) ?? 0 };\n if (position === 'end') return { right: frozenEndOffsets.get(column.key) ?? 0 };\n return undefined;\n };\n\n return (\n <BaseTableContainer\n appearance={appearance}\n className={cn('flex h-full min-h-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-card', classNames?.root, className)}\n style={style}\n >\n <div\n className={cn('min-h-0 flex-1 overflow-auto', classNames?.scrollArea)}\n style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n >\n <BaseTable\n appearance={appearance}\n columnOrder={resolvedColumnOrder}\n columnSizes={resolvedColumnSizes}\n columnDragEnabled={columnDragEnabled}\n columnResizeEnabled={columnResizeEnabled}\n onColumnOrderChange={handleColumnOrderChange}\n onColumnSizeChange={handleColumnSizeChange}\n className={cn('w-full table-fixed text-left text-xs', classNames?.table, tableClassName)}\n style={{ minWidth: resolvedMinWidth }}\n >\n <colgroup>\n {orderedColumns.map((column) => (\n <col\n key={column.key}\n style={{\n width: toCssSize(resolvedColumnSizes[column.key] ?? column.width),\n minWidth: toCssSize(column.minWidth),\n }}\n />\n ))}\n </colgroup>\n <BaseTableHeader appearance={appearance} className={cn('border-b border-border/60 bg-muted/60 text-[11px] font-medium text-muted-foreground', classNames?.tableHeader)}>\n <BaseTableRow appearance={appearance} className={cn('hover:bg-transparent', classNames?.headerRow)}>\n {orderedColumns.map((column, columnIndex) => {\n const headerContent = renderColumnHeader\n ? renderColumnHeader(column, { column, columnIndex, columns: orderedColumns, rows })\n : column.label;\n const sortable = Boolean(column.sortable);\n const handleSort = sortable && onSort\n ? () => onSort(column.key, column)\n : undefined;\n const isFrozenStart = columnIndex < resolvedFrozenColumnCount;\n const isFrozenEnd = columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount;\n const isFrozen = isFrozenStart || isFrozenEnd;\n const isColumnAtDefaultWidth = getColumnNumericWidth(column, resolvedColumnSizes) === (defaultSizes[column.key] ?? getColumnDefaultSize(column));\n\n return (\n <BaseContextMenu key={column.key} modal={false}>\n <BaseContextMenuTrigger asChild appearance={appearance}>\n <BaseTableHead\n appearance={appearance}\n columnId={column.key}\n align={column.align}\n label={headerContent}\n description={column.description}\n trailing={isFrozen ? (\n <span title={labels.frozenColumnTitle} className=\"inline-flex h-5 w-5 items-center justify-center rounded text-primary\">\n <PinIcon className=\"h-3.5 w-3.5\" />\n </span>\n ) : null}\n sortable={sortable}\n sortDirection={column.sortDirection}\n sortLabel={column.sortLabel}\n onSort={handleSort}\n draggable={column.draggable}\n resizable={column.resizable}\n width={column.width}\n minWidth={column.minWidth}\n maxWidth={column.maxWidth}\n className={cn(\n 'sticky top-0 h-9 whitespace-nowrap border-r border-border/50 bg-muted/60 px-2.5 py-2 backdrop-blur',\n getFrozenClassName(column, columnIndex, true),\n column.headerClassName,\n column.className,\n classNames?.headerCell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n />\n </BaseContextMenuTrigger>\n <BaseContextMenuContent appearance={appearance} alignOffset={-4} className=\"min-w-44\">\n <BaseContextMenuLabel appearance={appearance}>\n {labels.columnActions}\n </BaseContextMenuLabel>\n {isFrozen ? (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => {\n if (isFrozenEnd) setFrozenEndColumnCount(orderedColumns.length - columnIndex - 1);\n else setFrozenColumnCount(columnIndex);\n }}\n >\n {isFrozenEnd ? labels.unfreezeEndColumn : labels.unfreezeColumn}\n </BaseContextMenuItem>\n ) : (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => setFrozenColumnCount(columnIndex + 1)}\n >\n {labels.freezeColumn}\n </BaseContextMenuItem>\n )}\n {!isFrozen ? (\n <BaseContextMenuItem\n appearance={appearance}\n onSelect={() => setFrozenEndColumnCount(orderedColumns.length - columnIndex)}\n >\n {labels.freezeEndColumn}\n </BaseContextMenuItem>\n ) : null}\n <BaseContextMenuItem\n appearance={appearance}\n disabled={resolvedFrozenColumnCount === 0 && resolvedFrozenEndColumnCount === 0}\n onSelect={() => {\n setFrozenColumnCount(0);\n setFrozenEndColumnCount(0);\n }}\n >\n {labels.unfreezeAllColumns}\n </BaseContextMenuItem>\n <BaseContextMenuSeparator appearance={appearance} />\n <BaseContextMenuItem\n appearance={appearance}\n disabled={isColumnAtDefaultWidth}\n onSelect={() => handleResetColumnSize(column)}\n >\n {labels.resetColumnWidth}\n </BaseContextMenuItem>\n </BaseContextMenuContent>\n </BaseContextMenu>\n );\n })}\n </BaseTableRow>\n </BaseTableHeader>\n <BaseTableBody appearance={appearance} className={cn('divide-y divide-border/50', classNames?.body)}>\n {pinnedTopRows.map((row, rowIndex) => {\n const key = getPinnedTopRowKey(row, rowIndex);\n const resolvedRowClassName = resolveRowClassName(pinnedTopRowClassName, row, rowIndex);\n return (\n <BaseTableRow\n appearance={appearance}\n key={`pinned-${key}`}\n className={cn('bg-card/95', classNames?.pinnedTopRow, resolvedRowClassName)}\n >\n {orderedColumns.map((column, columnIndex) => (\n <BaseTableCell\n appearance={appearance}\n key={`pinned-${key}-${column.key}`}\n align={column.align}\n className={cn(\n 'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n getFrozenClassName(column, columnIndex),\n column.cellClassName,\n classNames?.cell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n >\n <InteractiveTableCellContent wrap={column.wrap}>\n {renderPinnedTopCell\n ? renderPinnedTopCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: true })\n : renderDefaultCell(column, row)}\n </InteractiveTableCellContent>\n </BaseTableCell>\n ))}\n </BaseTableRow>\n );\n })}\n {rows.length ? rows.map((row, rowIndex) => {\n const key = getRowKey(row, rowIndex);\n const state = getRowState?.(row, rowIndex) || {};\n const resolvedRowClassName = resolveRowClassName(rowClassName, row, rowIndex);\n\n return (\n <BaseTableRow\n appearance={appearance}\n key={key}\n interactive={Boolean(onRowClick) && !state.disabled}\n selected={state.selected}\n disabled={state.disabled}\n onClick={() => {\n if (!state.disabled) onRowClick?.(row, rowIndex);\n }}\n className={cn(\n 'min-h-[52px] bg-card transition-colors',\n state.saving && 'bg-primary/5',\n state.pending && 'opacity-80',\n onRowClick && !state.disabled ? 'cursor-pointer hover:bg-muted/30' : 'hover:bg-muted/30',\n classNames?.row,\n resolvedRowClassName,\n )}\n >\n {orderedColumns.map((column, columnIndex) => (\n <BaseTableCell\n appearance={appearance}\n key={`${key}-${column.key}`}\n align={column.align}\n className={cn(\n 'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n getFrozenClassName(column, columnIndex),\n column.cellClassName,\n classNames?.cell,\n )}\n style={getFrozenStyle(column, columnIndex)}\n >\n <InteractiveTableCellContent wrap={column.wrap}>\n {renderCell\n ? renderCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: false })\n : renderDefaultCell(column, row)}\n </InteractiveTableCellContent>\n </BaseTableCell>\n ))}\n </BaseTableRow>\n );\n }) : pinnedTopRows.length ? null : (\n <BaseTableEmpty\n appearance={appearance}\n colSpan={Math.max(orderedColumns.length, 1)}\n className={classNames?.empty}\n >\n {emptyState}\n </BaseTableEmpty>\n )}\n </BaseTableBody>\n </BaseTable>\n </div>\n </BaseTableContainer>\n );\n}\n\nexport function InteractiveTableEditableTextCell({\n value,\n placeholder,\n disabled,\n multiline = false,\n commitOnBlur = true,\n className,\n inputClassName,\n onCommit,\n}: InteractiveTableEditableTextCellProps) {\n const initialValue = String(value || '');\n const [draft, setDraft] = useState(initialValue);\n\n useEffect(() => {\n setDraft(initialValue);\n }, [initialValue]);\n\n const commit = useCallback(async () => {\n const nextValue = String(draft || '').trim();\n const previousValue = String(initialValue || '').trim();\n if (nextValue === previousValue) return;\n try {\n await onCommit?.(nextValue);\n } catch {\n setDraft(initialValue);\n }\n }, [draft, initialValue, onCommit]);\n\n const controlClassName = cn(\n 'w-full resize-none rounded-sm border border-transparent bg-transparent px-1.5 py-1 text-xs text-foreground outline-none transition-colors',\n 'placeholder:text-muted-foreground/70 hover:border-border/60 hover:bg-background focus:border-primary/45 focus:bg-background',\n multiline ? 'min-h-[42px] leading-5' : 'h-8',\n disabled && 'cursor-not-allowed text-muted-foreground hover:border-transparent hover:bg-transparent',\n inputClassName,\n );\n\n if (multiline) {\n return (\n <textarea\n className={cn(controlClassName, className)}\n disabled={disabled}\n value={draft}\n placeholder={placeholder}\n onChange={(event) => setDraft(event.target.value)}\n onBlur={() => {\n if (commitOnBlur) void commit();\n }}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.currentTarget.blur();\n }\n if (event.key === 'Escape') {\n setDraft(initialValue);\n event.currentTarget.blur();\n }\n }}\n />\n );\n }\n\n return (\n <input\n className={cn(controlClassName, className)}\n disabled={disabled}\n value={draft}\n placeholder={placeholder}\n onChange={(event) => setDraft(event.target.value)}\n onBlur={() => {\n if (commitOnBlur) void commit();\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') event.currentTarget.blur();\n if (event.key === 'Escape') {\n setDraft(initialValue);\n event.currentTarget.blur();\n }\n }}\n />\n );\n}\n\nexport function InteractiveTableReadonlyCell({\n children,\n mono = false,\n className,\n}: InteractiveTableReadonlyCellProps) {\n return (\n <div className={cn('min-w-0 text-xs text-muted-foreground', mono && 'font-mono', className)}>\n {hasRenderableNode(children) ? children : '—'}\n </div>\n );\n}\n\nexport function InteractiveTableSelectCell<T extends string = string>({\n value,\n options,\n disabled,\n ariaLabel,\n children,\n className,\n onChange,\n}: InteractiveTableSelectCellProps<T>) {\n return (\n <div className={cn('relative flex w-full items-center', className)}>\n {children}\n <select\n aria-label={ariaLabel}\n disabled={disabled}\n value={value}\n onChange={(event) => onChange?.(event.target.value as T)}\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../base/utils';\n\nconst imageExtPattern = /\\.(png|jpe?g|webp|gif|svg|bmp|avif)$/i;\nconst audioExtPattern = /\\.(wav|mp3|ogg|m4a|flac|aac)$/i;\n\nexport interface WorkbenchGalleryColumn {\n key: string;\n label?: ReactNode;\n renderType?: string;\n type?: string;\n wrap?: boolean;\n [key: string]: any;\n}\n\nconst isLikelyUrl = (value: unknown) => /^https?:\\/\\//i.test(String(value || ''));\nconst getColumnRenderKind = (column: WorkbenchGalleryColumn | undefined) => String(column?.renderType || column?.type || '').toLowerCase();\nconst isImageLikeValue = (value: unknown) => String(value || '').startsWith('data:image/') || imageExtPattern.test(String(value || ''));\nconst isAudioLikeValue = (value: unknown) => String(value || '').startsWith('data:audio/') || audioExtPattern.test(String(value || ''));\nconst escapeSvgText = (value: unknown) => String(value || '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n\nexport const getDefaultGalleryFieldValue = (column?: WorkbenchGalleryColumn, row?: any) => {\n if (!column) return null;\n return row?.[column.key] ?? null;\n};\n\nexport const getDefaultGalleryDisplayText = (value: unknown) => {\n if (value === null || value === undefined || value === '') return '—';\n if (Array.isArray(value)) {\n const parts = value.map((item) => {\n if (typeof item === 'string') return item;\n if (!item || typeof item !== 'object') return '';\n const objectItem = item as Record<string, any>;\n return objectItem.text || objectItem.label || objectItem.title || objectItem.display || objectItem.value || objectItem.recordId || '';\n }).filter(Boolean);\n return parts.join(' · ') || '—';\n }\n if (typeof value === 'object') {\n const objectValue = value as Record<string, any>;\n return String(objectValue.text || objectValue.label || objectValue.title || objectValue.display || objectValue.value || '—');\n }\n return String(value);\n};\n\nexport const isDefaultGalleryImageField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n getColumnRenderKind(column) === 'image' || isImageLikeValue(value)\n);\n\nexport const isDefaultGalleryAudioField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n getColumnRenderKind(column) === 'audio' || isAudioLikeValue(value)\n);\n\nexport const getDefaultGalleryImagePreviewSrc = (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => {\n if (isLikelyUrl(value) || String(value || '').startsWith('data:image/')) return String(value);\n const title = escapeSvgText(value || columnLabel || rowId || '');\n const titleText = title\n ? `<text x='68' y='450' fill='white' font-family='Inter, Arial' font-size='52' font-weight='700'>${title}</text>`\n : '';\n const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 960 540'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%' stop-color='#0f172a'/><stop offset='55%' stop-color='#1d4ed8'/><stop offset='100%' stop-color='#14b8a6'/></linearGradient></defs><rect width='960' height='540' fill='url(#g)'/><g opacity='0.28'><circle cx='780' cy='130' r='150' fill='#67e8f9'/><circle cx='180' cy='430' r='170' fill='#a78bfa'/></g>${titleText}</svg>`;\n return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n};\n\nexport const isDefaultGalleryMediaColumn = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n {\n getFieldValue = getDefaultGalleryFieldValue,\n shouldEnhanceMultimodal = true,\n isImageField = isDefaultGalleryImageField,\n isAudioField = isDefaultGalleryAudioField,\n }: {\n getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n shouldEnhanceMultimodal?: boolean;\n isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n } = {},\n) => {\n if (!column || !shouldEnhanceMultimodal) return false;\n const value = getFieldValue(column, row);\n return isImageField(column, value) || isAudioField(column, value);\n};\n\nexport const isDefaultGalleryTitleCandidate = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n if (!column || column.renderType === 'icon') return false;\n return !isMediaColumn(column, row);\n};\n\nexport const isDefaultGallerySummaryCandidate = (\n column: WorkbenchGalleryColumn | undefined,\n row: any,\n { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n if (!column || column.renderType === 'icon') return false;\n return !isMediaColumn(column, row);\n};\n\nexport const renderDefaultGalleryFieldValue = (\n column: WorkbenchGalleryColumn,\n row: any,\n {\n compact = false,\n getFieldValue = getDefaultGalleryFieldValue,\n getDisplayText = getDefaultGalleryDisplayText,\n }: {\n compact?: boolean;\n getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n getDisplayText?: (value: unknown) => ReactNode;\n } = {},\n) => {\n const value = getFieldValue(column, row);\n return (\n <span className={cn('leading-relaxed', compact && column?.wrap === true && 'line-clamp-2 block')}>\n {getDisplayText(value)}\n </span>\n );\n};\n","import {\n type ComponentType,\n type ReactNode,\n} from 'react';\n\nimport { cn, hasRenderableNode } from '../base/utils';\nimport {\n getDefaultGalleryDisplayText,\n getDefaultGalleryFieldValue,\n getDefaultGalleryImagePreviewSrc,\n isDefaultGalleryAudioField,\n isDefaultGalleryImageField,\n isDefaultGalleryMediaColumn,\n isDefaultGallerySummaryCandidate,\n isDefaultGalleryTitleCandidate,\n renderDefaultGalleryFieldValue,\n type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\nimport {\n getWorkbenchIconComponent,\n renderWorkbenchIcon,\n} from './workbenchIconUtils';\n\nexport interface WorkbenchGalleryRecordVisual {\n Icon?: ComponentType<{ className?: string }> | ReactNode;\n icon?: ComponentType<{ className?: string }> | ReactNode;\n chipClassName?: string;\n iconClassName?: string;\n label?: ReactNode;\n title?: ReactNode;\n [key: string]: any;\n}\n\nexport interface WorkbenchGalleryLabels {\n fieldCount?: (count: number) => ReactNode;\n coverOnlyHint?: ReactNode;\n}\n\nexport interface WorkbenchGalleryCardProps<Row = any> {\n row: Row;\n columns: WorkbenchGalleryColumn[];\n onClick?: () => void;\n isSelected?: boolean;\n isMasonry?: boolean;\n galleryFieldKey?: string;\n galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n galleryBentoColumns?: 1 | 2 | 3 | number;\n galleryDetailVisibility?: 'all' | 'limit' | string;\n galleryDetailLimit?: number | string;\n shouldEnhanceMultimodal?: boolean;\n getFieldValue?: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n isMediaColumn?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isTitleCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isSummaryCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n getDisplayText?: (value: unknown) => ReactNode;\n renderFieldValue?: (\n column: WorkbenchGalleryColumn,\n row: Row,\n context: { compact?: boolean; surface?: string },\n ) => ReactNode;\n getImagePreviewSrc?: (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => string;\n isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n AudioPlayerComponent?: ComponentType<{ filename: string }>;\n cardVariant?: 'default' | 'image-only' | 'preview-only' | 'chromatic-bento' | string;\n renderPreview?: (context: WorkbenchGalleryCardRenderContext<Row>) => ReactNode;\n renderMeta?: (context: WorkbenchGalleryCardMetaContext<Row>) => ReactNode;\n renderLeadingVisual?: (context: WorkbenchGalleryCardMetaContext<Row> & { iconVisual?: WorkbenchGalleryRecordVisual | null }) => ReactNode;\n resolveRecordVisual?: (value: unknown, row: Row, iconColumn?: WorkbenchGalleryColumn) => WorkbenchGalleryRecordVisual | null | undefined;\n hiddenDetailFieldKeys?: string[];\n labels?: WorkbenchGalleryLabels;\n formatLabel?: (value: ReactNode, context?: { column?: WorkbenchGalleryColumn }) => ReactNode;\n className?: string;\n}\n\nexport interface WorkbenchGalleryCardRenderContext<Row = any> {\n row: Row;\n mediaColumn?: WorkbenchGalleryColumn | null;\n mediaValue: unknown;\n isImageMedia: boolean;\n isAudioMedia: boolean;\n iconVisual?: WorkbenchGalleryRecordVisual | null;\n IconComponent?: ComponentType<{ className?: string }> | null;\n previewClassName: string;\n}\n\nexport interface WorkbenchGalleryCardMetaContext<Row = any> {\n row: Row;\n contentColumns: WorkbenchGalleryColumn[];\n detailColumns: WorkbenchGalleryColumn[];\n titleColumn?: WorkbenchGalleryColumn | null;\n summaryColumn?: WorkbenchGalleryColumn | null;\n getDisplayText: (value: unknown) => ReactNode;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n}\n\nconst getDefaultGalleryDetailLimit = (density?: string) => {\n if (density === 'compact') return 2;\n if (density === 'detailed') return 6;\n return 4;\n};\n\nconst getNormalizedGalleryBentoColumns = (columns: unknown, density?: string) => {\n if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n return density === 'detailed' ? 1 : 2;\n};\n\nconst getNormalizedGalleryDetailLimit = ({\n density,\n visibility,\n limit,\n}: {\n density?: string;\n visibility?: string;\n limit?: number | string;\n}) => {\n if (visibility === 'all') return Number.POSITIVE_INFINITY;\n const parsedLimit = Number.parseInt(String(limit), 10);\n if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n return getDefaultGalleryDetailLimit(density);\n};\n\nconst getGalleryCardPaddingClassName = (density?: string) => {\n if (density === 'compact') return 'p-3';\n if (density === 'detailed') return 'p-4';\n return 'p-3.5';\n};\n\nconst getGalleryPreviewClassName = (density?: string, isMasonry?: boolean) => {\n if (isMasonry) return 'h-auto w-full object-cover';\n if (density === 'compact') return 'h-32 w-full object-cover';\n if (density === 'detailed') return 'h-48 w-full object-cover';\n return 'h-40 w-full object-cover';\n};\n\nconst getGalleryDetailGridClassName = (columns: number) => {\n if (columns === 1) return 'grid-cols-1';\n if (columns === 3) return 'grid-cols-1 sm:grid-cols-2 2xl:grid-cols-3';\n return 'grid-cols-1 sm:grid-cols-2';\n};\n\nfunction getIconComponent(icon: WorkbenchGalleryRecordVisual['Icon']) {\n return getWorkbenchIconComponent(icon) as ComponentType<{ className?: string }> | null;\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n return value;\n}\n\nfunction getLabelText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') return String(value);\n return '';\n}\n\nexport function WorkbenchGalleryCard<Row = any>({\n row,\n columns,\n onClick = () => {},\n isSelected = false,\n isMasonry = false,\n galleryFieldKey = 'auto',\n galleryDensity = 'comfortable',\n galleryBentoColumns,\n galleryDetailVisibility = 'limit',\n galleryDetailLimit,\n shouldEnhanceMultimodal = true,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n renderFieldValue,\n getImagePreviewSrc,\n isImageField,\n isAudioField,\n AudioPlayerComponent,\n cardVariant = 'default',\n renderPreview,\n renderMeta,\n renderLeadingVisual,\n resolveRecordVisual,\n hiddenDetailFieldKeys = [],\n labels,\n formatLabel = defaultFormatLabel,\n className,\n}: WorkbenchGalleryCardProps<Row>) {\n const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n const resolvedGetImagePreviewSrc = getImagePreviewSrc || getDefaultGalleryImagePreviewSrc;\n const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGalleryMediaColumn(column, candidateRow, {\n getFieldValue: resolvedGetFieldValue as any,\n shouldEnhanceMultimodal,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n })\n ));\n const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGalleryTitleCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n isDefaultGallerySummaryCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, candidateRow: Row, { compact } = {}) => (\n renderDefaultGalleryFieldValue(column, candidateRow, {\n compact,\n getFieldValue: resolvedGetFieldValue as any,\n getDisplayText: resolvedGetDisplayText,\n })\n ));\n const isPreviewOnly = cardVariant === 'preview-only';\n const isImageOnly = cardVariant === 'image-only';\n const isChromaticBento = cardVariant === 'chromatic-bento';\n const selectedGalleryColumn = galleryFieldKey !== 'auto'\n ? columns.find((column) => column.key === galleryFieldKey && resolvedIsMediaColumn(column, row))\n : null;\n const mediaColumn = selectedGalleryColumn || (shouldEnhanceMultimodal ? columns.find((column) => resolvedIsMediaColumn(column, row)) : null);\n const iconColumn = columns.find((column) => column.renderType === 'icon');\n const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)[iconColumn.key], row, iconColumn) : null;\n const IconComponent = getIconComponent(iconVisual?.Icon || iconVisual?.icon);\n const mediaValue = mediaColumn ? resolvedGetFieldValue(mediaColumn, row) : null;\n const isImageMedia = mediaColumn ? resolvedIsImageField(mediaColumn, mediaValue) : false;\n const isAudioMedia = mediaColumn ? resolvedIsAudioField(mediaColumn, mediaValue) : false;\n const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n const titleCandidates = contentColumns.filter((column) => {\n if (!column || resolvedIsMediaColumn(column, row) || !resolvedIsTitleCandidate(column, row)) return false;\n const value = resolvedGetFieldValue(column, row);\n return !(value === null || value === undefined || value === '');\n });\n const titleColumn = titleCandidates[0] || null;\n const titleText = titleColumn ? resolvedGetDisplayText(resolvedGetFieldValue(titleColumn, row)) : resolvedGetDisplayText((row as any).linkKey || (row as any).id);\n const summaryColumn = contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || resolvedIsMediaColumn(column, row) || !resolvedIsSummaryCandidate(column, row)) return false;\n const summaryText = String(resolvedGetDisplayText(resolvedGetFieldValue(column, row)));\n return summaryText !== '—' && summaryText.length > 12;\n }) || contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || resolvedIsMediaColumn(column, row) || !resolvedIsSummaryCandidate(column, row)) return false;\n const fallbackText = String(resolvedGetDisplayText(resolvedGetFieldValue(column, row)));\n return fallbackText !== '—';\n }) || null;\n const summaryText = summaryColumn ? resolvedGetDisplayText(resolvedGetFieldValue(summaryColumn, row)) : '';\n const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n const detailColumns = contentColumns\n .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key));\n const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n density: galleryDensity,\n visibility: galleryDetailVisibility,\n limit: galleryDetailLimit,\n });\n const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n ? detailColumns.slice(0, resolvedDetailLimit)\n : detailColumns;\n const isDetailedCard = galleryDensity === 'detailed';\n const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n const cardPaddingClassName = getGalleryCardPaddingClassName(galleryDensity);\n const detailGridClassName = getGalleryDetailGridClassName(resolvedBentoColumns);\n const previewClassName = isImageOnly\n ? 'block h-auto w-full transition-transform duration-500 group-hover:scale-[1.02]'\n : getGalleryPreviewClassName(galleryDensity, isMasonry);\n const customPreview = typeof renderPreview === 'function'\n ? renderPreview({\n row,\n mediaColumn,\n mediaValue,\n isImageMedia,\n isAudioMedia,\n iconVisual,\n IconComponent,\n previewClassName,\n })\n : null;\n const metaContent = typeof renderMeta === 'function'\n ? renderMeta({\n row,\n contentColumns,\n detailColumns,\n titleColumn,\n summaryColumn,\n getDisplayText: resolvedGetDisplayText,\n getFieldValue: resolvedGetFieldValue as any,\n })\n : null;\n const customLeadingVisual = typeof renderLeadingVisual === 'function'\n ? renderLeadingVisual({\n row,\n contentColumns,\n detailColumns,\n titleColumn,\n summaryColumn,\n iconVisual,\n getDisplayText: resolvedGetDisplayText,\n getFieldValue: resolvedGetFieldValue as any,\n })\n : null;\n const defaultLeadingVisual = !customLeadingVisual && iconVisual ? (\n <div className={cn('flex h-9 w-9 items-center justify-center rounded-lg border', iconVisual.chipClassName || 'border-primary/20 bg-primary/10 text-primary')}>\n {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-4 w-4', iconVisual.iconClassName || 'text-primary'))}\n </div>\n ) : null;\n const leadingVisual = customLeadingVisual || defaultLeadingVisual;\n const defaultMetaClassName = isChromaticBento\n ? 'shrink-0 rounded-full border border-border/40 bg-muted/25 px-2.5 py-1 text-[10px] text-muted-foreground transition-all duration-300 group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary dark:border-border/35 dark:bg-muted/15'\n : 'shrink-0 rounded-md border border-border/40 bg-muted/25 px-2 py-1 text-[10px] text-muted-foreground dark:border-border/35 dark:bg-muted/15';\n const detailCellClassName = isChromaticBento\n ? 'rounded-xl border border-border/35 bg-muted/20 px-3 py-2.5 transition-all duration-300 group-hover:border-primary/25 group-hover:bg-primary/5 dark:border-border/30 dark:bg-muted/10'\n : 'rounded-lg border border-border/35 bg-muted/20 px-2.5 py-2 dark:border-border/30 dark:bg-muted/10';\n const detailLabelClassName = isChromaticBento\n ? 'text-[10px] uppercase tracking-[0.14em] text-muted-foreground transition-colors duration-300 group-hover:text-foreground'\n : 'text-[10px] uppercase tracking-[0.12em] text-muted-foreground';\n const detailValueClassName = isChromaticBento\n ? 'mt-1.5 text-[11px] text-muted-foreground transition-colors duration-300 group-hover:text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed'\n : 'mt-1.5 text-[11px] text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed';\n const fieldCountLabel = labels?.fieldCount?.(contentColumns.length);\n const coverOnlyHint = labels?.coverOnlyHint;\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-label={getLabelText(titleText)}\n className={cn(\n 'group relative w-full text-left transition-all duration-300',\n isImageOnly\n ? 'overflow-hidden rounded-xl bg-transparent p-0 shadow-none'\n : isPreviewOnly\n ? 'overflow-hidden rounded-3xl bg-transparent p-0'\n : cn('overflow-hidden rounded-xl border', isChromaticBento && 'rounded-3xl shadow-none'),\n !isPreviewOnly && !isImageOnly && cardPaddingClassName,\n !isPreviewOnly && !isImageOnly && (isSelected\n ? (isChromaticBento\n ? 'border-primary/35 bg-background/85 ring-1 ring-primary/20'\n : 'border-primary/40 bg-primary/10 ring-1 ring-primary/30')\n : (isChromaticBento\n ? 'workbench-surface-card hover:-translate-y-1 hover:border-primary/20'\n : 'workbench-surface-card hover:border-primary/30')),\n isPreviewOnly && isSelected && 'ring-1 ring-primary/30',\n isImageOnly && (isSelected ? 'ring-1 ring-primary/30' : 'hover:-translate-y-0.5'),\n isMasonry ? 'block h-full w-full min-w-0' : 'h-full min-w-0',\n className,\n )}\n >\n {isChromaticBento ? (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_top_right,hsl(var(--primary)/0.18),transparent_40%),radial-gradient(circle_at_bottom_left,hsl(var(--accent)/0.18),transparent_45%)] opacity-0 transition-opacity duration-300',\n isSelected ? 'opacity-100' : 'group-hover:opacity-100',\n )}\n />\n ) : null}\n\n <div className=\"relative z-[1]\">\n {customPreview ?? (\n <>\n {isImageMedia && mediaColumn ? (\n <div className={cn(\n 'overflow-hidden bg-card/50',\n isImageOnly\n ? 'rounded-xl bg-transparent'\n : isPreviewOnly\n ? 'rounded-3xl'\n : 'mb-3 rounded-lg border border-border/70',\n )}>\n <img\n src={resolvedGetImagePreviewSrc(mediaValue, (row as any).id, mediaColumn.label)}\n alt={String(mediaValue || mediaColumn.label || '')}\n className={previewClassName}\n loading=\"lazy\"\n referrerPolicy=\"no-referrer\"\n onError={(event) => {\n event.currentTarget.onerror = null;\n event.currentTarget.src = resolvedGetImagePreviewSrc('', (row as any).id, mediaColumn.label);\n }}\n />\n </div>\n ) : null}\n\n {!isImageMedia && iconVisual && isPreviewOnly ? (\n <div className={cn(\n 'flex items-center justify-center',\n isPreviewOnly\n ? cn('rounded-3xl border py-10', iconVisual.chipClassName || 'border-primary/20 bg-primary/5')\n : 'mb-3 h-24 rounded-lg border border-border/60 bg-primary/5',\n )}>\n {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-10 w-10', iconVisual.iconClassName || 'text-primary'))}\n </div>\n ) : null}\n\n {isAudioMedia && AudioPlayerComponent ? (\n <div className={cn(!isPreviewOnly && 'mb-3')}>\n <AudioPlayerComponent filename={String(mediaValue)} />\n </div>\n ) : null}\n </>\n )}\n\n {!isPreviewOnly && !isImageOnly ? (\n <>\n <div className=\"flex items-start gap-3\">\n {leadingVisual ? <div className=\"shrink-0\">{leadingVisual}</div> : null}\n <div className=\"flex min-w-0 flex-1 items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1\">\n <div className={cn(\n 'flex items-center gap-2 text-sm font-semibold',\n isChromaticBento ? 'text-muted-foreground transition-colors duration-300 group-hover:text-foreground' : 'text-foreground',\n )}>\n <span className=\"truncate\">{titleText}</span>\n </div>\n {summaryText && summaryText !== titleText ? (\n <div className={cn(\n 'mt-1 text-[11px] leading-5 text-muted-foreground',\n isDetailedCard ? 'line-clamp-4' : 'line-clamp-2',\n isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n )}>\n {summaryText}\n </div>\n ) : null}\n </div>\n {metaContent ?? (hasRenderableNode(fieldCountLabel) ? (\n <span className={defaultMetaClassName}>\n {fieldCountLabel}\n </span>\n ) : null)}\n </div>\n </div>\n\n {visibleDetailColumns.length > 0 ? (\n <div className={cn('mt-3 grid grid-flow-row gap-2', detailGridClassName)}>\n {visibleDetailColumns.map((column) => (\n <div key={`${(row as any).id || (row as any).linkKey}-${column.key}`} className={detailCellClassName}>\n {column.label ? <div className={detailLabelClassName}>{formatLabel(column.label, { column })}</div> : null}\n <div className={cn(detailValueClassName, !column.label && 'mt-0')}>\n {resolvedRenderFieldValue(column, row, { compact: galleryDensity !== 'detailed', surface: 'gallery' })}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n\n {!summaryText && visibleDetailColumns.length === 0 && hasRenderableNode(coverOnlyHint) ? (\n <div className={cn(\n 'mt-3 text-[11px] text-muted-foreground',\n isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n )}>\n {coverOnlyHint}\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n </button>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nconst DEFAULT_MASONRY_GAP_PX = 12;\nconst DEFAULT_MASONRY_ROW_HEIGHT_PX = 8;\nconst DEFAULT_MASONRY_COLUMN_WIDTH_PX = 280;\nconst DEFAULT_MASONRY_ITEM_HEIGHT_PX = 240;\n\nexport interface WorkbenchMasonryItemSize {\n width?: number | string;\n height?: number | string;\n columnSpan?: number;\n rowSpan?: number;\n}\n\nexport interface WorkbenchMasonryLayoutContext {\n columnCount: number;\n columnSpan?: number;\n columnWidth: number;\n containerWidth: number;\n gap: number;\n itemWidth?: number;\n placementStrategy: 'shelf' | 'dense';\n rowSpan?: number;\n rowHeight: number;\n size?: WorkbenchMasonryItemSize;\n}\n\nexport interface WorkbenchMasonryLayoutProps<Item = any> {\n items?: Item[];\n renderItem: (item: Item, context: WorkbenchMasonryLayoutContext) => ReactNode;\n getItemKey?: (item: Item, index: number) => string | number;\n getItemSize?: (item: Item, context: WorkbenchMasonryLayoutContext) => WorkbenchMasonryItemSize | undefined;\n columnWidth?: number | string;\n gap?: number;\n rowHeight?: number;\n placementStrategy?: 'shelf' | 'dense';\n className?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getRootFontSize(node: Element | null) {\n if (typeof window === 'undefined') return 16;\n const target = node || document.documentElement;\n const parsed = Number.parseFloat(window.getComputedStyle(target).fontSize);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 16;\n}\n\nfunction resolveLengthToPixels(value: number | string | undefined, fallback: number, node: Element | null) {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n if (typeof value !== 'string') return fallback;\n\n const normalized = value.trim().toLowerCase();\n if (!normalized) return fallback;\n\n if (/^\\d+(\\.\\d+)?$/.test(normalized)) {\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n }\n\n if (normalized.endsWith('px')) {\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n }\n\n if (normalized.endsWith('rem')) {\n const parsed = Number.parseFloat(normalized);\n if (!Number.isFinite(parsed) || parsed <= 0) return fallback;\n return parsed * getRootFontSize(node);\n }\n\n return fallback;\n}\n\nfunction areMeasurementMapsEqual(prev: Record<string, number>, next: Record<string, number>) {\n const prevKeys = Object.keys(prev);\n const nextKeys = Object.keys(next);\n if (prevKeys.length !== nextKeys.length) return false;\n\n for (const key of nextKeys) {\n if (prev[key] !== next[key]) return false;\n }\n\n return true;\n}\n\nfunction getMasonryColumnCount({\n containerWidth,\n itemCount,\n targetColumnWidth,\n gap,\n}: {\n containerWidth: number;\n itemCount: number;\n targetColumnWidth: number;\n gap: number;\n}) {\n if (!containerWidth) return 1;\n\n const safeItemCount = Math.max(itemCount, 1);\n const maxCandidate = Math.max(\n 1,\n Math.min(\n safeItemCount,\n Math.ceil((containerWidth + gap) / (Math.max(targetColumnWidth * 0.58, 1) + gap)),\n ),\n );\n\n let bestCount = 1;\n let bestScore = Number.POSITIVE_INFINITY;\n\n for (let candidateCount = 1; candidateCount <= maxCandidate; candidateCount += 1) {\n const actualColumnWidth = (containerWidth - gap * Math.max(candidateCount - 1, 0)) / candidateCount;\n if (!Number.isFinite(actualColumnWidth) || actualColumnWidth <= 0) continue;\n\n const underflowPenalty = Math.max(0, targetColumnWidth * 0.78 - actualColumnWidth);\n const overflowPenalty = Math.max(0, actualColumnWidth - targetColumnWidth * 1.35);\n const candidateScore = Math.abs(actualColumnWidth - targetColumnWidth) + underflowPenalty * 3 + overflowPenalty * 2;\n\n if (candidateScore < bestScore) {\n bestScore = candidateScore;\n bestCount = candidateCount;\n }\n }\n\n return bestCount;\n}\n\nfunction getItemColumnSpan({\n size,\n columnWidth,\n columnCount,\n gap,\n}: {\n size?: WorkbenchMasonryItemSize;\n columnWidth: number;\n columnCount: number;\n gap: number;\n}) {\n if (Number.isFinite(size?.columnSpan) && Number(size?.columnSpan) > 0) {\n return clamp(Math.round(Number(size?.columnSpan)), 1, columnCount);\n }\n\n const itemWidth = resolveLengthToPixels(size?.width, columnWidth, null);\n return clamp(Math.ceil((itemWidth + gap) / (columnWidth + gap)), 1, columnCount);\n}\n\nfunction getItemRowSpan({\n size,\n measuredHeight,\n rowHeight,\n gap,\n}: {\n size?: WorkbenchMasonryItemSize;\n measuredHeight?: number;\n rowHeight: number;\n gap: number;\n}) {\n if (Number.isFinite(size?.rowSpan) && Number(size?.rowSpan) > 0) {\n return Math.max(1, Math.round(Number(size?.rowSpan)));\n }\n\n const itemHeight = Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n ? Number(measuredHeight)\n : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n\n return Math.max(1, Math.ceil((itemHeight + gap) / (rowHeight + gap)));\n}\n\nfunction getResolvedItemHeight({\n size,\n measuredHeight,\n}: {\n size?: WorkbenchMasonryItemSize;\n measuredHeight?: number;\n}) {\n return Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n ? Number(measuredHeight)\n : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n}\n\nexport function WorkbenchMasonryLayout<Item = any>({\n items = [],\n renderItem,\n getItemKey = (item: any, index: number) => item?.id ?? item?.key ?? index,\n getItemSize,\n columnWidth = DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n gap = DEFAULT_MASONRY_GAP_PX,\n rowHeight = DEFAULT_MASONRY_ROW_HEIGHT_PX,\n placementStrategy = 'shelf',\n className,\n}: WorkbenchMasonryLayoutProps<Item>) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const itemNodesRef = useRef(new Map<string, HTMLDivElement>());\n const itemObserverRef = useRef<ResizeObserver | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const [measuredHeights, setMeasuredHeights] = useState<Record<string, number>>({});\n const itemKeys = useMemo(\n () => items.map((item, index) => String(getItemKey(item, index))),\n [getItemKey, items],\n );\n const itemKeysSignature = itemKeys.join('|');\n\n useEffect(() => {\n const node = containerRef.current;\n if (!node) return undefined;\n\n const updateWidth = () => {\n const nextWidth = Math.round(node.getBoundingClientRect().width);\n setContainerWidth((prevWidth) => (prevWidth === nextWidth ? prevWidth : nextWidth));\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => updateWidth());\n observer.observe(node);\n return () => observer.disconnect();\n }\n\n window.addEventListener('resize', updateWidth);\n return () => window.removeEventListener('resize', updateWidth);\n }, []);\n\n useEffect(() => {\n setMeasuredHeights((prev) => {\n const next = Object.fromEntries(\n Object.entries(prev).filter(([key]) => itemKeys.includes(key)),\n );\n\n return areMeasurementMapsEqual(prev, next) ? prev : next;\n });\n }, [itemKeys, itemKeysSignature]);\n\n const resolvedTargetColumnWidth = resolveLengthToPixels(\n columnWidth,\n DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n containerRef.current,\n );\n const isDensePlacement = placementStrategy === 'dense';\n const columnCount = getMasonryColumnCount({\n containerWidth,\n itemCount: items.length,\n targetColumnWidth: resolvedTargetColumnWidth,\n gap,\n });\n const resolvedColumnWidth = containerWidth > 0\n ? (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount\n : resolvedTargetColumnWidth;\n\n const layoutItems = useMemo(() => items.map((item, index) => {\n const key = itemKeys[index];\n const size = typeof getItemSize === 'function'\n ? getItemSize(item, {\n columnCount,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n placementStrategy,\n rowHeight,\n }) || {}\n : {};\n\n return {\n key,\n item,\n size,\n columnSpan: getItemColumnSpan({\n size,\n columnWidth: resolvedColumnWidth,\n columnCount,\n gap,\n }),\n rowSpan: getItemRowSpan({\n size,\n measuredHeight: measuredHeights[key],\n rowHeight,\n gap,\n }),\n };\n }), [\n columnCount,\n containerWidth,\n gap,\n getItemSize,\n itemKeys,\n items,\n measuredHeights,\n placementStrategy,\n resolvedColumnWidth,\n rowHeight,\n ]);\n\n useLayoutEffect(() => {\n const nextMeasurements: Record<string, number> = {};\n\n itemNodesRef.current.forEach((node, key) => {\n const nextHeight = Math.ceil(node.getBoundingClientRect().height);\n if (Number.isFinite(nextHeight) && nextHeight > 0) {\n nextMeasurements[key] = nextHeight;\n }\n });\n\n setMeasuredHeights((prev) => {\n if (!Object.keys(nextMeasurements).length) return prev;\n const merged = { ...prev, ...nextMeasurements };\n return areMeasurementMapsEqual(prev, merged) ? prev : merged;\n });\n }, [columnCount, isDensePlacement, itemKeysSignature, resolvedColumnWidth]);\n\n useEffect(() => {\n if (typeof ResizeObserver !== 'function') return undefined;\n\n const observer = new ResizeObserver((entries) => {\n setMeasuredHeights((prev) => {\n const next = { ...prev };\n let didChange = false;\n\n for (const entry of entries) {\n const key = (entry.target as HTMLElement).dataset.masonryKey;\n if (!key) continue;\n const nextHeight = Math.ceil(entry.contentRect.height);\n if (!Number.isFinite(nextHeight) || nextHeight <= 0 || next[key] === nextHeight) continue;\n next[key] = nextHeight;\n didChange = true;\n }\n\n return didChange ? next : prev;\n });\n });\n\n itemObserverRef.current = observer;\n itemNodesRef.current.forEach((node) => observer.observe(node));\n\n return () => {\n observer.disconnect();\n itemObserverRef.current = null;\n };\n }, [isDensePlacement, itemKeysSignature]);\n\n const registerItemNode = (key: string, node: HTMLDivElement | null) => {\n const currentNodes = itemNodesRef.current;\n const previousNode = currentNodes.get(key);\n\n if (previousNode && previousNode !== node && itemObserverRef.current) {\n itemObserverRef.current.unobserve(previousNode);\n }\n\n if (!node) {\n currentNodes.delete(key);\n return;\n }\n\n node.dataset.masonryKey = key;\n currentNodes.set(key, node);\n\n if (itemObserverRef.current) {\n itemObserverRef.current.observe(node);\n }\n };\n\n if (!isDensePlacement) {\n const orderedLayout = (() => {\n const columnBottoms = Array.from({ length: columnCount }, () => 0);\n let nextColumnIndex = 0;\n let maxBottom = 0;\n\n const positionedItems = layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => {\n const resolvedSpan = clamp(columnSpan, 1, columnCount);\n let startColumn = nextColumnIndex;\n\n if (startColumn + resolvedSpan > columnCount) {\n startColumn = 0;\n }\n\n startColumn = Math.min(startColumn, columnCount - resolvedSpan);\n\n const itemWidth = resolvedColumnWidth * resolvedSpan + gap * Math.max(resolvedSpan - 1, 0);\n const itemHeight = getResolvedItemHeight({\n size,\n measuredHeight: measuredHeights[key],\n });\n const top = Math.max(...columnBottoms.slice(startColumn, startColumn + resolvedSpan));\n const left = startColumn * (resolvedColumnWidth + gap);\n const bottom = top + itemHeight;\n\n for (let columnIndex = startColumn; columnIndex < startColumn + resolvedSpan; columnIndex += 1) {\n columnBottoms[columnIndex] = bottom + gap;\n }\n\n maxBottom = Math.max(maxBottom, bottom);\n nextColumnIndex = startColumn + resolvedSpan;\n\n if (nextColumnIndex >= columnCount) {\n nextColumnIndex = 0;\n }\n\n return {\n key,\n item,\n columnSpan: resolvedSpan,\n itemHeight,\n itemWidth,\n left,\n rowSpan,\n size,\n top,\n };\n });\n\n return {\n containerHeight: Math.max(0, maxBottom),\n positionedItems,\n };\n })();\n\n return (\n <div\n ref={containerRef}\n className={cn('relative w-full', className)}\n style={{ height: `${orderedLayout.containerHeight}px` }}\n >\n {orderedLayout.positionedItems.map(({ key, item, columnSpan, rowSpan, size, itemWidth, left, top }) => {\n const unresolvedSingleColumnWidth = containerWidth <= 0 && columnCount === 1;\n const itemWidthValue = unresolvedSingleColumnWidth ? '100%' : `${itemWidth}px`;\n\n return (\n <div\n key={key}\n className=\"absolute min-w-0\"\n style={{\n left: unresolvedSingleColumnWidth ? 0 : `${left}px`,\n top: `${top}px`,\n width: itemWidthValue,\n maxWidth: itemWidthValue,\n }}\n >\n <div ref={(node) => registerItemNode(key, node)} className=\"min-w-0\">\n {renderItem(item, {\n columnCount,\n columnSpan,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n itemWidth,\n placementStrategy,\n rowSpan,\n rowHeight,\n size,\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={cn('grid w-full items-start', className)}\n style={{\n gap: `${gap}px`,\n gridAutoFlow: 'row dense',\n gridAutoRows: `${rowHeight}px`,\n gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n }}\n >\n {layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => (\n <div\n key={key}\n className=\"min-w-0\"\n style={{\n gridColumn: `span ${columnSpan}`,\n gridRow: `span ${rowSpan}`,\n }}\n >\n <div ref={(node) => registerItemNode(key, node)} className=\"h-full\">\n {renderItem(item, {\n columnCount,\n columnSpan,\n columnWidth: resolvedColumnWidth,\n containerWidth,\n gap,\n placementStrategy,\n rowSpan,\n rowHeight,\n size,\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '../base/utils';\nimport {\n WorkbenchGalleryCard,\n type WorkbenchGalleryCardProps,\n} from './WorkbenchGalleryCard';\nimport {\n WorkbenchMasonryLayout,\n type WorkbenchMasonryItemSize,\n} from './WorkbenchMasonryLayout';\nimport {\n getDefaultGalleryDisplayText,\n getDefaultGalleryFieldValue,\n isDefaultGalleryAudioField,\n isDefaultGalleryImageField,\n isDefaultGalleryMediaColumn,\n isDefaultGallerySummaryCandidate,\n isDefaultGalleryTitleCandidate,\n type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\n\nconst GALLERY_GRID_GAP_PX = 12;\n\nexport interface WorkbenchGalleryViewProps<Row = any>\n extends Omit<WorkbenchGalleryCardProps<Row>, 'row' | 'columns' | 'onClick' | 'isSelected' | 'isMasonry'> {\n rows?: Row[];\n columns?: WorkbenchGalleryColumn[];\n onRowClick?: (row: Row, rowIndex: number) => void;\n selectedLinkKey?: string;\n selectedRowKey?: string;\n className?: string;\n isMasonry?: boolean;\n galleryLayoutMode?: 'auto' | 'rail' | string;\n galleryRailCardWidth?: number;\n galleryGridColumns?: number | 'auto' | string;\n galleryGridCardWidth?: number | string;\n galleryMasonryColumnWidth?: number | string;\n masonryPlacementStrategy?: 'shelf' | 'dense';\n getMasonryItemSize?: (\n row: Row,\n context: {\n defaultSize: WorkbenchMasonryItemSize;\n columnCount: number;\n columnWidth: number;\n containerWidth: number;\n gap: number;\n placementStrategy: 'shelf' | 'dense';\n rowHeight: number;\n },\n ) => WorkbenchMasonryItemSize | undefined;\n}\n\nfunction getNormalizedGalleryGridCardWidth(cardWidth: unknown) {\n if (typeof cardWidth === 'number' && Number.isFinite(cardWidth) && cardWidth > 0) {\n return `${cardWidth}px`;\n }\n\n if (typeof cardWidth === 'string' && cardWidth.trim()) {\n return cardWidth.trim();\n }\n\n return undefined;\n}\n\nfunction getDefaultGalleryDetailLimit(density?: string) {\n if (density === 'compact') return 2;\n if (density === 'detailed') return 6;\n return 4;\n}\n\nfunction getNormalizedGalleryBentoColumns(columns: unknown, density?: string) {\n if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n return density === 'detailed' ? 1 : 2;\n}\n\nfunction getNormalizedGalleryDetailLimit({\n density,\n visibility,\n limit,\n}: {\n density?: string;\n visibility?: string;\n limit?: number | string;\n}) {\n if (visibility === 'all') return Number.POSITIVE_INFINITY;\n const parsedLimit = Number.parseInt(String(limit), 10);\n if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n return getDefaultGalleryDetailLimit(density);\n}\n\nfunction getGalleryCardWidthMetrics(density?: string) {\n if (density === 'compact') return { min: 220, ideal: 244, max: 268 };\n if (density === 'detailed') return { min: 320, ideal: 372, max: 420 };\n return { min: 260, ideal: 304, max: 348 };\n}\n\nfunction getGalleryCardWidthForColumnCount({\n containerWidth,\n columnCount,\n gap,\n}: {\n containerWidth: number;\n columnCount: number;\n gap: number;\n}) {\n if (!containerWidth || !columnCount) return 0;\n return (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount;\n}\n\nfunction getNormalizedGalleryGridColumns(columns: unknown) {\n if (columns === undefined || columns === null || columns === '' || columns === 'auto') {\n return undefined;\n }\n\n const parsedColumns = Number.parseInt(String(columns), 10);\n if (!Number.isFinite(parsedColumns) || parsedColumns <= 0) return undefined;\n return Math.max(1, Math.min(parsedColumns, 8));\n}\n\nfunction getGalleryGridColumnCount({\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n gap,\n}: {\n containerWidth: number;\n rowCount: number;\n minCardWidth: number;\n idealCardWidth: number;\n maxCardWidth: number;\n gap: number;\n}) {\n if (!containerWidth) return 1;\n\n const safeRowCount = Math.max(rowCount, 1);\n const lowerBound = Math.max(1, Math.ceil((containerWidth + gap) / (maxCardWidth + gap)));\n const upperBound = Math.max(1, Math.floor((containerWidth + gap) / (minCardWidth + gap)));\n const idealCount = Math.max(1, Math.round((containerWidth + gap) / (idealCardWidth + gap)));\n const phantomPenalty = Math.round((idealCardWidth - minCardWidth) / 2) + gap;\n const maxCandidate = Math.max(1, lowerBound, upperBound + 1, idealCount + 1);\n\n let bestCount = 1;\n let bestScore = Number.POSITIVE_INFINITY;\n\n for (let candidateCount = 1; candidateCount <= maxCandidate; candidateCount += 1) {\n const cardWidth = getGalleryCardWidthForColumnCount({ containerWidth, columnCount: candidateCount, gap });\n const overflowPenalty = Math.max(0, cardWidth - maxCardWidth);\n const underflowPenalty = Math.max(0, minCardWidth - cardWidth);\n const idealPenalty = Math.abs(cardWidth - idealCardWidth);\n const phantomColumns = Math.max(0, candidateCount - safeRowCount);\n const candidateScore = overflowPenalty * 3 + underflowPenalty * 2 + idealPenalty + phantomColumns * phantomPenalty;\n\n if (candidateScore < bestScore) {\n bestScore = candidateScore;\n bestCount = candidateCount;\n }\n }\n\n return bestCount;\n}\n\nfunction getGalleryGridLayoutStyle({\n isRailLayout,\n railCardWidth,\n fixedCardWidth,\n fixedColumnCount,\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n}: {\n isRailLayout: boolean;\n railCardWidth: number;\n fixedCardWidth?: string;\n fixedColumnCount?: number;\n containerWidth: number;\n rowCount: number;\n minCardWidth: number;\n idealCardWidth: number;\n maxCardWidth: number;\n}) {\n if (isRailLayout) {\n return { gridAutoColumns: `${railCardWidth}px` };\n }\n\n if (fixedColumnCount) {\n const responsiveColumnCount = containerWidth\n ? Math.max(1, Math.min(\n fixedColumnCount,\n Math.floor((containerWidth + GALLERY_GRID_GAP_PX) / (minCardWidth + GALLERY_GRID_GAP_PX)) || 1,\n ))\n : fixedColumnCount;\n\n return {\n gridTemplateColumns: `repeat(${responsiveColumnCount}, minmax(0, 1fr))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n if (fixedCardWidth) {\n return {\n gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${fixedCardWidth}), ${fixedCardWidth}))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n if (!containerWidth) {\n return {\n gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minCardWidth}px), min(100%, ${maxCardWidth}px)))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n }\n\n const columnCount = getGalleryGridColumnCount({\n containerWidth,\n rowCount,\n minCardWidth,\n idealCardWidth,\n maxCardWidth,\n gap: GALLERY_GRID_GAP_PX,\n });\n\n return {\n gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n justifyContent: 'start',\n alignContent: 'start',\n };\n}\n\nfunction getGalleryTextLength(value: unknown) {\n if (value === null || value === undefined) return 0;\n const text = String(value).trim();\n return text && text !== '—' ? text.length : 0;\n}\n\nfunction getGalleryFieldText<Row>({\n column,\n row,\n getFieldValue,\n getDisplayText,\n}: {\n column?: WorkbenchGalleryColumn | null;\n row: Row;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n getDisplayText: (value: unknown) => unknown;\n}) {\n if (!column) return '';\n const rawValue = getFieldValue(column, row);\n if (rawValue === null || rawValue === undefined || rawValue === '') return '';\n const textValue = getDisplayText(rawValue);\n return textValue === '—' ? '' : String(textValue);\n}\n\nfunction estimateLineCount({\n text,\n charsPerLine,\n maxLines,\n}: {\n text: unknown;\n charsPerLine: number;\n maxLines: number;\n}) {\n const textLength = getGalleryTextLength(text);\n if (!textLength) return 0;\n return Math.max(1, Math.min(maxLines, Math.ceil(textLength / charsPerLine)));\n}\n\nfunction estimateGalleryDetailCellHeight({\n text,\n density,\n bentoColumns,\n}: {\n text: unknown;\n density?: string;\n bentoColumns: number;\n}) {\n const baseHeight = density === 'detailed' ? 54 : density === 'compact' ? 44 : 48;\n const charsPerLine = bentoColumns === 1\n ? (density === 'detailed' ? 32 : 26)\n : (density === 'detailed' ? 18 : 15);\n const maxLines = density === 'detailed' ? 3 : 2;\n const lineCount = estimateLineCount({ text, charsPerLine, maxLines });\n\n if (!lineCount) return baseHeight;\n return baseHeight + Math.max(0, lineCount - 1) * 16;\n}\n\nfunction estimateGalleryDetailGridHeight({\n columns,\n density,\n bentoColumns,\n}: {\n columns: Array<{ text: string }>;\n density?: string;\n bentoColumns: number;\n}) {\n if (!columns.length) return 0;\n\n const cellHeights = columns.map((column) => estimateGalleryDetailCellHeight({\n text: column.text,\n density,\n bentoColumns,\n }));\n\n if (bentoColumns === 1) {\n return 12 + cellHeights.reduce((sum, height) => sum + height, 0) + Math.max(0, columns.length - 1) * 8;\n }\n\n let totalHeight = 12;\n\n for (let index = 0; index < cellHeights.length; index += bentoColumns) {\n const rowHeights = cellHeights.slice(index, index + bentoColumns);\n totalHeight += Math.max(...rowHeights);\n if (index + bentoColumns < cellHeights.length) totalHeight += 8;\n }\n\n return totalHeight;\n}\n\nfunction getDefaultGalleryMasonryItemSize<Row>({\n row,\n columns,\n galleryFieldKey,\n galleryDensity,\n galleryBentoColumns,\n galleryDetailVisibility,\n galleryDetailLimit,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n isImageField,\n isAudioField,\n cardVariant,\n renderPreview,\n renderLeadingVisual,\n hiddenDetailFieldKeys,\n layout,\n resolveRecordVisual,\n}: {\n row: Row;\n columns: WorkbenchGalleryColumn[];\n galleryFieldKey?: string;\n galleryDensity?: string;\n galleryBentoColumns?: number;\n galleryDetailVisibility?: string;\n galleryDetailLimit?: number | string;\n getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n isMediaColumn: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isTitleCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n isSummaryCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n getDisplayText: (value: unknown) => unknown;\n isImageField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n isAudioField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n cardVariant?: string;\n renderPreview?: unknown;\n renderLeadingVisual?: unknown;\n hiddenDetailFieldKeys?: string[];\n layout?: { columnWidth?: number };\n resolveRecordVisual?: WorkbenchGalleryCardProps<Row>['resolveRecordVisual'];\n}) {\n const iconColumn = columns.find((column) => column.renderType === 'icon');\n const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)?.[iconColumn.key], row, iconColumn) : null;\n const selectedGalleryColumn = galleryFieldKey !== 'auto'\n ? columns.find((column) => column.key === galleryFieldKey && isMediaColumn(column, row))\n : null;\n const mediaColumn = selectedGalleryColumn || columns.find((column) => isMediaColumn(column, row)) || null;\n const mediaValue = mediaColumn ? getFieldValue(mediaColumn, row) : null;\n const isImageMedia = mediaColumn ? isImageField(mediaColumn, mediaValue) : false;\n const isAudioMedia = mediaColumn ? isAudioField(mediaColumn, mediaValue) : false;\n const hasDefaultLeadingVisual = Boolean(iconVisual);\n const hasLeadingVisual = Boolean(renderLeadingVisual) || hasDefaultLeadingVisual;\n const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n const titleCandidates = contentColumns.filter((column) => {\n if (!column || isMediaColumn(column, row) || !isTitleCandidate(column, row)) return false;\n const value = getFieldValue(column, row);\n return !(value === null || value === undefined || value === '');\n });\n const titleColumn = titleCandidates[0] || null;\n const titleText = titleColumn\n ? getGalleryFieldText({ column: titleColumn, row, getFieldValue, getDisplayText })\n : String(getDisplayText((row as any)?.linkKey || (row as any)?.id || ''));\n const summaryColumn = contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n const summaryText = getGalleryFieldText({ column, row, getFieldValue, getDisplayText });\n return summaryText.length > 12;\n }) || contentColumns.find((column) => {\n if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n return getGalleryTextLength(getGalleryFieldText({ column, row, getFieldValue, getDisplayText })) > 0;\n }) || null;\n const summaryText = summaryColumn ? getGalleryFieldText({ column: summaryColumn, row, getFieldValue, getDisplayText }) : '';\n const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n const detailColumns = contentColumns\n .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key))\n .map((column) => ({\n column,\n text: getGalleryFieldText({ column, row, getFieldValue, getDisplayText }),\n }));\n const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n density: galleryDensity,\n visibility: galleryDetailVisibility,\n limit: galleryDetailLimit,\n });\n const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n ? detailColumns.slice(0, resolvedDetailLimit)\n : detailColumns;\n const hiddenDetailCount = Math.max(detailColumns.length - visibleDetailColumns.length, 0);\n const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n const resolvedColumnWidth = layout?.columnWidth || getGalleryCardWidthMetrics(galleryDensity).ideal;\n\n if (cardVariant === 'image-only') {\n return {\n width: resolvedColumnWidth,\n height: Math.round(resolvedColumnWidth * 1.25),\n };\n }\n\n if (cardVariant === 'preview-only') {\n return {\n width: resolvedColumnWidth,\n height: Math.round(resolvedColumnWidth * 0.82),\n };\n }\n\n let estimatedHeight = galleryDensity === 'detailed' ? 84 : galleryDensity === 'compact' ? 64 : 72;\n\n if (typeof renderPreview === 'function') {\n estimatedHeight += galleryDensity === 'detailed' ? 188 : galleryDensity === 'compact' ? 140 : 164;\n } else if (isImageMedia) {\n estimatedHeight += Math.round(resolvedColumnWidth * (galleryDensity === 'detailed' ? 0.72 : 0.62)) + 12;\n } else if (isAudioMedia) {\n estimatedHeight += 92;\n }\n\n const titleLines = estimateLineCount({\n text: titleText,\n charsPerLine: galleryDensity === 'detailed' ? 26 : 24,\n maxLines: 2,\n }) || 1;\n const summaryLines = estimateLineCount({\n text: summaryText,\n charsPerLine: hasLeadingVisual ? 22 : (galleryDensity === 'detailed' ? 30 : 26),\n maxLines: galleryDensity === 'detailed' ? 4 : 2,\n });\n const textHeaderHeight = 26 + titleLines * 18 + (summaryLines > 0 ? summaryLines * 16 + 4 : 0);\n estimatedHeight += Math.max(hasLeadingVisual ? 56 : 0, textHeaderHeight);\n estimatedHeight += estimateGalleryDetailGridHeight({\n columns: visibleDetailColumns,\n density: galleryDensity,\n bentoColumns: resolvedBentoColumns,\n });\n\n if (hiddenDetailCount > 0) estimatedHeight += 18;\n if (!summaryText && visibleDetailColumns.length === 0) estimatedHeight += 24;\n\n return {\n width: resolvedColumnWidth,\n height: estimatedHeight,\n };\n}\n\nexport function WorkbenchGalleryView<Row = any>({\n rows = [],\n columns = [],\n onRowClick = () => {},\n selectedLinkKey,\n selectedRowKey,\n className,\n isMasonry = false,\n galleryLayoutMode = 'auto',\n galleryRailCardWidth,\n galleryGridColumns,\n galleryGridCardWidth,\n galleryMasonryColumnWidth,\n masonryPlacementStrategy = 'shelf',\n galleryFieldKey = 'auto',\n galleryDensity = 'comfortable',\n galleryBentoColumns = 2,\n galleryDetailVisibility = 'limit',\n galleryDetailLimit,\n shouldEnhanceMultimodal = true,\n getFieldValue,\n isMediaColumn,\n isTitleCandidate,\n isSummaryCandidate,\n getDisplayText,\n renderFieldValue,\n getImagePreviewSrc,\n isImageField,\n isAudioField,\n AudioPlayerComponent,\n cardVariant = 'default',\n renderPreview,\n renderMeta,\n renderLeadingVisual,\n resolveRecordVisual,\n hiddenDetailFieldKeys = [],\n labels,\n formatLabel,\n getMasonryItemSize,\n}: WorkbenchGalleryViewProps<Row>) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const { min: resolvedMinCardWidth, ideal: resolvedIdealCardWidth, max: resolvedMaxCardWidth } = getGalleryCardWidthMetrics(galleryDensity);\n const resolvedRailCardWidth = galleryRailCardWidth || resolvedMinCardWidth;\n const resolvedGridColumnCount = getNormalizedGalleryGridColumns(galleryGridColumns);\n const resolvedGridCardWidth = getNormalizedGalleryGridCardWidth(galleryGridCardWidth);\n const resolvedMasonryColumnWidth = galleryMasonryColumnWidth || resolvedMinCardWidth;\n const isRailLayout = galleryLayoutMode === 'rail';\n const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGalleryMediaColumn(column, row, {\n getFieldValue: resolvedGetFieldValue as any,\n shouldEnhanceMultimodal,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n })\n ));\n const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGalleryTitleCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n isDefaultGallerySummaryCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n ));\n const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, row: Row, { compact } = {}) => (\n <span>{resolvedGetDisplayText(resolvedGetFieldValue(column, row))}</span>\n ));\n\n useEffect(() => {\n if (isMasonry || isRailLayout || resolvedGridCardWidth) return undefined;\n const node = containerRef.current;\n if (!node) return undefined;\n\n const updateWidth = () => {\n const nextWidth = Math.round(node.getBoundingClientRect().width);\n setContainerWidth((prevWidth) => (prevWidth === nextWidth ? prevWidth : nextWidth));\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => updateWidth());\n observer.observe(node);\n return () => observer.disconnect();\n }\n\n window.addEventListener('resize', updateWidth);\n return () => window.removeEventListener('resize', updateWidth);\n }, [isMasonry, isRailLayout, resolvedGridCardWidth]);\n\n const layoutStyle = useMemo(() => getGalleryGridLayoutStyle({\n isRailLayout,\n railCardWidth: resolvedRailCardWidth,\n fixedCardWidth: resolvedGridCardWidth,\n fixedColumnCount: resolvedGridColumnCount,\n containerWidth,\n rowCount: rows.length,\n minCardWidth: resolvedMinCardWidth,\n idealCardWidth: resolvedIdealCardWidth,\n maxCardWidth: resolvedMaxCardWidth,\n }), [\n containerWidth,\n isRailLayout,\n resolvedGridCardWidth,\n resolvedGridColumnCount,\n resolvedIdealCardWidth,\n resolvedMaxCardWidth,\n resolvedMinCardWidth,\n resolvedRailCardWidth,\n rows.length,\n ]);\n\n const renderGalleryCard = (row: Row, rowIndex: number) => (\n <WorkbenchGalleryCard\n key={(row as any)?.id || (row as any)?.linkKey || rowIndex}\n row={row}\n columns={columns}\n onClick={() => onRowClick(row, rowIndex)}\n isSelected={String((row as any)?.linkKey || (row as any)?.id || '') === String(selectedRowKey || selectedLinkKey || '')}\n isMasonry={isMasonry}\n galleryFieldKey={galleryFieldKey}\n galleryDensity={galleryDensity}\n galleryBentoColumns={galleryBentoColumns}\n galleryDetailVisibility={galleryDetailVisibility}\n galleryDetailLimit={galleryDetailLimit}\n shouldEnhanceMultimodal={shouldEnhanceMultimodal}\n getFieldValue={resolvedGetFieldValue as any}\n isMediaColumn={resolvedIsMediaColumn as any}\n isTitleCandidate={resolvedIsTitleCandidate as any}\n isSummaryCandidate={resolvedIsSummaryCandidate as any}\n getDisplayText={resolvedGetDisplayText}\n renderFieldValue={resolvedRenderFieldValue as any}\n getImagePreviewSrc={getImagePreviewSrc}\n isImageField={resolvedIsImageField}\n isAudioField={resolvedIsAudioField}\n AudioPlayerComponent={AudioPlayerComponent}\n cardVariant={cardVariant}\n renderPreview={renderPreview}\n renderMeta={renderMeta}\n renderLeadingVisual={renderLeadingVisual}\n resolveRecordVisual={resolveRecordVisual}\n hiddenDetailFieldKeys={hiddenDetailFieldKeys}\n labels={labels}\n formatLabel={formatLabel}\n />\n );\n\n if (isMasonry) {\n return (\n <WorkbenchMasonryLayout\n items={rows}\n className={className}\n gap={GALLERY_GRID_GAP_PX}\n columnWidth={resolvedMasonryColumnWidth}\n placementStrategy={masonryPlacementStrategy}\n getItemKey={(row: Row, rowIndex: number) => (row as any)?.id || (row as any)?.linkKey || rowIndex}\n getItemSize={(row: Row, layout) => {\n const defaultSize = getDefaultGalleryMasonryItemSize({\n row,\n columns,\n galleryFieldKey,\n galleryDensity,\n galleryBentoColumns,\n galleryDetailVisibility,\n galleryDetailLimit,\n getFieldValue: resolvedGetFieldValue as any,\n isMediaColumn: resolvedIsMediaColumn as any,\n isTitleCandidate: resolvedIsTitleCandidate as any,\n isSummaryCandidate: resolvedIsSummaryCandidate as any,\n getDisplayText: resolvedGetDisplayText,\n isImageField: resolvedIsImageField,\n isAudioField: resolvedIsAudioField,\n cardVariant,\n renderPreview,\n renderLeadingVisual,\n hiddenDetailFieldKeys,\n layout,\n resolveRecordVisual,\n });\n\n if (typeof getMasonryItemSize !== 'function') return defaultSize;\n const customSize = getMasonryItemSize(row, { ...layout, defaultSize }) || {};\n return {\n ...defaultSize,\n ...customSize,\n };\n }}\n renderItem={(row: Row) => renderGalleryCard(row, rows.indexOf(row))}\n />\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={cn(\n isRailLayout ? 'grid grid-flow-col items-center gap-3' : 'grid items-start gap-3',\n className,\n )}\n style={layoutStyle}\n >\n {rows.map((row, rowIndex) => renderGalleryCard(row, rowIndex))}\n </div>\n );\n}\n","import { useCallback, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n useDraggable,\n useDroppable,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n} from '@dnd-kit/core';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchLaneColumn<ColumnId extends string = string> {\n id: ColumnId;\n label?: ReactNode;\n icon?: ReactNode;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n badgeClassName?: string;\n iconClassName?: string;\n}\n\nexport interface WorkbenchLaneClassNames {\n root?: string;\n column?: string;\n columnHeader?: string;\n columnIcon?: string;\n columnBadge?: string;\n columnCount?: string;\n columnBody?: string;\n cardWrapper?: string;\n overlayWrapper?: string;\n emptyColumn?: string;\n}\n\nexport interface WorkbenchLaneRenderCardContext<Row = any, ColumnId extends string = string> {\n row: Row;\n rowIndex: number;\n column: WorkbenchLaneColumn<ColumnId>;\n isDragging: boolean;\n isOverlay: boolean;\n}\n\nexport interface WorkbenchLaneViewProps<Row = any, ColumnId extends string = string> {\n rows?: Row[];\n columns?: Array<WorkbenchLaneColumn<ColumnId>>;\n getRowId?: (row: Row, rowIndex: number) => string;\n getColumnId?: (row: Row, rowIndex: number) => ColumnId;\n renderCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n renderOverlayCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n onMoveRow?: (rowId: string, nextColumnId: ColumnId, row: Row) => void;\n emptyColumn?: ReactNode;\n activationDistance?: number;\n columnWidth?: number | string;\n columnMinHeight?: number | string;\n className?: string;\n classNames?: WorkbenchLaneClassNames;\n style?: CSSProperties;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction defaultGetRowId(row: any, rowIndex: number) {\n return String(row?.id ?? row?.key ?? rowIndex);\n}\n\nfunction defaultGetColumnId<ColumnId extends string = string>(row: any) {\n return String(row?.columnId ?? row?.status ?? '') as ColumnId;\n}\n\nfunction defaultRenderCard<Row>(row: Row) {\n const value = (row as any)?.title ?? (row as any)?.name ?? (row as any)?.id ?? 'Untitled';\n return (\n <div className=\"rounded-lg border border-border/70 bg-card px-3 py-2 text-sm text-foreground shadow-sm\">\n {String(value)}\n </div>\n );\n}\n\ninterface WorkbenchLaneDraggableCardProps<Row, ColumnId extends string> {\n row: Row;\n rowId: string;\n rowIndex: number;\n column: WorkbenchLaneColumn<ColumnId>;\n classNames?: WorkbenchLaneClassNames;\n renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneDraggableCard<Row, ColumnId extends string>({\n row,\n rowId,\n rowIndex,\n column,\n classNames,\n renderCard,\n}: WorkbenchLaneDraggableCardProps<Row, ColumnId>) {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({ id: rowId });\n\n return (\n <div\n ref={setNodeRef}\n {...listeners}\n {...attributes}\n className={cn('touch-none', classNames?.cardWrapper)}\n >\n {renderCard(row, { row, rowIndex, column, isDragging, isOverlay: false })}\n </div>\n );\n}\n\ninterface WorkbenchLaneColumnViewProps<Row, ColumnId extends string> {\n column: WorkbenchLaneColumn<ColumnId>;\n columnRows: Array<{ row: Row; rowIndex: number; rowId: string }>;\n columnWidth?: number | string;\n columnMinHeight?: number | string;\n emptyColumn?: ReactNode;\n classNames?: WorkbenchLaneClassNames;\n renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneColumnView<Row, ColumnId extends string>({\n column,\n columnRows,\n columnWidth,\n columnMinHeight,\n emptyColumn,\n classNames,\n renderCard,\n}: WorkbenchLaneColumnViewProps<Row, ColumnId>) {\n const { setNodeRef, isOver } = useDroppable({ id: column.id });\n\n return (\n <section\n className={cn(\n 'flex shrink-0 flex-col rounded-xl border border-border/60 bg-card p-2 shadow-sm',\n classNames?.column,\n column.className,\n )}\n style={{ width: toCssSize(columnWidth) ?? '280px' }}\n >\n <div className={cn('flex h-10 items-center gap-2 px-1', classNames?.columnHeader, column.headerClassName)}>\n {column.icon ? (\n <span className={cn('inline-flex h-4 w-4 items-center justify-center text-muted-foreground', classNames?.columnIcon, column.iconClassName)}>\n {column.icon}\n </span>\n ) : null}\n <span className={cn('inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold bg-muted text-muted-foreground', classNames?.columnBadge, column.badgeClassName)}>\n {column.label ?? column.id}\n </span>\n <span className={cn('text-xs text-muted-foreground', classNames?.columnCount)}>{columnRows.length}</span>\n </div>\n <div\n ref={setNodeRef}\n className={cn(\n 'mt-1 flex min-h-[200px] flex-1 flex-col gap-2 overflow-y-auto rounded-lg p-1 transition-colors [scrollbar-width:thin]',\n isOver && 'bg-accent/60',\n classNames?.columnBody,\n column.bodyClassName,\n )}\n style={{ minHeight: toCssSize(columnMinHeight) }}\n >\n {columnRows.length ? columnRows.map(({ row, rowIndex, rowId }) => (\n <WorkbenchLaneDraggableCard\n key={rowId}\n row={row}\n rowId={rowId}\n rowIndex={rowIndex}\n column={column}\n classNames={classNames}\n renderCard={renderCard}\n />\n )) : emptyColumn ? (\n <div className={cn('flex min-h-24 items-center justify-center rounded-lg border border-dashed border-border/60 px-3 py-4 text-xs text-muted-foreground', classNames?.emptyColumn)}>\n {emptyColumn}\n </div>\n ) : null}\n </div>\n </section>\n );\n}\n\nexport function WorkbenchLaneView<Row = any, ColumnId extends string = string>({\n rows = [],\n columns = [],\n getRowId = defaultGetRowId,\n getColumnId = defaultGetColumnId<ColumnId>,\n renderCard = defaultRenderCard,\n renderOverlayCard,\n onMoveRow,\n emptyColumn,\n activationDistance = 5,\n columnWidth = 280,\n columnMinHeight,\n className,\n classNames,\n style,\n}: WorkbenchLaneViewProps<Row, ColumnId>) {\n const [activeRowId, setActiveRowId] = useState<string | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: activationDistance } }));\n const columnMap = useMemo(() => new Map(columns.map((column) => [column.id, column])), [columns]);\n const rowEntries = useMemo(() => rows.map((row, rowIndex) => ({\n row,\n rowIndex,\n rowId: getRowId(row, rowIndex),\n columnId: getColumnId(row, rowIndex),\n })), [getColumnId, getRowId, rows]);\n const activeEntry = activeRowId ? rowEntries.find((entry) => entry.rowId === activeRowId) : undefined;\n const rowsByColumn = useMemo(() => {\n const next = new Map<ColumnId, Array<{ row: Row; rowIndex: number; rowId: string }>>();\n columns.forEach((column) => next.set(column.id, []));\n rowEntries.forEach(({ row, rowIndex, rowId, columnId }) => {\n next.get(columnId)?.push({ row, rowIndex, rowId });\n });\n return next;\n }, [columns, rowEntries]);\n const activeColumn = activeEntry ? columnMap.get(activeEntry.columnId) : undefined;\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveRowId(String(event.active.id));\n }, []);\n\n const handleDragEnd = useCallback((event: DragEndEvent) => {\n setActiveRowId(null);\n const rowId = String(event.active.id);\n const nextColumnId = String(event.over?.id ?? '') as ColumnId;\n const activeRow = rowEntries.find((entry) => entry.rowId === rowId);\n if (!activeRow || !columnMap.has(nextColumnId) || activeRow.columnId === nextColumnId) return;\n onMoveRow?.(rowId, nextColumnId, activeRow.row);\n }, [columnMap, onMoveRow, rowEntries]);\n\n const handleDragCancel = useCallback(() => {\n setActiveRowId(null);\n }, []);\n\n return (\n <DndContext sensors={sensors} onDragStart={handleDragStart} onDragEnd={handleDragEnd} onDragCancel={handleDragCancel}>\n <div\n className={cn('flex min-h-0 flex-1 gap-4 overflow-x-auto p-4 [scrollbar-width:thin]', classNames?.root, className)}\n style={style}\n >\n {columns.map((column) => (\n <WorkbenchLaneColumnView\n key={column.id}\n column={column}\n columnRows={rowsByColumn.get(column.id) || []}\n columnWidth={columnWidth}\n columnMinHeight={columnMinHeight}\n emptyColumn={emptyColumn}\n classNames={classNames}\n renderCard={renderCard}\n />\n ))}\n </div>\n <DragOverlay>\n {activeEntry && activeColumn ? (\n <div className={cn(classNames?.overlayWrapper)}>\n {(renderOverlayCard || renderCard)(activeEntry.row, {\n row: activeEntry.row,\n rowIndex: activeEntry.rowIndex,\n column: activeColumn,\n isDragging: false,\n isOverlay: true,\n })}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchMetricItem {\n id: string;\n label: ReactNode;\n value: ReactNode;\n progress?: number;\n description?: ReactNode;\n}\n\nexport type WorkbenchMetricGridVariant = \"bars\" | \"cards\" | \"list\";\nexport type WorkbenchMetricGridDensity = \"compact\" | \"comfortable\";\n\nexport interface WorkbenchMetricGridProps {\n items: WorkbenchMetricItem[];\n variant?: WorkbenchMetricGridVariant;\n density?: WorkbenchMetricGridDensity;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n itemClassName?: string;\n}\n\nconst normalizeProgress = (value: number | undefined) => {\n if (!Number.isFinite(value)) return undefined;\n return Math.min(1, Math.max(0, Number(value)));\n};\n\nexport function WorkbenchMetricGrid({\n items,\n variant = \"bars\",\n density = \"comfortable\",\n emptyState = null,\n ariaLabel = \"Metrics\",\n className,\n itemClassName,\n}: WorkbenchMetricGridProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n if (variant === \"list\") {\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => (\n <div\n key={item.id}\n className={cn(\n \"flex min-w-0 items-start justify-between gap-4\",\n density === \"compact\" ? \"text-xs\" : \"text-sm\",\n itemClassName,\n )}\n >\n <dt className=\"min-w-0 text-muted-foreground\">\n <span className=\"block truncate\">{item.label}</span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-0.5 block text-[0.6875rem] leading-4 text-muted-foreground/80\">\n {item.description}\n </span>\n ) : null}\n </dt>\n <dd className=\"shrink-0 font-semibold tabular-nums text-foreground\">\n {item.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))]\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => (\n <div\n key={item.id}\n className={cn(\n \"min-w-0 rounded-lg border border-border/70 bg-card text-card-foreground\",\n density === \"compact\" ? \"p-3\" : \"p-4\",\n itemClassName,\n )}\n >\n <dt className=\"truncate text-xs font-medium text-muted-foreground\">\n {item.label}\n </dt>\n <dd\n className={cn(\n \"font-semibold tabular-nums text-foreground\",\n density === \"compact\" ? \"mt-1.5 text-xl\" : \"mt-2 text-2xl\",\n )}\n >\n {item.value}\n </dd>\n {hasRenderableNode(item.description) ? (\n <div className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {item.description}\n </div>\n ) : null}\n </div>\n ))}\n </dl>\n );\n }\n\n return (\n <dl\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-metric-grid\"\n data-metric-variant={variant}\n data-metric-density={density}\n className={cn(\n \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr))]\",\n density === \"compact\" ? \"gap-2\" : \"gap-3\",\n className,\n )}\n >\n {items.map((item) => {\n const progress = normalizeProgress(item.progress);\n return (\n <div key={item.id} className={cn(\"min-w-0\", itemClassName)}>\n <div\n role={progress === undefined ? undefined : \"meter\"}\n aria-label={\n progress === undefined ? undefined : String(item.label)\n }\n aria-valuemin={progress === undefined ? undefined : 0}\n aria-valuemax={progress === undefined ? undefined : 100}\n aria-valuenow={\n progress === undefined ? undefined : Math.round(progress * 100)\n }\n className={cn(\n \"overflow-hidden rounded-full bg-muted\",\n density === \"compact\" ? \"h-1.5\" : \"h-2\",\n )}\n >\n {progress === undefined ? null : (\n <span\n className=\"block h-full rounded-full bg-primary transition-[width] duration-200 motion-reduce:transition-none\"\n style={{\n width: `${Math.max(progress > 0 ? 4 : 0, progress * 100)}%`,\n }}\n />\n )}\n </div>\n <div className=\"mt-1.5 flex min-w-0 items-baseline justify-between gap-2\">\n <dt className=\"truncate text-[0.6875rem] text-muted-foreground\">\n {item.label}\n </dt>\n <dd className=\"shrink-0 text-xs font-semibold tabular-nums text-foreground\">\n {item.value}\n </dd>\n </div>\n </div>\n );\n })}\n </dl>\n );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\n\nexport interface WorkbenchRelationshipNode {\n id: string;\n label: string;\n meta?: string;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRelationshipEdge {\n id?: string;\n sourceId: string;\n targetId: string;\n label?: string;\n}\n\nexport interface WorkbenchRelationshipGraphProps {\n nodes: WorkbenchRelationshipNode[];\n edges: WorkbenchRelationshipEdge[];\n selectedNodeId?: string;\n onNodeSelect?: (node: WorkbenchRelationshipNode) => void;\n width?: number;\n height?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n variant?: \"default\" | \"radar\";\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n primary: \"fill-primary/10 stroke-primary text-primary\",\n secondary:\n \"fill-secondary stroke-secondary-foreground text-secondary-foreground\",\n accent: \"fill-accent stroke-accent-foreground text-accent-foreground\",\n muted: \"fill-muted stroke-muted-foreground text-muted-foreground\",\n};\n\nconst radarToneVariable: Record<WorkbenchVisualizationTone, string> = {\n primary: \"--radar-series-one\",\n secondary: \"--radar-series-two\",\n accent: \"--radar-series-three\",\n muted: \"--radar-series-four\",\n};\n\nconst radarToneFallback: Record<WorkbenchVisualizationTone, string> = {\n primary: \"var(--primary)\",\n secondary: \"var(--secondary-foreground)\",\n accent: \"var(--accent-foreground)\",\n muted: \"var(--muted-foreground)\",\n};\n\nconst radarToneColor = (tone: WorkbenchVisualizationTone, alpha = 1) =>\n `hsl(var(${radarToneVariable[tone]}, ${radarToneFallback[tone]}) / ${alpha})`;\n\nconst activateNode = (\n event: KeyboardEvent<SVGGElement>,\n node: WorkbenchRelationshipNode,\n onNodeSelect?: (node: WorkbenchRelationshipNode) => void,\n) => {\n if (!onNodeSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onNodeSelect(node);\n};\n\nexport function WorkbenchRelationshipGraph({\n nodes,\n edges,\n selectedNodeId,\n onNodeSelect,\n width = 900,\n height = 440,\n emptyState = null,\n ariaLabel = \"Relationship graph\",\n className,\n variant = \"default\",\n}: WorkbenchRelationshipGraphProps) {\n if (!nodes.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const radar = variant === \"radar\";\n const radius = Math.min(width, height) * (radar ? 0.37 : 0.35);\n const selectedIndex = selectedNodeId\n ? nodes.findIndex((node) => node.id === selectedNodeId)\n : -1;\n const orbitNodes = selectedIndex >= 0\n ? nodes.filter((_, index) => index !== selectedIndex)\n : nodes;\n const positions = new Map(\n nodes.map((node, index) => {\n if (nodes.length === 1)\n return [node.id, { x: width / 2, y: height / 2 }] as const;\n if (radar && index === selectedIndex) {\n return [node.id, { x: width / 2, y: height / 2 }] as const;\n }\n const orbitIndex = orbitNodes.findIndex((item) => item.id === node.id);\n const angle = (Math.PI * 2 * orbitIndex) / orbitNodes.length - Math.PI / 2;\n return [\n node.id,\n {\n x: width / 2 + Math.cos(angle) * radius,\n y: height / 2 + Math.sin(angle) * radius,\n },\n ] as const;\n }),\n );\n\n return (\n <div\n data-monkeys-component=\"workbench-relationship-graph\"\n data-workbench-relationship-variant={variant}\n className={cn(\n \"relative min-w-0 overflow-hidden rounded-lg border\",\n radar\n ? \"min-h-[42rem]\"\n : \"overflow-x-auto border-border/70 bg-card\",\n className,\n )}\n style={radar ? {\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n backgroundImage:\n \"linear-gradient(hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), radial-gradient(circle at center, hsl(var(--primary) / 0.1), transparent 45%)\",\n backgroundSize: \"4rem 4rem, 4rem 4rem, 100% 100%\",\n } : undefined}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className={cn(radar ? \"absolute inset-0 size-full\" : \"min-w-[42rem]\")}\n preserveAspectRatio={radar ? \"xMidYMid meet\" : undefined}\n role=\"img\"\n aria-label={ariaLabel}\n >\n {edges.map((edge, index) => {\n const source = positions.get(edge.sourceId);\n const target = positions.get(edge.targetId);\n if (!source || !target) return null;\n return (\n <line\n key={edge.id || `${edge.sourceId}:${edge.targetId}:${index}`}\n x1={source.x}\n y1={source.y}\n x2={target.x}\n y2={target.y}\n className={radar ? undefined : \"stroke-border\"}\n strokeWidth={radar ? \"2\" : \"1.5\"}\n style={radar ? {\n stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.46)\",\n filter: \"drop-shadow(0 0 0.35rem hsl(var(--primary) / 0.34))\",\n } : undefined}\n >\n <title>\n {edge.label || `${edge.sourceId} to ${edge.targetId}`}\n </title>\n </line>\n );\n })}\n {nodes.map((node) => {\n const point = positions.get(node.id)!;\n const selected = node.id === selectedNodeId;\n const tone = node.tone || \"muted\";\n const radarNodeStyle: CSSProperties | undefined = radar ? {\n color: radarToneColor(tone),\n } : undefined;\n return (\n <g\n key={node.id}\n transform={`translate(${point.x}, ${point.y})`}\n role={onNodeSelect ? \"button\" : undefined}\n tabIndex={onNodeSelect ? 0 : undefined}\n aria-label={\n node.meta ? `${node.label}, ${node.meta}` : node.label\n }\n aria-pressed={onNodeSelect ? selected : undefined}\n onClick={onNodeSelect ? () => onNodeSelect(node) : undefined}\n onKeyDown={(event) => activateNode(event, node, onNodeSelect)}\n className={cn(\n radar ? \"outline-none\" : toneClassNames[tone],\n onNodeSelect && \"cursor-pointer outline-none\",\n )}\n style={radarNodeStyle}\n >\n <circle\n r={radar && selected ? \"50\" : radar ? \"40\" : \"36\"}\n className={cn(\n \"stroke-1 transition-[stroke-width] duration-150 motion-reduce:transition-none\",\n selected && \"stroke-[3]\",\n )}\n style={radar ? {\n fill: radarToneColor(tone, selected ? 0.22 : 0.12),\n stroke: radarToneColor(tone, selected ? 1 : 0.78),\n filter: `drop-shadow(0 0 ${selected ? \"1.4rem\" : \"0.75rem\"} ${radarToneColor(tone, 0.62)})`,\n } : undefined}\n />\n <text\n textAnchor=\"middle\"\n y={node.meta ? -3 : 4}\n className={cn(\n \"pointer-events-none fill-current font-semibold\",\n radar ? \"text-[0.875rem]\" : \"text-xs\",\n )}\n >\n {node.label.slice(0, 18)}\n </text>\n {node.meta ? (\n <text\n textAnchor=\"middle\"\n y=\"16\"\n className={cn(\n \"pointer-events-none text-[0.625rem]\",\n radar ? \"fill-current opacity-70\" : \"fill-muted-foreground\",\n )}\n >\n {node.meta.slice(0, 22)}\n </text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchVisualizationTone =\n \"primary\" | \"secondary\" | \"accent\" | \"muted\";\n\nexport interface WorkbenchScatterPoint {\n id: string;\n label: string;\n x: number;\n y: number;\n size?: number;\n description?: string;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchScatterAxis {\n label: string;\n min?: number;\n max?: number;\n}\n\nexport interface WorkbenchScatterThresholds {\n x?: number;\n y?: number;\n}\n\nexport interface WorkbenchScatterPlotProps {\n points: WorkbenchScatterPoint[];\n xAxis: WorkbenchScatterAxis;\n yAxis: WorkbenchScatterAxis;\n thresholds?: WorkbenchScatterThresholds;\n selectedPointId?: string;\n onPointSelect?: (point: WorkbenchScatterPoint) => void;\n width?: number;\n height?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n primary: \"fill-primary stroke-primary\",\n secondary: \"fill-secondary stroke-secondary-foreground\",\n accent: \"fill-accent stroke-accent-foreground\",\n muted: \"fill-muted stroke-muted-foreground\",\n};\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n const candidates = finiteValues(values);\n const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n if (lower === upper) return [lower, upper + 1] as const;\n return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n value: number,\n domain: readonly [number, number],\n start: number,\n end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst activatePoint = (\n event: KeyboardEvent<SVGGElement>,\n point: WorkbenchScatterPoint,\n onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onPointSelect(point);\n};\n\nexport function WorkbenchScatterPlot({\n points,\n xAxis,\n yAxis,\n thresholds,\n selectedPointId,\n onPointSelect,\n width = 900,\n height = 420,\n emptyState = null,\n ariaLabel = `${xAxis.label} by ${yAxis.label}`,\n className,\n}: WorkbenchScatterPlotProps) {\n const validPoints = points.filter(\n (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n );\n if (!validPoints.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const padding = 56;\n const xDomain = getDomain(\n validPoints.map((point) => point.x),\n xAxis.min,\n xAxis.max,\n );\n const yDomain = getDomain(\n validPoints.map((point) => point.y),\n yAxis.min,\n yAxis.max,\n );\n const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n const plotLeft = padding;\n const plotRight = width - padding;\n const plotTop = padding;\n const plotBottom = height - padding;\n const xThreshold = Number.isFinite(thresholds?.x)\n ? scale(Number(thresholds?.x), xDomain, plotLeft, plotRight)\n : undefined;\n const yThreshold = Number.isFinite(thresholds?.y)\n ? scale(Number(thresholds?.y), yDomain, plotBottom, plotTop)\n : undefined;\n\n return (\n <div\n data-monkeys-component=\"workbench-scatter-plot\"\n className={cn(\n \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-3\",\n className,\n )}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n className=\"min-w-[42rem]\"\n role=\"img\"\n aria-label={ariaLabel}\n >\n <line\n x1={plotLeft}\n y1={plotBottom}\n x2={plotRight}\n y2={plotBottom}\n className=\"stroke-border\"\n />\n <line\n x1={plotLeft}\n y1={plotTop}\n x2={plotLeft}\n y2={plotBottom}\n className=\"stroke-border\"\n />\n {xThreshold === undefined ? null : (\n <line\n x1={clamp(xThreshold, plotLeft, plotRight)}\n y1={plotTop}\n x2={clamp(xThreshold, plotLeft, plotRight)}\n y2={plotBottom}\n className=\"stroke-muted-foreground/50\"\n strokeDasharray=\"5 5\"\n />\n )}\n {yThreshold === undefined ? null : (\n <line\n x1={plotLeft}\n y1={clamp(yThreshold, plotTop, plotBottom)}\n x2={plotRight}\n y2={clamp(yThreshold, plotTop, plotBottom)}\n className=\"stroke-muted-foreground/50\"\n strokeDasharray=\"5 5\"\n />\n )}\n <text\n x={width / 2}\n y={height - 12}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-xs\"\n >\n {xAxis.label}\n </text>\n <text\n x=\"16\"\n y={height / 2}\n textAnchor=\"middle\"\n transform={`rotate(-90 16 ${height / 2})`}\n className=\"fill-muted-foreground text-xs\"\n >\n {yAxis.label}\n </text>\n {validPoints.map((point) => {\n const x = clamp(\n scale(point.x, xDomain, plotLeft, plotRight),\n plotLeft,\n plotRight,\n );\n const y = clamp(\n scale(point.y, yDomain, plotBottom, plotTop),\n plotTop,\n plotBottom,\n );\n const radius =\n point.size === undefined\n ? 9\n : clamp(scale(point.size, sizeDomain, 7, 18), 7, 18);\n const selected = selectedPointId === point.id;\n return (\n <g\n key={point.id}\n transform={`translate(${x}, ${y})`}\n role={onPointSelect ? \"button\" : undefined}\n tabIndex={onPointSelect ? 0 : undefined}\n aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n aria-pressed={onPointSelect ? selected : undefined}\n onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n >\n <circle\n r={radius}\n className={cn(\n \"stroke-1 opacity-80 transition-opacity duration-150 motion-reduce:transition-none\",\n toneClassNames[point.tone || \"primary\"],\n selected ? \"opacity-100 stroke-[3]\" : \"hover:opacity-100\",\n )}\n />\n <text\n y={-radius - 7}\n textAnchor=\"middle\"\n className=\"pointer-events-none fill-foreground text-[0.6875rem] font-semibold\"\n >\n {point.label.slice(0, 24)}\n </text>\n <title>{point.description || point.label}</title>\n </g>\n );\n })}\n </svg>\n </div>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchJourneyItemState = \"complete\" | \"current\" | \"upcoming\";\n\nexport interface WorkbenchJourneyItem {\n id: string;\n label: ReactNode;\n eyebrow?: ReactNode;\n state?: WorkbenchJourneyItemState;\n disabled?: boolean;\n}\n\nexport interface WorkbenchJourneyNavigationProps {\n items: WorkbenchJourneyItem[];\n onItemSelect?: (item: WorkbenchJourneyItem) => void;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchJourneyItem,\n onItemSelect?: (item: WorkbenchJourneyItem) => void,\n) => {\n if (!onItemSelect || item.disabled || (event.key !== \"Enter\" && event.key !== \" \"))\n return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchJourneyNavigation({\n items,\n onItemSelect,\n ariaLabel = \"Journey\",\n className,\n}: WorkbenchJourneyNavigationProps) {\n return (\n <nav\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-journey-navigation\"\n className={cn(\n \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-2\",\n className,\n )}\n >\n <ol className=\"flex min-w-max items-stretch gap-1\">\n {items.map((item, index) => {\n const state = item.state || \"upcoming\";\n return (\n <li key={item.id} className=\"flex items-center\">\n {index ? (\n <span className=\"mx-1 h-px w-5 bg-border\" aria-hidden=\"true\" />\n ) : null}\n <button\n type=\"button\"\n disabled={item.disabled}\n aria-current={state === \"current\" ? \"page\" : undefined}\n onClick={\n onItemSelect && !item.disabled\n ? () => onItemSelect(item)\n : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"min-w-28 rounded-md border px-3 py-2 text-left outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-reduce:transition-none\",\n state === \"current\" &&\n \"border-primary bg-primary text-primary-foreground\",\n state === \"complete\" &&\n \"border-primary/30 bg-primary/10 text-foreground\",\n state === \"upcoming\" &&\n \"border-transparent bg-muted/50 text-muted-foreground\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {hasRenderableNode(item.eyebrow) ? (\n <span\n className={cn(\n \"block text-[0.625rem] font-semibold uppercase tracking-[0.14em]\",\n state === \"current\"\n ? \"text-primary-foreground/75\"\n : \"text-muted-foreground\",\n )}\n >\n {item.eyebrow}\n </span>\n ) : null}\n <span className=\"mt-0.5 block text-xs font-semibold\">\n {item.label}\n </span>\n </button>\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchRankedListMetric {\n id: string;\n label: ReactNode;\n value: ReactNode;\n}\n\nexport interface WorkbenchRankedListItem {\n id: string;\n label: ReactNode;\n description?: ReactNode;\n score?: ReactNode;\n tags?: ReactNode[];\n metrics?: WorkbenchRankedListMetric[];\n leading?: ReactNode;\n trailing?: ReactNode;\n}\n\nexport interface WorkbenchRankedListProps {\n items: WorkbenchRankedListItem[];\n selectedItemId?: string;\n onItemSelect?: (item: WorkbenchRankedListItem) => void;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchRankedListItem,\n onItemSelect?: (item: WorkbenchRankedListItem) => void,\n) => {\n if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchRankedList({\n items,\n selectedItemId,\n onItemSelect,\n emptyState = null,\n ariaLabel = \"Ranked items\",\n className,\n}: WorkbenchRankedListProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ol\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-ranked-list\"\n className={cn(\"grid min-w-0 gap-2\", className)}\n >\n {items.map((item, index) => {\n const selected = selectedItemId === item.id;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n aria-pressed={onItemSelect ? selected : undefined}\n onClick={\n onItemSelect ? () => onItemSelect(item) : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"grid w-full min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-lg border bg-card p-3 text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary bg-primary/5\"\n : \"border-border/70 hover:border-primary/40 hover:bg-accent/50\",\n !onItemSelect && \"cursor-default\",\n )}\n >\n <span className=\"flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold tabular-nums text-muted-foreground\">\n {item.leading || index + 1}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate text-sm font-semibold text-foreground\">\n {item.label}\n </span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {item.tags?.length ? (\n <span className=\"mt-2 flex flex-wrap gap-1.5\">\n {item.tags.map((tag, tagIndex) => (\n <span\n key={`${item.id}:tag:${tagIndex}`}\n className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] font-medium text-secondary-foreground\"\n >\n {tag}\n </span>\n ))}\n </span>\n ) : null}\n {item.metrics?.length ? (\n <span className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 sm:grid-cols-4\">\n {item.metrics.map((metric) => (\n <span key={metric.id} className=\"min-w-0\">\n <span className=\"block truncate text-[0.625rem] text-muted-foreground\">\n {metric.label}\n </span>\n <span className=\"block text-xs font-semibold tabular-nums text-foreground\">\n {metric.value}\n </span>\n </span>\n ))}\n </span>\n ) : null}\n </span>\n <span className=\"shrink-0 text-right\">\n {hasRenderableNode(item.score) ? (\n <span className=\"block text-lg font-semibold tabular-nums text-primary\">\n {item.score}\n </span>\n ) : null}\n {hasRenderableNode(item.trailing) ? (\n <span className=\"mt-1 block text-muted-foreground\">\n {item.trailing}\n </span>\n ) : null}\n </span>\n </button>\n </li>\n );\n })}\n </ol>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchSelectionTrayItem {\n id: string;\n label: ReactNode;\n meta?: ReactNode;\n}\n\nexport interface WorkbenchSelectionTrayProps {\n title: ReactNode;\n description?: ReactNode;\n items: WorkbenchSelectionTrayItem[];\n onRemove?: (item: WorkbenchSelectionTrayItem) => void;\n removeLabel?: (item: WorkbenchSelectionTrayItem) => string;\n actions?: ReactNode;\n emptyState?: ReactNode;\n className?: string;\n}\n\nexport function WorkbenchSelectionTray({\n title,\n description,\n items,\n onRemove,\n removeLabel = () => \"Remove\",\n actions,\n emptyState = null,\n className,\n}: WorkbenchSelectionTrayProps) {\n return (\n <section\n data-monkeys-component=\"workbench-selection-tray\"\n className={cn(\n \"rounded-lg border border-border/70 bg-card p-4 text-card-foreground\",\n className,\n )}\n >\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h2 className=\"text-sm font-semibold text-foreground\">{title}</h2>\n {hasRenderableNode(description) ? (\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n <span className=\"rounded-full bg-primary/10 px-2.5 py-1 text-xs font-semibold tabular-nums text-primary\">\n {items.length}\n </span>\n </div>\n {items.length ? (\n <ul className=\"mt-3 flex flex-wrap gap-2\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex max-w-full items-center gap-2 rounded-full border border-border bg-background px-3 py-1.5 text-xs text-foreground\"\n >\n <span className=\"min-w-0 truncate font-medium\">{item.label}</span>\n {hasRenderableNode(item.meta) ? (\n <span className=\"shrink-0 text-muted-foreground\">{item.meta}</span>\n ) : null}\n {onRemove ? (\n <button\n type=\"button\"\n aria-label={removeLabel(item)}\n onClick={() => onRemove(item)}\n className=\"rounded-full px-1 text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\"\n >\n ×\n </button>\n ) : null}\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"mt-3 rounded-md border border-dashed border-border px-4 py-5 text-center text-xs text-muted-foreground\">\n {emptyState}\n </div>\n )}\n {hasRenderableNode(actions) ? (\n <div className=\"mt-4 flex flex-wrap justify-end gap-2 border-t border-border pt-4\">\n {actions}\n </div>\n ) : null}\n </section>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchEvidenceItem {\n id: string;\n title: ReactNode;\n description?: ReactNode;\n source?: ReactNode;\n timestamp?: ReactNode;\n marker?: ReactNode;\n action?: ReactNode;\n}\n\nexport interface WorkbenchEvidenceListProps {\n items: WorkbenchEvidenceItem[];\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nexport function WorkbenchEvidenceList({\n items,\n emptyState = null,\n ariaLabel = \"Evidence\",\n className,\n}: WorkbenchEvidenceListProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ol\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-evidence-list\"\n className={cn(\"grid min-w-0 gap-0\", className)}\n >\n {items.map((item, index) => (\n <li\n key={item.id}\n className=\"grid min-w-0 grid-cols-[1.25rem_minmax(0,1fr)_auto] gap-3\"\n >\n <span className=\"flex flex-col items-center\" aria-hidden=\"true\">\n <span className=\"mt-1 flex size-5 items-center justify-center rounded-full border border-primary/40 bg-primary/10 text-[0.625rem] font-semibold text-primary\">\n {item.marker || index + 1}\n </span>\n {index < items.length - 1 ? (\n <span className=\"min-h-8 w-px flex-1 bg-border\" />\n ) : null}\n </span>\n <span className=\"min-w-0 pb-5\">\n <span className=\"block text-sm font-semibold text-foreground\">\n {item.title}\n </span>\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {hasRenderableNode(item.source) ||\n hasRenderableNode(item.timestamp) ? (\n <span className=\"mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-[0.6875rem] text-muted-foreground\">\n {hasRenderableNode(item.source) ? (\n <span>{item.source}</span>\n ) : null}\n {hasRenderableNode(item.timestamp) ? (\n <time>{item.timestamp}</time>\n ) : null}\n </span>\n ) : null}\n </span>\n {hasRenderableNode(item.action) ? (\n <span className=\"pb-5\">{item.action}</span>\n ) : null}\n </li>\n ))}\n </ol>\n );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchAssetGalleryItem {\n id: string;\n url: string;\n alt: string;\n title?: ReactNode;\n description?: ReactNode;\n badges?: ReactNode[];\n}\n\nexport interface WorkbenchAssetGalleryProps {\n items: WorkbenchAssetGalleryItem[];\n selectedItemId?: string;\n onItemSelect?: (item: WorkbenchAssetGalleryItem) => void;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst activateItem = (\n event: KeyboardEvent<HTMLButtonElement>,\n item: WorkbenchAssetGalleryItem,\n onItemSelect?: (item: WorkbenchAssetGalleryItem) => void,\n) => {\n if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onItemSelect(item);\n};\n\nexport function WorkbenchAssetGallery({\n items,\n selectedItemId,\n onItemSelect,\n emptyState = null,\n ariaLabel = \"Assets\",\n className,\n}: WorkbenchAssetGalleryProps) {\n if (!items.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n return (\n <ul\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-asset-gallery\"\n className={cn(\n \"grid min-w-0 gap-3 [grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))]\",\n className,\n )}\n >\n {items.map((item) => {\n const selected = selectedItemId === item.id;\n return (\n <li key={item.id} className=\"min-w-0\">\n <button\n type=\"button\"\n aria-pressed={onItemSelect ? selected : undefined}\n onClick={\n onItemSelect ? () => onItemSelect(item) : undefined\n }\n onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n className={cn(\n \"group w-full overflow-hidden rounded-lg border bg-card text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary ring-1 ring-primary\"\n : \"border-border/70 hover:border-primary/40\",\n !onItemSelect && \"cursor-default\",\n )}\n >\n <span className=\"block aspect-[4/3] overflow-hidden bg-muted\">\n <img\n src={item.url}\n alt={item.alt}\n loading=\"lazy\"\n className=\"size-full object-cover transition-transform duration-200 group-hover:scale-[1.02] motion-reduce:transition-none\"\n />\n </span>\n <span className=\"block p-3\">\n {hasRenderableNode(item.title) ? (\n <span className=\"block truncate text-sm font-semibold text-foreground\">\n {item.title}\n </span>\n ) : null}\n {hasRenderableNode(item.description) ? (\n <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n {item.badges?.length ? (\n <span className=\"mt-2 flex flex-wrap gap-1.5\">\n {item.badges.map((badge, index) => (\n <span\n key={`${item.id}:badge:${index}`}\n className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] text-secondary-foreground\"\n >\n {badge}\n </span>\n ))}\n </span>\n ) : null}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchRadarNavigationChild {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface WorkbenchRadarNavigationItem {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n children?: WorkbenchRadarNavigationChild[];\n}\n\nexport interface WorkbenchRadarWorkspaceProps {\n navigationItems?: WorkbenchRadarNavigationItem[];\n activeNavigationId?: string;\n activeNavigationChildId?: string;\n onNavigationSelect?: (item: WorkbenchRadarNavigationItem) => void;\n onNavigationChildSelect?: (\n child: WorkbenchRadarNavigationChild,\n parent: WorkbenchRadarNavigationItem,\n ) => void;\n navigationFooter?: ReactNode;\n navigation?: ReactNode;\n children: ReactNode;\n inspector?: ReactNode;\n inspectorLabel?: string;\n className?: string;\n contentClassName?: string;\n minimumHeight?: string | number;\n ariaLabel?: string;\n}\n\nconst radarWorkspaceStyle: CSSProperties = {\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n color: \"hsl(var(--foreground))\",\n};\n\nconst radarPanelStyle: CSSProperties = {\n backgroundColor: \"hsl(var(--radar-panel, var(--card)))\",\n borderColor: \"hsl(var(--radar-border, var(--border)))\",\n};\n\nexport interface WorkbenchRadarNavigationProps {\n items: WorkbenchRadarNavigationItem[];\n activeItemId?: string;\n activeChildId?: string;\n onItemSelect?: (item: WorkbenchRadarNavigationItem) => void;\n onChildSelect?: (child: WorkbenchRadarNavigationChild, parent: WorkbenchRadarNavigationItem) => void;\n footer?: ReactNode;\n ariaLabel?: string;\n}\n\nexport function WorkbenchRadarNavigation({\n items,\n activeItemId,\n activeChildId,\n onItemSelect,\n onChildSelect,\n footer,\n ariaLabel = \"Radar navigation\",\n}: WorkbenchRadarNavigationProps) {\n return (\n <aside\n aria-label={ariaLabel}\n data-monkeys-component=\"workbench-radar-navigation\"\n className=\"flex min-h-0 flex-col overflow-hidden rounded-[calc(var(--radius)+0.25rem)] border\"\n style={radarPanelStyle}\n >\n <nav className=\"min-h-0 flex-1 overflow-y-auto p-3\">\n <ul className=\"grid gap-2\">\n {items.map((item) => {\n const active = item.id === activeItemId;\n return (\n <li key={item.id} className=\"grid gap-1\">\n <button\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n onClick={onItemSelect ? () => onItemSelect(item) : undefined}\n className={cn(\n \"flex min-h-11 w-full items-center gap-3 rounded-[var(--radius)] border border-transparent px-3 py-2 text-left text-sm font-semibold outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n active\n ? \"bg-primary text-primary-foreground shadow-[0_0_1.25rem_hsl(var(--primary)/0.28)]\"\n : \"text-muted-foreground hover:border-border hover:bg-muted/60 hover:text-foreground\",\n )}\n >\n {hasRenderableNode(item.icon) ? (\n <span className=\"flex size-5 shrink-0 items-center justify-center\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n </button>\n {item.children?.length ? (\n <ul className=\"ml-5 grid gap-0.5 border-l border-border/70 py-1 pl-3\">\n {item.children.map((child) => {\n const childActive = child.id === activeChildId;\n const Comp = onChildSelect ? \"button\" : \"div\";\n return (\n <li key={child.id}>\n <Comp\n type={onChildSelect ? \"button\" : undefined}\n data-radar-navigation-child-id={child.id}\n aria-current={onChildSelect && childActive ? \"page\" : undefined}\n onClick={onChildSelect ? () => onChildSelect(child, item) : undefined}\n className={cn(\n \"flex min-h-9 w-full items-center gap-2 rounded-md border border-transparent px-2 text-left text-xs font-medium outline-none transition-[background-color,border-color,color] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n childActive\n ? \"border-primary/40 bg-primary/15 text-primary\"\n : \"text-muted-foreground hover:border-border hover:bg-muted/60 hover:text-foreground\",\n )}\n >\n {hasRenderableNode(child.icon) ? (\n <span className=\"flex size-4 shrink-0 items-center justify-center\" aria-hidden=\"true\">\n {child.icon}\n </span>\n ) : null}\n <span className=\"truncate\">{child.label}</span>\n </Comp>\n </li>\n );\n })}\n </ul>\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n {hasRenderableNode(footer) ? (\n <div className=\"border-t border-border/70 p-3\">{footer}</div>\n ) : null}\n </aside>\n );\n}\n\nexport function WorkbenchRadarWorkspace({\n navigationItems = [],\n activeNavigationId,\n activeNavigationChildId,\n onNavigationSelect,\n onNavigationChildSelect,\n navigationFooter,\n navigation,\n children,\n inspector,\n inspectorLabel = \"Context controls\",\n className,\n contentClassName,\n minimumHeight = \"calc(100dvh - 1rem)\",\n ariaLabel = \"Radar workspace\",\n}: WorkbenchRadarWorkspaceProps) {\n return (\n <section\n data-monkeys-component=\"workbench-radar-workspace\"\n data-radar-active-navigation-id={activeNavigationId}\n aria-label={ariaLabel}\n className={cn(\n \"grid min-w-0 gap-3 overflow-hidden p-3 lg:grid-cols-[12.5rem_minmax(0,1fr)] xl:grid-cols-[12.5rem_minmax(0,1fr)_20rem]\",\n className,\n )}\n style={{ ...radarWorkspaceStyle, minHeight: minimumHeight }}\n >\n {hasRenderableNode(navigation) ? navigation : (\n <WorkbenchRadarNavigation\n items={navigationItems}\n activeItemId={activeNavigationId}\n activeChildId={activeNavigationChildId}\n onItemSelect={onNavigationSelect}\n onChildSelect={onNavigationChildSelect}\n footer={navigationFooter}\n />\n )}\n\n <div\n data-radar-workspace-region=\"content\"\n className={cn(\n \"relative min-h-[42rem] min-w-0 overflow-hidden rounded-[calc(var(--radius)+0.25rem)] border\",\n contentClassName,\n )}\n style={{\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n boxShadow: \"inset 0 0 0 1px hsl(var(--radar-grid, var(--border)) / 0.22)\",\n }}\n >\n {children}\n </div>\n\n {hasRenderableNode(inspector) ? (\n <aside\n aria-label={inspectorLabel}\n data-radar-workspace-region=\"inspector\"\n className=\"min-h-0 overflow-y-auto rounded-[calc(var(--radius)+0.25rem)] border lg:col-span-2 xl:col-span-1\"\n style={radarPanelStyle}\n >\n {inspector}\n </aside>\n ) : null}\n </section>\n );\n}\n\nexport function WorkbenchRadarInspectorSection({\n title,\n icon,\n description,\n children,\n className,\n}: {\n title: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n className?: string;\n}) {\n return (\n <section\n data-monkeys-component=\"workbench-radar-inspector-section\"\n className={cn(\"border-b border-border/70 p-4 last:border-b-0\", className)}\n >\n <div className=\"flex items-center gap-2 text-sm font-semibold text-primary\">\n {hasRenderableNode(icon) ? <span aria-hidden=\"true\">{icon}</span> : null}\n <h2>{title}</h2>\n </div>\n {hasRenderableNode(description) ? (\n <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">{description}</p>\n ) : null}\n {hasRenderableNode(children) ? <div className=\"mt-3\">{children}</div> : null}\n </section>\n );\n}\n\nexport function WorkbenchRadarFilterChip({\n label,\n value,\n icon,\n selected = false,\n onSelect,\n className,\n}: {\n label: ReactNode;\n value?: ReactNode;\n icon?: ReactNode;\n selected?: boolean;\n onSelect?: () => void;\n className?: string;\n}) {\n const Comp = onSelect ? \"button\" : \"div\";\n return (\n <Comp\n type={onSelect ? \"button\" : undefined}\n aria-pressed={onSelect ? selected : undefined}\n onClick={onSelect}\n className={cn(\n \"flex min-h-9 min-w-0 items-center gap-2 rounded-full border px-3 text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n selected\n ? \"border-primary bg-primary/20 text-primary\"\n : \"border-border bg-background/40 text-foreground hover:border-primary/60 hover:bg-primary/10\",\n className,\n )}\n >\n {hasRenderableNode(icon) ? <span className=\"shrink-0\" aria-hidden=\"true\">{icon}</span> : null}\n <span className=\"min-w-0 truncate\">{label}</span>\n {hasRenderableNode(value) ? <span className=\"ml-auto shrink-0 text-muted-foreground\">{value}</span> : null}\n </Comp>\n );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type {\n WorkbenchScatterAxis,\n WorkbenchScatterPoint,\n WorkbenchScatterThresholds,\n WorkbenchVisualizationTone,\n} from \"./WorkbenchScatterPlot\";\n\nexport interface WorkbenchRadarQuadrant {\n id: \"low-high\" | \"high-high\" | \"low-low\" | \"high-low\";\n title: ReactNode;\n description?: ReactNode;\n}\n\nexport interface WorkbenchRadarLegendItem {\n id: string;\n label: ReactNode;\n tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRadarMatrixProps {\n points: WorkbenchScatterPoint[];\n xAxis: WorkbenchScatterAxis;\n yAxis: WorkbenchScatterAxis;\n thresholds?: WorkbenchScatterThresholds;\n quadrants?: WorkbenchRadarQuadrant[];\n legend?: WorkbenchRadarLegendItem[];\n selectedPointId?: string;\n onPointSelect?: (point: WorkbenchScatterPoint) => void;\n width?: number;\n height?: number;\n labelLimit?: number;\n emptyState?: ReactNode;\n ariaLabel?: string;\n className?: string;\n}\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n const candidates = finiteValues(values);\n const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n if (lower === upper) return [lower, upper + 1] as const;\n return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n value: number,\n domain: readonly [number, number],\n start: number,\n end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst toneVariable: Record<WorkbenchVisualizationTone, string> = {\n primary: \"--radar-series-one\",\n secondary: \"--radar-series-two\",\n accent: \"--radar-series-three\",\n muted: \"--radar-series-four\",\n};\n\nconst toneFallback: Record<WorkbenchVisualizationTone, string> = {\n primary: \"var(--primary)\",\n secondary: \"var(--secondary-foreground)\",\n accent: \"var(--accent-foreground)\",\n muted: \"var(--muted-foreground)\",\n};\n\nconst toneColor = (tone: WorkbenchVisualizationTone) =>\n `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;\n\nconst toneColorWithAlpha = (tone: WorkbenchVisualizationTone, alpha: number) =>\n `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;\n\nconst activatePoint = (\n event: KeyboardEvent<SVGGElement>,\n point: WorkbenchScatterPoint,\n onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onPointSelect(point);\n};\n\nconst quadrantPosition = {\n \"low-high\": { x: 26, y: 8, anchor: \"start\" as const },\n \"high-high\": { x: 974, y: 8, anchor: \"end\" as const },\n \"low-low\": { x: 26, y: 660, anchor: \"start\" as const },\n \"high-low\": { x: 974, y: 660, anchor: \"end\" as const },\n};\n\nexport function WorkbenchRadarMatrix({\n points,\n xAxis,\n yAxis,\n thresholds,\n quadrants = [],\n legend = [],\n selectedPointId,\n onPointSelect,\n width = 1000,\n height = 700,\n labelLimit = 18,\n emptyState = null,\n ariaLabel = `${xAxis.label} by ${yAxis.label} radar matrix`,\n className,\n}: WorkbenchRadarMatrixProps) {\n const validPoints = points.filter(\n (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n );\n if (!validPoints.length) {\n return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n }\n\n const xDomain = getDomain(\n validPoints.map((point) => point.x),\n xAxis.min,\n xAxis.max,\n );\n const yDomain = getDomain(\n validPoints.map((point) => point.y),\n yAxis.min,\n yAxis.max,\n );\n const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n const plotLeft = 0;\n const plotRight = width;\n const plotTop = 0;\n const plotBottom = height;\n const xThreshold = clamp(\n scale(\n Number.isFinite(thresholds?.x) ? Number(thresholds?.x) : (xDomain[0] + xDomain[1]) / 2,\n xDomain,\n plotLeft,\n plotRight,\n ),\n plotLeft,\n plotRight,\n );\n const yThreshold = clamp(\n scale(\n Number.isFinite(thresholds?.y) ? Number(thresholds?.y) : (yDomain[0] + yDomain[1]) / 2,\n yDomain,\n plotBottom,\n plotTop,\n ),\n plotTop,\n plotBottom,\n );\n const labelledPointIds = new Set(\n [...validPoints]\n .sort((left, right) => (right.size ?? 0) - (left.size ?? 0))\n .slice(0, labelLimit)\n .map((point) => point.id),\n );\n\n return (\n <div\n data-monkeys-component=\"workbench-radar-matrix\"\n className={cn(\"relative size-full min-h-[42rem] min-w-0 overflow-hidden\", className)}\n style={{\n backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n backgroundImage:\n \"radial-gradient(circle at 78% 20%, hsl(var(--primary) / 0.08), transparent 32%), radial-gradient(circle at 18% 82%, hsl(var(--radar-series-two, var(--accent-foreground)) / 0.06), transparent 30%)\",\n }}\n >\n <svg\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n className=\"absolute inset-0 size-full\"\n role=\"img\"\n aria-label={ariaLabel}\n >\n <g aria-hidden=\"true\">\n {Array.from({ length: 13 }, (_, index) => {\n const x = (width / 12) * index;\n const y = (height / 12) * index;\n return (\n <g key={index}>\n <line\n x1={x}\n y1={0}\n x2={x}\n y2={height}\n style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n />\n <line\n x1={0}\n y1={y}\n x2={width}\n y2={y}\n style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n />\n </g>\n );\n })}\n <line\n x1={xThreshold}\n y1={0}\n x2={xThreshold}\n y2={height}\n strokeWidth=\"1.5\"\n style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n />\n <line\n x1={0}\n y1={yThreshold}\n x2={width}\n y2={yThreshold}\n strokeWidth=\"1.5\"\n style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n />\n </g>\n\n {quadrants.map((quadrant) => {\n const position = quadrantPosition[quadrant.id];\n return (\n <g key={quadrant.id} aria-hidden=\"true\">\n <text\n x={position.x}\n y={position.y + 20}\n textAnchor={position.anchor}\n className=\"fill-muted-foreground text-[0.8125rem] font-semibold\"\n >\n {quadrant.title}\n </text>\n {hasRenderableNode(quadrant.description) && typeof quadrant.description === \"string\" ? (\n <text\n x={position.x}\n y={position.y + 40}\n textAnchor={position.anchor}\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {quadrant.description}\n </text>\n ) : null}\n </g>\n );\n })}\n\n {validPoints.map((point, index) => {\n const x = clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40);\n const y = clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48);\n const tone = point.tone || (index % 2 === 0 ? \"primary\" : \"accent\");\n const selected = selectedPointId === point.id;\n const labelled = labelledPointIds.has(point.id);\n const radius = labelled\n ? clamp(scale(point.size ?? 1, sizeDomain, 5, 9), 5, 9)\n : 3.5;\n const fontSize = labelled\n ? clamp(scale(point.size ?? 1, sizeDomain, 14, 31), 14, 31)\n : 0;\n const pointStyle: CSSProperties = {\n fill: toneColor(tone),\n stroke: \"hsl(var(--foreground) / 0.74)\",\n };\n const labelStyle: CSSProperties = {\n fill: toneColor(tone),\n filter: `drop-shadow(0 0 0.65rem ${toneColorWithAlpha(tone, 0.72)})`,\n };\n return (\n <g\n key={point.id}\n transform={`translate(${x}, ${y})`}\n role={onPointSelect ? \"button\" : undefined}\n tabIndex={onPointSelect ? 0 : undefined}\n aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n aria-pressed={onPointSelect ? selected : undefined}\n onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n >\n {selected ? (\n <circle\n r={radius + 10}\n fill=\"none\"\n strokeWidth=\"2\"\n style={{ stroke: toneColorWithAlpha(tone, 0.48) }}\n />\n ) : null}\n <circle r={radius} strokeWidth=\"1.25\" style={pointStyle} />\n {labelled ? (\n <text\n y={-radius - 8}\n textAnchor=\"middle\"\n fontSize={fontSize}\n fontWeight=\"700\"\n style={labelStyle}\n className=\"pointer-events-none\"\n >\n {point.label.slice(0, 22)}\n </text>\n ) : null}\n <title>{point.description || point.label}</title>\n </g>\n );\n })}\n\n <circle\n cx={xThreshold}\n cy={yThreshold}\n r=\"10\"\n style={{ fill: \"hsl(var(--radar-axis, var(--primary)))\" }}\n />\n <circle cx={xThreshold} cy={yThreshold} r=\"3\" className=\"fill-primary-foreground\" />\n <text\n x={width / 2}\n y={height - 12}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {xAxis.label}\n </text>\n <text\n x=\"14\"\n y={height / 2}\n textAnchor=\"middle\"\n transform={`rotate(-90 14 ${height / 2})`}\n className=\"fill-muted-foreground text-[0.6875rem]\"\n >\n {yAxis.label}\n </text>\n </svg>\n\n <div\n className=\"absolute bottom-4 left-4 hidden w-44 overflow-hidden rounded-[var(--radius)] border bg-card/95 shadow-xl sm:block\"\n style={{ borderColor: \"hsl(var(--radar-border, var(--border)))\" }}\n aria-hidden=\"true\"\n >\n <div className=\"flex h-9 items-center justify-between border-b border-border px-3 text-xs font-semibold text-muted-foreground\">\n <span>−</span><span>100%</span><span>+</span>\n </div>\n <svg viewBox={`0 0 ${width} ${height}`} className=\"h-24 w-full\">\n <rect width={width} height={height} style={{ fill: \"hsl(var(--radar-canvas, var(--background)))\" }} />\n <line x1={xThreshold} y1={0} x2={xThreshold} y2={height} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n <line x1={0} y1={yThreshold} x2={width} y2={yThreshold} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n {validPoints.map((point, index) => (\n <circle\n key={point.id}\n cx={clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40)}\n cy={clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48)}\n r=\"8\"\n style={{ fill: toneColor(point.tone || (index % 2 === 0 ? \"primary\" : \"accent\")) }}\n />\n ))}\n <rect\n x={width * 0.22}\n y={height * 0.12}\n width={width * 0.58}\n height={height * 0.62}\n fill=\"none\"\n strokeWidth=\"8\"\n style={{ stroke: \"hsl(var(--primary))\" }}\n />\n </svg>\n </div>\n\n {legend.length ? (\n <div className=\"absolute bottom-4 left-1/2 hidden -translate-x-1/2 items-center gap-4 rounded-full border border-border bg-card/95 px-4 py-2 text-xs font-semibold shadow-xl md:flex\">\n {legend.map((item) => {\n const tone = item.tone || \"muted\";\n return (\n <span key={item.id} className=\"flex items-center gap-2 text-muted-foreground\">\n <span className=\"size-2 rounded-full\" style={{ backgroundColor: toneColor(tone) }} />\n {item.label}\n </span>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n"]}