{"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/data-explorer/appearanceContext.tsx","../../../src/components/data-explorer/utils.ts","../../../src/components/data-explorer/theme.ts","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/theme.ts","../../../src/components/primitives/internal/overlaySurface.ts","../../../src/components/primitives/InteractiveControls.tsx","../../../src/components/primitives/MediaPreview.tsx","../../../src/components/primitives/Overlays.tsx","../../../src/components/skeleton/motion.tsx","../../../src/components/safeDisplayUrl.ts","../../../src/components/data-explorer/DataExplorerMediaPreview.tsx","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/navigation-sidebar/unified-appearance.ts","../../../src/components/navigation-sidebar/NavigationSidebar.tsx","../../../src/components/base/BaseBadge.tsx","../../../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/BaseEmptyState.tsx","../../../src/components/base/BaseField.tsx","../../../src/components/base/BaseInput.tsx","../../../src/components/base/BaseSkeleton.tsx","../../../src/components/base/BaseLoadingState.tsx","../../../src/components/base/BaseSelect.tsx","../../../src/components/base/BaseSegmentedControl.tsx","../../../src/components/base/BaseSystemState.tsx","../../../src/components/base/BaseTable.tsx","../../../src/components/base/BaseTextarea.tsx","../../../src/components/base/BaseAssetIcon.tsx","../../../src/components/workbench/WorkbenchResizableSidebar.tsx","../../../src/components/workbench/WorkbenchContentPane.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/WorkbenchCollectionSkeleton.tsx","../../../src/components/workbench/useWorkbenchCollectionSelection.ts","../../../src/components/workbench/WorkbenchCollection.tsx","../../../src/components/workbench/WorkbenchGalleryView.tsx","../../../src/components/workbench/WorkbenchGallerySkeleton.tsx","../../../src/components/workbench/WorkbenchPageSkeleton.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/capabilities/dateTimeValue.ts","../../../src/components/workbench/WorkbenchEvidenceList.tsx","../../../src/components/workbench/WebPreviewFrame.tsx","../../../src/components/workbench/WorkbenchAssetGallery.tsx","../../../src/components/workbench/workbenchVisualizationTone.ts","../../../src/components/workbench/WorkbenchRadarWorkspace.tsx","../../../src/components/workbench/WorkbenchRadarMatrix.tsx","../../../src/components/workbench/RuntimeTerminalView.tsx","../../../src/components/workbench/runtimeFileCopy.ts","../../../src/components/workbench/RuntimeFileExplorer.tsx","../../../src/components/capabilities/i18n.ts","../../../src/components/capabilities/localizedDisplayValue.tsx","../../../src/components/capabilities/filePicker.tsx","../../../src/components/workbench/IconPicker.tsx","../../../src/components/workbench/layoutCanvasMounting.ts","../../../src/components/workbench/LayoutCanvasGrid.tsx","../../../src/components/workbench/layoutCatalogDrag.ts","../../../src/components/workbench/layoutCanvasModel.ts","../../../src/components/workbench/LayoutCanvas.tsx","../../../src/components/workbench/LayoutCatalogItem.tsx","../../../src/components/workbench/TemplateTextEditor.tsx","../../../src/components/workbench/RuntimeSourceControlView.tsx","../../../src/components/workbench/OrderedSelection.tsx","../../../src/components/workbench/MarkdownContent.tsx"],"names":["cn","createContext","useContext","useMemo","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","getPresetDefaults","slotKeys","mergeSlots","mergeStyles","jsx","React2","React3","jsxs","useEffect","scale","ImageIcon","useState","MoreIcon","Fragment","DropdownMenu2","useCallback","forwardRef","BaseBadge","BaseButton","useRef","BaseCheckbox","BaseContextMenuTrigger","BaseContextMenuContent","BaseContextMenuLabel","BaseContextMenuSeparator","BaseContextMenuItem","BaseContextMenuCheckboxItem","BaseContextMenuRadioItem","BaseContextMenuSubTrigger","BaseContextMenuSubContent","BaseEmptyState","BaseField","useId","BaseInput","BaseSkeleton","BaseLoadingState","BaseSelect","BaseSystemState","assignRef","clampWidth","BaseTableContainer","BaseTable","BaseTableHeader","BaseTableBody","BaseTableFooter","BaseTableRow","BaseTableHead","messages","BaseTableCell","BaseTableCaption","BaseTableEmpty","controlSizeClassNames","BaseTextarea","BaseAssetIcon","attributes","props","createElement","WorkbenchResizableSidebar","WorkbenchContentPane","WorkbenchContentToolbar","shouldRenderBodyWrapper","Children","isValidElement","WorkbenchDetailSidebar","toCssSize","defaultGetRowKey","normalizeColumnOrder","getOrderedColumns","defaultFormatLabel","Root","useLayoutEffect","clamp","fallback","resolveLengthToPixels","renderItemContent","getDefaultGalleryDetailLimit","getNormalizedGalleryBentoColumns","getNormalizedGalleryDetailLimit","summaryText","normalizeCount","toneClassNames","activateItem","WebPreviewFrame","disclosureLabel","finiteValues","getDomain","activatePoint","bytes","save","ChevronDown","FileText","next","row"],"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 { createContext, useContext, useMemo, type ReactNode } from 'react';\n\nimport type { DataExplorerAppearance } from './types';\n\nconst DataExplorerAppearanceContext = createContext<\n  DataExplorerAppearance | undefined\n>(undefined);\n\nexport function DataExplorerAppearanceProvider({\n  appearance,\n  children,\n}: {\n  appearance?: DataExplorerAppearance;\n  children: ReactNode;\n}) {\n  return (\n    <DataExplorerAppearanceContext.Provider value={appearance}>\n      {children}\n    </DataExplorerAppearanceContext.Provider>\n  );\n}\n\nexport function useDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inheritedAppearance = useContext(DataExplorerAppearanceContext);\n  return useMemo(() => {\n    if (!appearance) return inheritedAppearance;\n    if (!inheritedAppearance) return appearance;\n    return {\n      ...inheritedAppearance,\n      ...appearance,\n      slots: { ...inheritedAppearance.slots, ...appearance.slots },\n      styles: { ...inheritedAppearance.styles, ...appearance.styles },\n    };\n  }, [appearance, inheritedAppearance]);\n}\n","import type { DataExplorerResolver } from './types';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return parts.filter(Boolean).join(' ');\n}\n\nexport function resolveDataExplorerValue<TValue, TContext>(\n  value: DataExplorerResolver<TValue, TContext> | undefined,\n  context: TContext | undefined,\n): TValue | undefined {\n  if (typeof value === 'function') {\n    return (value as (resolvedContext: TContext) => TValue)(context as TContext);\n  }\n\n  return value;\n}\n","import type {\n  DataExplorerAppearance,\n  DataExplorerBackground,\n  DataExplorerBorder,\n  DataExplorerControlTone,\n  DataExplorerDensity,\n  DataExplorerRadius,\n  DataExplorerResolvedTheme,\n  DataExplorerSurface,\n  DataExplorerThemeStyles,\n  DataExplorerThemePresetId,\n  DataExplorerThemeSlots,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<DataExplorerThemeSlots>;\n\nconst emptyStyles: DataExplorerThemeStyles = {};\n\nconst baseSlots: ResolvedSlots = {\n  surfaceRoot:\n    'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden rounded-md border border-border bg-background shadow-sm',\n  toolbarRoot:\n    'flex flex-wrap items-center gap-2 border-b border-border bg-background px-4 py-3',\n  toolbarLeading: 'flex items-center gap-2',\n  toolbarSearch:\n    'flex h-10 min-w-52 flex-1 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm',\n  toolbarSearchIcon: 'inline-flex shrink-0 text-muted-foreground',\n  toolbarSearchInput:\n    'min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground',\n  toolbarViewSwitch:\n    'flex items-center rounded-md border border-border bg-background p-0.5',\n  toolbarViewButton:\n    'inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  toolbarViewButtonActive: 'bg-muted text-foreground',\n  toolbarActions: 'flex items-center gap-2',\n  actionBarRoot: 'flex min-w-0 flex-wrap items-center gap-2',\n  actionBarLeading: 'flex shrink-0 items-center gap-2',\n  actionBarActions: 'flex min-w-0 flex-1 flex-wrap items-center gap-2',\n  actionBarTrailing: 'flex shrink-0 items-center gap-2',\n  actionButtonBase:\n    'inline-flex h-9 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  actionButtonDefault:\n    'border-border bg-background text-foreground hover:bg-accent/60',\n  actionButtonPrimary:\n    'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n  actionButtonDanger:\n    'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n  actionButtonMuted:\n    'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n  actionButtonActive: 'ring-1 ring-primary/30',\n  actionButtonDisabled: 'cursor-not-allowed opacity-60',\n  actionIconButton: 'w-9 px-0',\n  actionToggleActive: 'border-primary/30 bg-primary/10 text-primary',\n  controlButton:\n    'inline-flex h-10 min-w-0 items-center justify-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlButtonIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  controlButtonLabel: 'min-w-0 truncate',\n  controlSelectTrigger:\n    'inline-flex h-10 min-w-28 items-center justify-between gap-3 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlSelectValue: 'flex min-w-0 items-center gap-1 truncate',\n  controlCheckbox:\n    'inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlCheckboxIndicator:\n    'flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary',\n  controlCheckboxLabel: 'min-w-0 truncate',\n  menuTrigger:\n    'inline-flex h-8 w-8 items-center justify-center rounded-md text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  menuContent:\n    'z-50 min-w-36 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none',\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    'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n  menuItemPrimary: 'text-primary focus:text-primary',\n  menuItemDanger: 'text-destructive-text focus:text-destructive-text',\n  menuItemMuted: 'text-muted-foreground',\n  menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  menuItemLabel: 'truncate',\n  cardRoot:\n    'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background transition-shadow',\n  cardInteractive: 'cursor-pointer hover:shadow-sm',\n  cardSelected: 'ring-2 ring-primary',\n  cardDisabled: 'opacity-60',\n  cardHeader: 'p-4',\n  cardMedia: 'shrink-0 overflow-hidden',\n  cardFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n  recordCardRoot: 'group relative border-border/70 transition-shadow hover:shadow-sm',\n  recordCardActive: 'z-10 ring-2 ring-monkeys-500',\n  footerRoot: 'flex items-center border-t border-border bg-background px-4 py-3',\n  footerSummary:\n    'flex items-center gap-1 whitespace-nowrap text-sm text-muted-foreground',\n  footerJumpButton:\n    'inline-flex items-center gap-1 text-muted-foreground underline-offset-4 hover:text-foreground hover:underline',\n  footerPageSizeSelect:\n    'h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground',\n  previewRoot:\n    'relative h-full min-h-0 w-full flex-1 select-none self-stretch overflow-hidden bg-slate-950',\n  previewPlaceholder:\n    'flex h-full w-full items-center justify-center rounded-xl bg-white/5 px-6 text-center text-sm text-white/60',\n  previewActions: 'absolute right-4 top-4 z-20 flex flex-col gap-2',\n  previewControls: 'absolute bottom-4 right-4 z-20 flex flex-col gap-2',\n  previewZoomLabel:\n    'min-w-[3rem] rounded-full border border-white/15 bg-black/30 px-1 py-1 text-center text-xs font-medium text-white/70 shadow-lg backdrop-blur',\n  previewControlButton:\n    'inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition hover:bg-black/45',\n  previewNavigationButton:\n    'absolute top-1/2 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition-colors hover:bg-black/45 disabled:pointer-events-none disabled:opacity-40',\n  detailRoot: 'flex h-full flex-col overflow-hidden bg-background',\n  detailHeader:\n    'flex items-center justify-between gap-3 border-b border-border bg-background px-4 py-4 sm:px-5',\n  detailLeading:\n    'flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground',\n  detailNavigation:\n    'hidden items-center gap-1 rounded-lg border border-border bg-background px-1 py-1 md:flex',\n  detailNavigationButton:\n    'flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  detailCloseButton:\n    'flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  detailPreviewPanel:\n    'min-h-0 overflow-hidden border-b border-border bg-background xl:border-b-0',\n  detailPreviewFrame:\n    'relative h-full min-h-0 w-full overflow-hidden bg-background',\n  detailRightPanel:\n    'min-h-0 min-w-0 border-t border-border bg-background xl:border-l xl:border-t-0',\n  detailRightPanelBody:\n    'h-full overflow-y-auto overscroll-contain bg-background p-5',\n  treeShellRoot: 'flex h-full min-h-0 flex-col overflow-hidden',\n  treeShellHeader:\n    'flex shrink-0 items-start justify-between gap-3 px-4 py-3',\n  treeShellTitle: 'truncate text-sm font-semibold',\n  treeShellSubtitle: 'mt-1 text-sm text-muted-foreground',\n  treeShellToolbar: 'flex shrink-0 items-center gap-2',\n  treeShellBody: 'min-h-0 flex-1 overflow-hidden',\n  treeShellFooter: 'shrink-0',\n  treeRoot: 'min-w-0 space-y-1 overflow-hidden text-sm',\n  treeGroup: 'min-w-0 space-y-1',\n  treeGroupHeader: 'group/tree-group flex min-w-0 items-center gap-1',\n  treeGroupHeaderButton:\n    'flex h-9 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left font-medium text-muted-foreground transition-colors hover:bg-accent/55 hover:text-foreground',\n  treeGroupContent: 'min-w-0 space-y-0.5',\n  treeGroupActions:\n    'shrink-0 opacity-0 transition-opacity group-hover/tree-group:opacity-100 data-[state=open]:opacity-100',\n  treeNode: 'min-w-0',\n  treeNodeButton:\n    'group/tree-node flex min-h-9 w-full min-w-0 items-center gap-1 rounded-md pr-1 text-left text-sm text-foreground transition-colors hover:bg-accent/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1',\n  treeNodeSelected: 'bg-accent text-accent-foreground',\n  treeNodeDisabled: 'cursor-not-allowed opacity-55',\n  treeNodeDragging: 'opacity-50',\n  treeNodeToggle:\n    'inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  treeNodeIcon:\n    'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground group-hover/tree-node:text-foreground',\n  treeNodeLabel: 'min-w-0 truncate',\n  treeNodeDescription: 'mt-0.5 truncate text-xs text-muted-foreground',\n  treeNodeMeta: 'ml-2 shrink-0 text-xs text-muted-foreground',\n  treeNodeBadge:\n    'ml-2 shrink-0 rounded-full border border-border bg-muted px-1.5 py-0.5 text-[11px] leading-none text-muted-foreground',\n  treeNodeActions:\n    'ml-1 shrink-0 opacity-0 transition-opacity group-hover/tree-node:opacity-100 data-[state=open]:opacity-100',\n  treeNodeChildren: 'mt-0.5 min-w-0 space-y-0.5',\n  treeNodeDragHandle:\n    'inline-flex h-5 w-5 shrink-0 cursor-grab items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-foreground active:cursor-grabbing group-hover/tree-node:opacity-100',\n  treeEmpty: 'px-3 py-2 text-xs text-muted-foreground',\n  treeError: 'px-3 py-2 text-xs text-destructive-text',\n  treeLoading: 'px-3 py-2 text-xs text-muted-foreground',\n};\n\nconst surfaceSlots: Record<DataExplorerSurface, Partial<DataExplorerThemeSlots>> = {\n  card: {},\n  flush: {\n    surfaceRoot:\n      'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden',\n  },\n};\n\nconst densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n  compact: {\n    treeShellHeader: 'px-3 py-2',\n    toolbarRoot: 'px-3 py-2',\n    toolbarSearch: 'h-9 min-w-48',\n    toolbarViewButton: 'h-8 min-w-8 text-xs',\n    actionButtonBase: 'h-8 px-2.5 text-xs',\n    actionIconButton: 'h-8 w-8 px-0',\n    controlButton: 'h-9 px-2.5 text-xs',\n    controlSelectTrigger: 'h-9 min-w-24 px-2.5 text-xs',\n    controlCheckbox: 'h-8 px-2.5 text-xs',\n    menuTrigger: 'h-8 w-8',\n    footerRoot: 'px-3 py-2',\n    footerPageSizeSelect: 'h-8 text-xs',\n    treeGroupHeaderButton: 'h-8 text-xs',\n    treeNodeButton: 'min-h-8 text-xs',\n    treeEmpty: 'py-1.5 text-xs',\n    treeError: 'py-1.5 text-xs',\n    treeLoading: 'py-1.5 text-xs',\n  },\n  default: {},\n  comfortable: {\n    treeShellHeader: 'px-5 py-4',\n    toolbarRoot: 'px-5 py-4',\n    toolbarSearch: 'h-11',\n    toolbarViewButton: 'h-10 min-w-10',\n    actionButtonBase: 'h-10 px-3.5',\n    actionIconButton: 'h-10 w-10 px-0',\n    controlButton: 'h-11 px-3.5',\n    controlSelectTrigger: 'h-11 min-w-32 px-3.5',\n    controlCheckbox: 'h-10 px-3.5',\n    menuTrigger: 'h-9 w-9',\n    footerRoot: 'px-5 py-3.5',\n    treeGroupHeaderButton: 'h-10',\n    treeNodeButton: 'min-h-10',\n  },\n};\n\nconst radiusSlots: Record<DataExplorerRadius, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'rounded-none',\n    toolbarSearch: 'rounded-none',\n    toolbarViewSwitch: 'rounded-none',\n    toolbarViewButton: 'rounded-none',\n    actionButtonBase: 'rounded-none',\n    controlButton: 'rounded-none',\n    controlSelectTrigger: 'rounded-none',\n    controlCheckbox: 'rounded-none',\n    controlCheckboxIndicator: 'rounded-none',\n    menuTrigger: 'rounded-none',\n    menuContent: 'rounded-none',\n    menuItem: 'rounded-none',\n    cardRoot: 'rounded-none',\n    footerPageSizeSelect: 'rounded-none',\n    detailLeading: 'rounded-none',\n    detailNavigation: 'rounded-none',\n    detailNavigationButton: 'rounded-none',\n    detailCloseButton: 'rounded-none',\n    treeGroupHeaderButton: 'rounded-none',\n    treeNodeButton: 'rounded-none',\n    treeNodeToggle: 'rounded-none',\n    treeNodeBadge: 'rounded-none',\n    treeNodeDragHandle: 'rounded-none',\n  },\n  sm: {\n    surfaceRoot: 'rounded-sm',\n    toolbarSearch: 'rounded-sm',\n    toolbarViewSwitch: 'rounded-sm',\n    toolbarViewButton: 'rounded-sm',\n    actionButtonBase: 'rounded-sm',\n    controlButton: 'rounded-sm',\n    controlSelectTrigger: 'rounded-sm',\n    controlCheckbox: 'rounded-sm',\n    controlCheckboxIndicator: 'rounded-sm',\n    menuTrigger: 'rounded-sm',\n    menuContent: 'rounded-sm',\n    menuItem: 'rounded-sm',\n    cardRoot: 'rounded-sm',\n    treeGroupHeaderButton: 'rounded-sm',\n    treeNodeButton: 'rounded-sm',\n    treeNodeToggle: 'rounded-sm',\n    treeNodeBadge: 'rounded-sm',\n    treeNodeDragHandle: 'rounded-sm',\n  },\n  md: {},\n  lg: {\n    surfaceRoot: 'rounded-xl',\n    toolbarSearch: 'rounded-lg',\n    toolbarViewSwitch: 'rounded-lg',\n    toolbarViewButton: 'rounded-lg',\n    actionButtonBase: 'rounded-lg',\n    controlButton: 'rounded-lg',\n    controlSelectTrigger: 'rounded-lg',\n    controlCheckbox: 'rounded-lg',\n    controlCheckboxIndicator: 'rounded-md',\n    menuTrigger: 'rounded-lg',\n    menuContent: 'rounded-lg',\n    cardRoot: 'rounded-xl',\n    treeGroupHeaderButton: 'rounded-lg',\n    treeNodeButton: 'rounded-lg',\n    treeNodeToggle: 'rounded-md',\n    treeNodeBadge: 'rounded-lg',\n    treeNodeDragHandle: 'rounded-md',\n  },\n  xl: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-xl',\n    toolbarViewSwitch: 'rounded-xl',\n    toolbarViewButton: 'rounded-xl',\n    actionButtonBase: 'rounded-xl',\n    controlButton: 'rounded-xl',\n    controlSelectTrigger: 'rounded-xl',\n    controlCheckbox: 'rounded-xl',\n    controlCheckboxIndicator: 'rounded-lg',\n    menuTrigger: 'rounded-xl',\n    menuContent: 'rounded-xl',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-xl',\n    treeNodeButton: 'rounded-xl',\n    treeNodeToggle: 'rounded-lg',\n    treeNodeBadge: 'rounded-xl',\n    treeNodeDragHandle: 'rounded-lg',\n  },\n  full: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-full',\n    toolbarViewSwitch: 'rounded-full',\n    toolbarViewButton: 'rounded-full',\n    actionButtonBase: 'rounded-full',\n    controlButton: 'rounded-full',\n    controlSelectTrigger: 'rounded-full',\n    controlCheckbox: 'rounded-full',\n    controlCheckboxIndicator: 'rounded-full',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-full',\n    treeNodeButton: 'rounded-full',\n    treeNodeToggle: 'rounded-full',\n    treeNodeBadge: 'rounded-full',\n    treeNodeDragHandle: 'rounded-full',\n  },\n};\n\nconst borderSlots: Record<DataExplorerBorder, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'border-transparent',\n    toolbarRoot: 'border-transparent',\n    toolbarSearch: 'border-transparent',\n    toolbarViewSwitch: 'border-transparent',\n    actionButtonBase: 'border-transparent',\n    controlButton: 'border-transparent',\n    controlSelectTrigger: 'border-transparent',\n    controlCheckbox: 'border-transparent',\n    cardRoot: 'border-transparent',\n    footerRoot: 'border-transparent',\n    detailHeader: 'border-transparent',\n    detailPreviewPanel: 'border-transparent',\n    detailRightPanel: 'border-transparent',\n  },\n  subtle: {\n    surfaceRoot: 'border-border/60',\n    toolbarRoot: 'border-border/60',\n    toolbarSearch: 'border-border/60',\n    toolbarViewSwitch: 'border-border/60',\n    actionButtonDefault: 'border-border/60',\n    controlButton: 'border-border/60',\n    controlSelectTrigger: 'border-border/60',\n    controlCheckbox: 'border-border/60',\n    cardRoot: 'border-border/60',\n    footerRoot: 'border-border/60',\n  },\n  solid: {},\n  strong: {\n    surfaceRoot: 'border-foreground/20',\n    toolbarRoot: 'border-foreground/20',\n    toolbarSearch: 'border-foreground/20',\n    toolbarViewSwitch: 'border-foreground/20',\n    actionButtonDefault: 'border-foreground/20',\n    controlButton: 'border-foreground/20',\n    controlSelectTrigger: 'border-foreground/20',\n    controlCheckbox: 'border-foreground/20',\n    cardRoot: 'border-foreground/20',\n    footerRoot: 'border-foreground/20',\n  },\n};\n\nconst backgroundSlots: Record<DataExplorerBackground, Partial<DataExplorerThemeSlots>> = {\n  plain: {},\n  muted: {\n    surfaceRoot: 'bg-card',\n    toolbarRoot: 'bg-muted/20',\n    toolbarSearch: 'bg-background',\n    toolbarViewSwitch: 'bg-background',\n    controlButton: 'bg-background',\n    controlSelectTrigger: 'bg-background',\n    controlCheckbox: 'bg-background',\n    cardRoot: 'bg-card',\n    footerRoot: 'bg-muted/20',\n    detailHeader: 'bg-muted/20',\n  },\n  soft: {\n    surfaceRoot: 'bg-background/95 shadow-sm',\n    toolbarRoot: 'bg-background/95',\n    actionButtonDefault: 'bg-muted/30 hover:bg-muted/55',\n    controlButton: 'bg-muted/30 hover:bg-muted/55',\n    controlSelectTrigger: 'bg-muted/30 hover:bg-muted/55',\n    controlCheckbox: 'bg-muted/30 hover:bg-muted/55',\n    cardRoot: 'bg-background/95 shadow-sm',\n    footerRoot: 'bg-background/95',\n  },\n  glass: {\n    surfaceRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    toolbarRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n    toolbarSearch: 'border-white/10 bg-white/5',\n    toolbarViewSwitch: 'border-white/10 bg-white/5',\n    actionButtonDefault:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlButton:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlSelectTrigger:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckbox:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckboxIndicator: 'border-white/15 bg-white/10',\n    cardRoot: 'border-white/10 bg-white/[0.06] shadow-none',\n    footerRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n  },\n  'dark-stage': {\n    previewRoot: 'bg-slate-950',\n    previewPlaceholder: 'bg-white/5 text-white/60',\n    actionButtonBase:\n      'inline-flex h-9 items-center justify-center gap-2 rounded-full border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45 focus-visible:ring-offset-0',\n    actionButtonDefault:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlButton:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlSelectTrigger:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlCheckbox:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    actionButtonPrimary:\n      'border-white/25 bg-white/20 text-white shadow-lg backdrop-blur hover:bg-white/28',\n    actionButtonMuted:\n      'border-white/10 bg-black/20 text-white/70 shadow-lg backdrop-blur hover:bg-black/[0.35] hover:text-white',\n    actionIconButton: 'h-9 w-9 px-0',\n  },\n};\n\nconst presetDefaults: Record<\n  DataExplorerThemePresetId,\n  Pick<DataExplorerAppearance, '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: 'md',\n    border: 'subtle',\n    background: 'plain',\n  },\n  compact: {\n    density: 'compact',\n    radius: 'md',\n    border: 'subtle',\n    background: 'soft',\n  },\n  'tinted-glass': {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  flat: {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n  glass: {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  'hard-edge': {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n};\n\nconst presetSlots: Record<string, Partial<DataExplorerThemeSlots>> = {\n  soft: {\n    actionButtonBase: 'font-medium',\n    controlButton: 'font-medium',\n    controlSelectTrigger: 'font-medium',\n    controlCheckbox: 'font-medium',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'border-border/70',\n  },\n  compact: {\n    toolbarRoot: 'gap-2',\n    actionButtonBase: 'text-xs',\n    controlButton: 'text-xs',\n    controlSelectTrigger: 'text-xs',\n    controlCheckbox: 'text-xs',\n    footerRoot: 'text-xs',\n  },\n  'tinted-glass': {\n    actionButtonDefault:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    actionButtonPrimary:\n      'border-primary/30 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n    actionButtonMuted:\n      'border-border/50 bg-muted/20 text-muted-foreground hover:bg-muted/45 hover:text-foreground',\n    controlButton:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlSelectTrigger:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckbox:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckboxIndicator: 'border-border/60 bg-background/10 text-primary',\n    menuContent: 'border-border bg-popover text-popover-foreground shadow-2xl',\n    menuSeparator: 'bg-border',\n    menuItem: 'focus:bg-accent focus:text-accent-foreground',\n    cardSelected: 'ring-2 ring-primary',\n    previewRoot: 'bg-background',\n    treeGroupHeaderButton:\n      'text-muted-foreground hover:bg-accent/60 hover:text-foreground',\n    treeNodeButton:\n      'text-foreground hover:bg-accent/60 hover:text-accent-foreground focus-visible:ring-ring',\n    treeNodeSelected: 'bg-accent text-accent-foreground',\n    treeNodeToggle: 'text-muted-foreground hover:bg-accent hover:text-foreground',\n    treeNodeIcon:\n      'text-muted-foreground group-hover/tree-node:text-foreground',\n    treeNodeMeta: 'text-muted-foreground',\n    treeNodeBadge: 'border-border bg-muted text-muted-foreground',\n    treeNodeActions: 'text-muted-foreground',\n    treeNodeDragHandle:\n      'text-muted-foreground hover:bg-accent hover:text-foreground group-hover/tree-node:opacity-100',\n    treeEmpty: 'text-muted-foreground',\n    treeError: 'text-destructive-text',\n    treeLoading: 'text-muted-foreground',\n  },\n  flat: {\n    toolbarRoot: 'border-slate-200 bg-white',\n    toolbarSearch: 'rounded-none border-slate-200 bg-white shadow-none',\n    toolbarViewSwitch: 'rounded-none border-slate-200 bg-white shadow-none',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlSelectTrigger:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlCheckbox:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    actionButtonDefault:\n      'border-slate-200 bg-white text-slate-700 hover:bg-slate-50',\n    menuTrigger:\n      'rounded-none border border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    menuContent: 'rounded-none border-slate-200 bg-white shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    treeRoot: 'space-y-1 text-sm',\n    treeGroupHeader: 'group/tree-group flex min-w-0 items-center',\n    treeGroupHeaderButton:\n      'h-9 rounded-none px-3 text-slate-600 shadow-none hover:bg-slate-100 hover:text-slate-950',\n    treeGroupContent: 'space-y-1',\n    treeNodeButton:\n      'min-h-9 rounded-none text-slate-700 hover:bg-slate-100 hover:text-slate-950 focus-visible:ring-slate-300',\n    treeNodeSelected: 'bg-slate-100 text-slate-950',\n    treeNodeToggle:\n      'rounded-none text-slate-500 hover:bg-transparent hover:text-slate-950',\n    treeNodeIcon: 'text-slate-500 group-hover/tree-node:text-slate-950',\n    treeNodeDragHandle:\n      'rounded-none text-slate-400 hover:bg-transparent hover:text-slate-700',\n    treeNodeActions: 'text-slate-500',\n  },\n  glass: {\n    menuContent: 'border-white/10 bg-slate-950/90 text-white backdrop-blur-xl',\n    menuSeparator: 'bg-white/10',\n    menuItem: 'focus:bg-white/10 focus:text-white',\n  },\n  'hard-edge': {\n    toolbarRoot: 'border-slate-200 bg-white',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none shadow-none',\n    controlSelectTrigger: 'rounded-none shadow-none',\n    controlCheckbox: 'rounded-none shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    footerPageSizeSelect: 'rounded-none border-slate-200 shadow-none',\n  },\n};\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof DataExplorerThemeSlots>;\n\nfunction mergeSlots(\n  ...sources: Array<Partial<DataExplorerThemeSlots> | 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(\n  ...sources: Array<DataExplorerThemeStyles | undefined>\n): DataExplorerThemeStyles {\n  return sources.reduce<DataExplorerThemeStyles>(\n    (resolved, source) => ({\n      ...resolved,\n      ...source,\n    }),\n    {},\n  );\n}\n\nfunction getPresetDefaults(preset: DataExplorerThemePresetId) {\n  const defaults = presetDefaults[preset as keyof typeof presetDefaults];\n  if (!defaults) {\n    throw new TypeError(\n      `Unknown Data Explorer theme preset \"${String(preset)}\". Expected one of: ${Object.keys(presetDefaults).join(', ')}.`,\n    );\n  }\n  return defaults;\n}\n\nexport function resolveDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n  const preset = appearance?.preset ?? 'default';\n  const surface = appearance?.surface ?? 'card';\n  const defaults = getPresetDefaults(preset);\n  const density = appearance?.density ?? defaults.density ?? 'default';\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  const slots = mergeSlots(\n    baseSlots,\n    presetSlots[preset],\n    densitySlots[density],\n    radiusSlots[radius],\n    borderSlots[border],\n    backgroundSlots[background],\n    appearance?.slots,\n  );\n  if (surface === 'flush') {\n    slots.surfaceRoot = cn(\n      surfaceSlots.flush.surfaceRoot,\n      appearance?.slots?.surfaceRoot,\n    );\n  }\n\n  return {\n    surface,\n    preset,\n    density,\n    radius,\n    border,\n    background,\n    styles: mergeStyles(emptyStyles, appearance?.styles),\n    slots,\n  };\n}\n\nexport function getDataExplorerActionToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n  active: boolean,\n) {\n  return cn(\n    tone === 'primary'\n      ? theme.slots.actionButtonPrimary\n      : tone === 'danger'\n        ? theme.slots.actionButtonDanger\n        : tone === 'muted'\n          ? theme.slots.actionButtonMuted\n          : theme.slots.actionButtonDefault,\n    active && theme.slots.actionButtonActive,\n  );\n}\n\nexport function getDataExplorerMenuItemToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n) {\n  if (tone === 'primary') return theme.slots.menuItemPrimary;\n  if (tone === 'danger') return theme.slots.menuItemDanger;\n  if (tone === 'muted') return theme.slots.menuItemMuted;\n  return undefined;\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      selected: ({ count }) => `${count} selected`,\n      pageSize: \"Items per page\",\n      perLoad: \"Items per load\",\n      jumpToPage: \"Jump to page\",\n      pages: \"pages\",\n      clickToJump: \"Click to jump to a page\",\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      collection: {\n        label: \"Collection\",\n        loading: \"Loading items\",\n        empty: \"No items\",\n        loadError: \"Unable to load items\",\n        refreshError: \"Unable to refresh items\",\n        retry: \"Retry\",\n        loadingMore: \"Loading more items\",\n        permission: \"You do not have permission to view this content\",\n        offline: \"You appear to be offline\",\n        requestAccess: \"Request access\",\n      },\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: { chat: \"Chat\", work: \"Work\" },\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        chatMode: \"Chat mode\",\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        uploadFailed: \"Upload failed\",\n        retryAttachment: \"Retry attachment upload\",\n        noModels: \"No models available\",\n        message: \"Message\",\n        attachmentOnly: \"Attachment\",\n        reasoningOptions: {\n          low: \"Low\",\n          medium: \"Medium\",\n          high: \"High\",\n          xhigh: \"Extra high\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"Approval required\",\n          \"auto-approve\": \"Auto approve\",\n          \"full-access\": \"Full access\",\n        },\n      },\n      quickStart: {\n        label: \"Quick start\",\n        back: \"Back\",\n        addFile: \"Add file\",\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      process: {\n        running: \"Working\",\n        queued: \"Queued\",\n        waitingApproval: \"Waiting for approval\",\n        failed: \"Failed\",\n        stopped: \"Stopped\",\n        processed: \"Processed\",\n        processedFor: ({ duration }) => `Worked for ${duration}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} completed`,\n      },\n      artifactWorkspace: {\n        outputs: \"Outputs\",\n        sources: \"Sources\",\n        viewAll: \"View all\",\n        toggleSummary: \"Toggle files\",\n        tabs: \"Open files\",\n        closeTab: ({ name }) => `Close ${name}`,\n        closeWorkspace: \"Close workspace\",\n        download: ({ name }) => `Download ${name}`,\n        openExternal: ({ name }) => `Open ${name} in a new window`,\n        loading: \"Loading preview...\",\n        failed: \"Preview unavailable\",\n        retry: \"Try again\",\n      },\n      usage: {\n        label: \"Context usage\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"Search agents and sessions\",\n        searchSessions: \"Search 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        chat: \"Chat\",\n        work: \"Work\",\n        chats: \"Chats\",\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: {\n            title: \"Loading task details\",\n            description: \"Restoring the latest session activity.\",\n          },\n          empty: {\n            title: \"No task selected\",\n            description: \"Select a task to inspect its details.\",\n          },\n          error: {\n            title: \"Unable to load task details\",\n            description: \"Try again after the session is available.\",\n          },\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: {\n            added: \"Added\",\n            modified: \"Modified\",\n            deleted: \"Deleted\",\n            renamed: \"Renamed\",\n          },\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      collection: {\n        ...base.workbench.collection,\n        ...override.workbench?.collection,\n      },\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      quickStart: {\n        ...base.agentWorkbench.quickStart,\n        ...override.agentWorkbench?.quickStart,\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      process: {\n        ...base.agentWorkbench.process,\n        ...override.agentWorkbench?.process,\n      },\n      artifactWorkspace: {\n        ...base.agentWorkbench.artifactWorkspace,\n        ...override.agentWorkbench?.artifactWorkspace,\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 { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\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 type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n  showTotal?: boolean;\n  showPageSize?: boolean;\n  pageSizeOptions?: number[];\n  paginationMode?: MonkeysListFooterPaginationMode;\n  alignment?: MonkeysListFooterAlignment;\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n  loading?: { variant?: MonkeysLoadingStateVariant };\n  empty?: { variant?: MonkeysEmptyStateVariant };\n  error?: { showRetry?: boolean };\n  permission?: { showRequestAccess?: boolean };\n  density?: MonkeysStatusStateDensity;\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  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n  provided: boolean;\n  direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n  provided: boolean;\n  environment: MonkeysEnvironment;\n  portal: MonkeysPortalOptions;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\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  try {\n    const context = useContext(MonkeysLocaleContext);\n    return context ?? { ...defaultMonkeysLocale, provided: false };\n  } catch {\n    return { ...defaultMonkeysLocale, provided: false };\n  }\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 useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n  return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n  return useContext(MonkeysThemeContext).listFooter ?? {};\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\nexport function useMonkeysAssetIconResolver(): AssetIconResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).iconResolver;\n}\nexport function useMonkeysAssetImageResolver(): AssetImageResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).imageResolver;\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 text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current [&_svg_*]:!stroke-current',\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","export type OverlaySurfaceRole = 'menu' | 'dialog';\n\nconst overlaySurfaceRoleClassNames: Record<OverlaySurfaceRole, string> = {\n  // Keep the public utilities in the built stylesheet and tailwind-merge graph.\n  menu: 'monkeys-overlay-surface--menu bg-menu-surface text-popover-foreground',\n  dialog: 'monkeys-overlay-surface--dialog bg-dialog-surface text-foreground',\n};\n\nexport function getOverlaySurfaceClassName(\n  role: OverlaySurfaceRole,\n  options: { rounded?: boolean } = {},\n) {\n  return [\n    'monkeys-overlay-surface',\n    overlaySurfaceRoleClassNames[role],\n    options.rounded === false ? undefined : 'monkeys-overlay-surface--rounded',\n  ]\n    .filter(Boolean)\n    .join(' ');\n}\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, ChevronDown } from \"lucide-react\";\n\nimport { useMonkeysComponentAttributes } from \"../../provider/context\";\nimport { cn } from \"../base/utils\";\nimport { getOverlaySurfaceClassName } from \"./internal/overlaySurface\";\n\n/** Design-owned polymorphic slot for product compositions that need `asChild`. */\nexport const PolymorphicSlot = Slot;\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, style, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b\", className)}\n    style={{\n      borderColor:\n        \"var(--monkeys-component-accordion-item-border-color, hsl(var(--border)))\",\n      ...style,\n    }}\n    {...props}\n  />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown\n        aria-hidden=\"true\"\n        className=\"h-4 w-4 shrink-0 transition-transform duration-200\"\n      />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport const Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n      className,\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n      <Check aria-hidden=\"true\" className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport const buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_[data-slot=icon]]:text-[inherit] [&_[data-slot=icon]_*]:!text-[inherit] [&_[data-slot=icon]_svg]:!stroke-current [&_[data-slot=icon]_svg_*]:!stroke-current [&_[data-slot=end-icon]]:text-[inherit] [&_[data-slot=end-icon]_*]:!text-[inherit] [&_[data-slot=end-icon]_svg]:!stroke-current [&_[data-slot=end-icon]_svg_*]:!stroke-current [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-control-surface shadow-sm ring-offset-control-surface hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-sm px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: { variant: \"default\", size: \"default\" },\n  },\n);\n\nexport interface ButtonProps\n  extends\n    React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Component = asChild ? Slot : \"button\";\n    return (\n      <Component\n        ref={ref}\n        className={buttonVariants({ variant, size, className })}\n        {...props}\n      />\n    );\n  },\n);\nButton.displayName = \"Button\";\n\nexport interface ScrollAreaProps extends React.ComponentPropsWithoutRef<\n  typeof ScrollAreaPrimitive.Root\n> {\n  viewportClassName?: string;\n  viewportRef?: React.Ref<HTMLDivElement>;\n  onViewportScroll?: React.UIEventHandler<HTMLDivElement>;\n  scrollbar?: boolean;\n  scrollbarOrientation?: \"vertical\" | \"horizontal\";\n  scrollBarDisabled?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n  ScrollAreaProps\n>(\n  (\n    {\n      className,\n      children,\n      viewportClassName,\n      viewportRef,\n      onViewportScroll,\n      scrollbar = true,\n      scrollbarOrientation = \"vertical\",\n      scrollBarDisabled = false,\n      ...props\n    },\n    ref,\n  ) => (\n    <ScrollAreaPrimitive.Root\n      ref={ref}\n      className={cn(\n        \"group relative overflow-hidden\",\n        scrollBarDisabled && \"no-scrollbar\",\n        className,\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        ref={viewportRef}\n        onScroll={onViewportScroll}\n        className={cn(\"h-full w-full rounded-[inherit]\", viewportClassName)}\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      {scrollbar ? (\n        <ScrollBar\n          orientation={scrollbarOrientation}\n          className={cn(scrollBarDisabled && \"size-0 p-0\")}\n        />\n      ) : null}\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  ),\n);\nScrollArea.displayName = \"ScrollArea\";\n\nexport const ScrollBar = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n  <ScrollAreaPrimitive.ScrollAreaScrollbar\n    ref={ref}\n    orientation={orientation}\n    className={cn(\n      \"flex touch-none select-none opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 data-[state=visible]:opacity-100\",\n      orientation === \"vertical\" &&\n        \"h-full w-2.5 border-l border-l-transparent p-px\",\n      orientation === \"horizontal\" &&\n        \"h-2.5 flex-col border-t border-t-transparent p-px\",\n      className,\n    )}\n    {...props}\n  >\n    <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n  </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport const Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n      className,\n    )}\n    {...props}\n  >\n    <SwitchPrimitive.Thumb className=\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\" />\n  </SwitchPrimitive.Root>\n));\nSwitch.displayName = \"Switch\";\n\nexport type TabsVariant = \"default\" | \"ghost\" | \"rounded\";\nexport type TabsProps = React.ComponentPropsWithoutRef<\n  typeof TabsPrimitive.Root\n> & { variant?: TabsVariant };\nexport const Tabs = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Root>,\n  TabsProps\n>(({ variant = \"default\", ...props }, ref) => (\n  <TabsPrimitive.Root ref={ref} data-variant={variant} {...props} />\n));\nTabs.displayName = \"Tabs\";\nexport const TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & {\n    gap?: string | number;\n  }\n>(({ className, gap, style, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-10 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n      className,\n    )}\n    style={{ gap, ...style }}\n    {...props}\n  />\n));\nTabsList.displayName = \"TabsList\";\nexport const TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\nexport const TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\nexport const TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        {...componentAttributes}\n        {...props}\n        ref={ref}\n        sideOffset={sideOffset}\n        data-monkeys-component=\"tooltip\"\n        data-slot=\"content\"\n        data-surface=\"menu\"\n        className={cn(\n          \"z-50 overflow-hidden border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n          getOverlaySurfaceClassName(\"menu\"),\n          className,\n        )}\n      />\n    </TooltipPrimitive.Portal>\n  );\n});\nTooltipContent.displayName = \"TooltipContent\";\n","import * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport const MEDIA_PREVIEW_ASPECT_RATIOS = ['1:1', '4:3', '3:4', '16:9', '9:16'] as const;\n\nexport type MediaPreviewRatio = (typeof MEDIA_PREVIEW_ASPECT_RATIOS)[number];\nexport type MediaPreviewAspectRatio = 'square' | 'video' | 'auto' | MediaPreviewRatio;\nexport type MediaPreviewFit = 'contain' | 'cover';\n\nexport const resolveMediaPreviewAspectRatioValue = (aspectRatio: MediaPreviewRatio = '1:1'): number => {\n  const [width, height] = aspectRatio.split(':').map(Number);\n  return width / height;\n};\n\nexport const mediaPreviewFrameClassName = ({\n  aspectRatio = 'square',\n  maxSquareHeight = true,\n  className,\n}: {\n  aspectRatio?: MediaPreviewAspectRatio;\n  maxSquareHeight?: boolean;\n  className?: string;\n} = {}) => cn(\n  'w-full overflow-hidden bg-muted',\n  (aspectRatio === 'square' || aspectRatio === '1:1') && 'aspect-square',\n  (aspectRatio === 'square' || aspectRatio === '1:1') && maxSquareHeight && 'max-h-[300px]',\n  aspectRatio === '4:3' && 'aspect-[4/3]',\n  aspectRatio === '3:4' && 'aspect-[3/4]',\n  (aspectRatio === 'video' || aspectRatio === '16:9') && 'aspect-video',\n  aspectRatio === '9:16' && 'aspect-[9/16]',\n  className,\n);\n\nexport interface MediaPreviewFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n  aspectRatio?: MediaPreviewAspectRatio;\n  maxSquareHeight?: boolean;\n}\n\nexport const MediaPreviewFrame = React.forwardRef<HTMLDivElement, MediaPreviewFrameProps>(\n  ({ aspectRatio = 'square', maxSquareHeight = true, className, ...props }, ref) => (\n    <div ref={ref} className={mediaPreviewFrameClassName({ aspectRatio, maxSquareHeight, className })} {...props} />\n  ),\n);\nMediaPreviewFrame.displayName = 'MediaPreviewFrame';\n\nexport interface MediaPreviewImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n  fit?: MediaPreviewFit;\n}\n\nexport const MediaPreviewImage = React.forwardRef<HTMLImageElement, MediaPreviewImageProps>(\n  ({ fit = 'contain', className, ...props }, ref) => (\n    <img\n      ref={ref}\n      className={cn('block size-full', fit === 'contain' ? 'object-contain' : 'object-cover', className)}\n      {...props}\n    />\n  ),\n);\nMediaPreviewImage.displayName = 'MediaPreviewImage';\n","import * as React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\nimport { buttonVariants } from './InteractiveControls';\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogPortal = DialogPrimitive.Portal;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <DialogPrimitive.Overlay\n      {...componentAttributes}\n      {...props}\n      ref={ref}\n      className={cn('theme-overlay-backdrop fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className)}\n      data-monkeys-component=\"dialog\"\n      data-slot=\"overlay\"\n      data-monkeys-overlay\n    />\n  );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n  showCloseButton?: boolean;\n  closeLabel?: React.ReactNode;\n  overlayClassName?: string;\n  overlayStyle?: React.CSSProperties;\n}\n\nconst DialogSurfaceContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <DialogPrimitive.Content\n      {...componentAttributes}\n      {...props}\n      ref={ref}\n      className={className}\n      data-monkeys-component=\"dialog\"\n      data-slot=\"content\"\n      data-surface=\"dialog\"\n      data-monkeys-dialog-content\n    />\n  );\n});\nDialogSurfaceContent.displayName = 'DialogSurfaceContent';\n\nexport const DialogContent = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, DialogContentProps>(\n  ({ className, children, showCloseButton = true, closeLabel = 'Close', overlayClassName, overlayStyle, ...props }, ref) => {\n    return (\n      <DialogPortal>\n        <DialogOverlay className={overlayClassName} style={overlayStyle} />\n        <DialogSurfaceContent\n          {...props}\n          ref={ref}\n          className={cn('fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', getOverlaySurfaceClassName('dialog'), className)}\n        >\n          {children}\n          {showCloseButton ? (\n            <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-dialog-surface transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n              <X aria-hidden=\"true\" className=\"h-4 w-4\" />\n              <span className=\"sr-only\">{closeLabel}</span>\n            </DialogPrimitive.Close>\n          ) : null}\n        </DialogSurfaceContent>\n      </DialogPortal>\n    );\n  },\n);\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogContentNoAnimation = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, DialogContentProps>(\n  ({ className, ...props }, ref) => <DialogContent ref={ref} className={cn('duration-0 data-[state=open]:animate-none data-[state=closed]:animate-none', className)} {...props} />,\n);\nDialogContentNoAnimation.displayName = 'DialogContentNoAnimation';\n\nexport const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\nexport const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\nexport const DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => <DialogPrimitive.Title ref={ref} className={cn('text-lg font-semibold leading-none tracking-tight', className)} {...props} />);\nDialogTitle.displayName = 'DialogTitle';\nexport const DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => <DialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />);\nDialogDescription.displayName = 'DialogDescription';\n\nexport const AlertDialog: React.FC<React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>> = ({ onOpenChange, open, ...props }) => {\n  React.useEffect(() => {\n    if (open !== false || typeof document === 'undefined') return undefined;\n    const cleanup = () => {\n      if (!document.querySelector('[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]')) {\n        document.body.style.pointerEvents = '';\n      }\n    };\n    requestAnimationFrame(cleanup);\n    const timer = window.setTimeout(cleanup, 300);\n    return () => window.clearTimeout(timer);\n  }, [open]);\n  const handleOpenChange = React.useCallback((next: boolean) => {\n    onOpenChange?.(next);\n    if (!next && typeof document !== 'undefined') requestAnimationFrame(() => {\n      if (!document.querySelector('[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]')) document.body.style.pointerEvents = '';\n    });\n  }, [onOpenChange]);\n  return <AlertDialogPrimitive.Root open={open} onOpenChange={handleOpenChange} {...props} />;\n};\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\nexport const AlertDialogOverlay = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return <AlertDialogPrimitive.Overlay {...componentAttributes} {...props} ref={ref} className={cn('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className)} data-monkeys-component=\"alert-dialog\" data-slot=\"overlay\" data-monkeys-overlay style={{ pointerEvents: 'auto', ...style }} />;\n});\nAlertDialogOverlay.displayName = 'AlertDialogOverlay';\nexport const AlertDialogContent = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, style, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content {...componentAttributes} {...props} ref={ref} className={cn('fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', getOverlaySurfaceClassName('dialog'), className)} data-monkeys-component=\"alert-dialog\" data-slot=\"content\" data-surface=\"dialog\" data-monkeys-dialog-content style={{ pointerEvents: 'auto', ...style }} />\n    </AlertDialogPortal>\n  );\n});\nAlertDialogContent.displayName = 'AlertDialogContent';\nexport const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />;\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />;\nexport const AlertDialogTitle = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Title>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Title ref={ref} className={cn('text-lg font-semibold', className)} {...props} />);\nexport const AlertDialogDescription = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Description>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />);\nexport const AlertDialogAction = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Action>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />);\nexport const AlertDialogDangerAction = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Action>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants({ variant: 'destructive' }), className)} {...props} />);\nexport const AlertDialogCancel = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Cancel>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Cancel ref={ref} className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)} {...props} />);\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\nAlertDialogFooter.displayName = 'AlertDialogFooter';\nAlertDialogTitle.displayName = 'AlertDialogTitle';\nAlertDialogDescription.displayName = 'AlertDialogDescription';\nAlertDialogAction.displayName = 'AlertDialogAction';\nAlertDialogDangerAction.displayName = 'AlertDialogDangerAction';\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n","import {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n  type CSSProperties,\n  type ReactNode,\n  type Ref,\n  type RefObject,\n} from 'react';\n\nexport const skeletonAnimations = [\n  'pulse',\n  'shimmer',\n  'shimmer-soft',\n  'shimmer-diagonal',\n  'shimmer-vertical',\n  'drift',\n  'outline',\n  'none',\n] as const;\nexport type SkeletonAnimation = (typeof skeletonAnimations)[number];\nexport type SkeletonGroupAnimation = SkeletonAnimation | 'shimmer-shared' | 'shimmer-stagger';\n\nexport function validateSkeletonAnimation(value: unknown, grouped = false): void {\n  if (value === undefined || skeletonAnimations.includes(value as SkeletonAnimation)) return;\n  if (grouped && (value === 'shimmer-shared' || value === 'shimmer-stagger')) return;\n  throw new TypeError(\n    `Skeleton animation must be ${skeletonAnimations.join(', ')}${grouped ? ', shimmer-shared, or shimmer-stagger' : ''}.`,\n  );\n}\n\ntype Registration = { item?: number };\ntype Registry = {\n  nodes: Map<HTMLElement, Registration>;\n  update: () => void;\n};\ntype MotionContextValue = {\n  animation: SkeletonGroupAnimation;\n  disabled: boolean;\n  registry: Registry;\n};\nconst MotionContext = createContext<MotionContextValue | null>(null);\nconst ItemContext = createContext<number | undefined>(undefined);\n\nfunction clearGeometry(node: HTMLElement) {\n  delete node.dataset.skeletonReady;\n  for (const name of ['width', 'offset', 'delay'])\n    node.style.removeProperty(`--monkeys-skeleton-${name}`);\n}\n\nfunction useGroupRegistry(\n  animation: SkeletonGroupAnimation,\n  disabled: boolean,\n  enabled: boolean,\n  containerRef?: RefObject<HTMLElement>,\n) {\n  const registry = useMemo<Registry>(() => ({ nodes: new Map(), update: () => {} }), []);\n  useEffect(() => {\n    if (!enabled || disabled || (animation !== 'shimmer-shared' && animation !== 'shimmer-stagger'))\n      return;\n    const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n    let observer: ResizeObserver | undefined;\n    let frame: number | undefined;\n    let active = false;\n    const observed = new Set<HTMLElement>();\n    const measure = () => {\n      frame = undefined;\n      if (!active) return;\n      const nodes = [...registry.nodes.keys()].filter((node) => node.isConnected);\n      nodes.sort((a, b) => (a.compareDocumentPosition(b) & 2 ? 1 : -1));\n      if (animation === 'shimmer-stagger') {\n        nodes.forEach((node, index) => {\n          const item = registry.nodes.get(node)?.item ?? index;\n          node.style.setProperty('--monkeys-skeleton-delay', `${Math.min(item * 80, 400)}ms`);\n        });\n        return;\n      }\n      // Container-only resizing can move fixed-size shapes (for example space-between).\n      let container = containerRef?.current ?? nodes[0]?.parentElement;\n      for (const node of nodes)\n        while (container && !container.contains(node)) container = container.parentElement;\n      const targets = new Set<HTMLElement>(nodes);\n      for (const node of nodes) {\n        for (let ancestor = node.parentElement; ancestor; ancestor = ancestor.parentElement) {\n          targets.add(ancestor);\n          if (ancestor === container) break;\n        }\n      }\n      if (container) targets.add(container);\n      for (const node of observed)\n        if (!targets.has(node)) {\n          observer?.unobserve(node);\n          observed.delete(node);\n        }\n      for (const node of targets)\n        if (!observed.has(node)) {\n          observer?.observe(node);\n          observed.add(node);\n        }\n      // Read every box before writing offsets. The union also works for native table rows without a wrapper.\n      const boxes = nodes.map((node) => node.getBoundingClientRect());\n      const scales = nodes.map((node, index) => {\n        const style = getComputedStyle(node);\n        const extras =\n          style.boxSizing === 'border-box'\n            ? 0\n            : parseFloat(style.paddingLeft) +\n              parseFloat(style.paddingRight) +\n              parseFloat(style.borderLeftWidth) +\n              parseFloat(style.borderRightWidth);\n        const width = parseFloat(style.width) + extras;\n        const scale = width ? boxes[index].width / width : 1;\n        // CSSOM serializes fractional widths with less precision than DOMRect.\n        return Math.abs(scale - 1) < 0.0001 ? 1 : scale;\n      });\n      const left = Math.min(...boxes.map((box) => box.left));\n      const right = Math.max(...boxes.map((box) => box.right));\n      nodes.forEach((node, index) => {\n        const box = boxes[index];\n        if (!box.width || !box.height) {\n          clearGeometry(node);\n          return;\n        }\n        const scale = scales[index];\n        node.style.setProperty('--monkeys-skeleton-width', `${(right - left) / scale}px`);\n        node.style.setProperty('--monkeys-skeleton-offset', `${(left - box.left) / scale}px`);\n        if (!node.dataset.skeletonReady) {\n          // Newly mounted shapes join the same CSS phase; geometry updates never restart it.\n          node.style.setProperty('--monkeys-skeleton-delay', `${-(performance.now() % 2600)}ms`);\n          node.dataset.skeletonReady = 'true';\n        }\n      });\n    };\n    const schedule = () => {\n      if (active && frame === undefined) frame = window.requestAnimationFrame(measure);\n    };\n    const stop = () => {\n      active = false;\n      observer?.disconnect();\n      observer = undefined;\n      observed.clear();\n      if (frame !== undefined) window.cancelAnimationFrame(frame);\n      frame = undefined;\n      window.removeEventListener('resize', schedule);\n      window.removeEventListener('scroll', schedule, true);\n      registry.nodes.forEach((_, node) => clearGeometry(node));\n    };\n    const start = () => {\n      stop();\n      if (\n        query.matches ||\n        (animation === 'shimmer-shared' && typeof ResizeObserver === 'undefined')\n      )\n        return;\n      active = true;\n      if (animation === 'shimmer-shared') {\n        observer = new ResizeObserver(schedule);\n        window.addEventListener('resize', schedule);\n        window.addEventListener('scroll', schedule, { capture: true, passive: true });\n      }\n      schedule();\n    };\n    registry.update = schedule;\n    start();\n    query.addEventListener('change', start);\n    return () => {\n      stop();\n      query.removeEventListener('change', start);\n      registry.update = () => {};\n    };\n  }, [animation, disabled, enabled, registry, containerRef]);\n  // Reordering existing registered items can change their geometry without changing size.\n  useEffect(() => {\n    registry.update();\n  });\n  return registry;\n}\n\n/** A DOM-free boundary: composites retain their existing layout and measured roots. */\nexport function SkeletonScope({\n  animation,\n  animated,\n  children,\n  independent = false,\n  containerRef,\n}: {\n  animation?: SkeletonGroupAnimation;\n  animated?: boolean;\n  children?: ReactNode;\n  independent?: boolean;\n  containerRef?: RefObject<HTMLElement>;\n}) {\n  validateSkeletonAnimation(animation, true);\n  if (animated !== undefined && typeof animated !== 'boolean')\n    throw new TypeError('SkeletonGroup animated must be a boolean.');\n  const parent = useContext(MotionContext);\n  const inheritedItem = useContext(ItemContext);\n  const ownsGroup = independent || animation !== undefined || !parent;\n  const mode = animation ?? parent?.animation ?? 'pulse';\n  const disabled = !!parent?.disabled || animated === false || mode === 'none';\n  const registry = useGroupRegistry(mode, disabled, ownsGroup, containerRef);\n  const value = useMemo(\n    () => ({ animation: mode, disabled, registry: ownsGroup ? registry : parent!.registry }),\n    [mode, disabled, ownsGroup, registry, parent],\n  );\n  const content = <MotionContext.Provider value={value}>{children}</MotionContext.Provider>;\n  return (\n    <ItemContext.Provider value={ownsGroup ? undefined : inheritedItem}>\n      {content}\n    </ItemContext.Provider>\n  );\n}\n\nexport function SkeletonItem({ index, children }: { index: number; children?: ReactNode }) {\n  const parent = useContext(ItemContext);\n  return <ItemContext.Provider value={parent ?? index}>{children}</ItemContext.Provider>;\n}\n\n/** Preserve callback-ref cleanup (React 19) as well as the React 18 null callback. */\nexport function useSkeletonRef<T>(receive: (element: T | null) => void, forwardedRef?: Ref<T>) {\n  return useMemo(() => {\n    let cleanup: (() => void) | undefined;\n    return (element: T | null) => {\n      receive(element);\n      if (typeof forwardedRef === 'function') {\n        if (cleanup) {\n          cleanup();\n          cleanup = undefined;\n        } else if (element === null) {\n          forwardedRef(null);\n          return;\n        }\n        if (element !== null) {\n          const result = forwardedRef(element) as unknown;\n          if (typeof result === 'function') cleanup = result as () => void;\n        }\n      } else if (forwardedRef) (forwardedRef as { current: T | null }).current = element;\n    };\n  }, [receive, forwardedRef]);\n}\n\nexport function useSkeletonMotion(\n  animation?: SkeletonAnimation,\n  animated = true,\n  forwardedRef?: Ref<HTMLDivElement>,\n) {\n  validateSkeletonAnimation(animation);\n  const group = useContext(MotionContext);\n  const item = useContext(ItemContext);\n  const mode = !animated || group?.disabled ? 'none' : animation ?? group?.animation ?? 'pulse';\n  const [node, setNode] = useState<HTMLDivElement | null>(null);\n  const ref = useSkeletonRef(setNode, forwardedRef);\n  const registry =\n    animation === undefined && (mode === 'shimmer-shared' || mode === 'shimmer-stagger')\n      ? group?.registry\n      : undefined;\n  useEffect(() => {\n    if (!node || !registry) return;\n    registry.nodes.set(node, { item });\n    registry.update();\n    return () => {\n      registry.nodes.delete(node);\n      clearGeometry(node);\n      registry.update();\n    };\n  }, [node, registry, item, mode]);\n  return {\n    ref,\n    mode,\n    style:\n      mode === 'shimmer-stagger' && item !== undefined\n        ? ({ '--monkeys-skeleton-delay': `${Math.min(item * 80, 400)}ms` } as CSSProperties)\n        : undefined,\n  };\n}\n","/** Browser-facing URL boundary. Never serialize credentials or executable/document schemes. */\nexport function safeDisplayUrl(value: unknown, kind: 'link' | 'media'): string | undefined {\n  if (typeof value !== 'string') return undefined;\n  const text = value.trim();\n  if (!text || /[\\u0000-\\u001f\\u007f\\\\]/.test(text)) return undefined;\n  // Scheme-relative parsing must not change when the consumer page uses another protocol.\n  if (/^https?:/i.test(text) && !/^https?:\\/\\//i.test(text)) return undefined;\n  let url: URL;\n  try { url = new URL(text, 'https://monkeys.invalid/'); } catch { return undefined; }\n  if (url.username || url.password) return undefined;\n  if (url.protocol === 'http:' || url.protocol === 'https:') return text;\n  if (kind === 'link' && (url.protocol === 'mailto:' || url.protocol === 'tel:')) return text;\n  if (url.protocol === 'blob:') {\n    if (url.pathname.startsWith('null/')) return text;\n    try {\n      const origin = new URL(url.pathname);\n      if (['https:', 'http:'].includes(origin.protocol) && !origin.username && !origin.password) return text;\n    } catch { /* Malformed blob URL. */ }\n  }\n  return undefined;\n}\n\n/** Keep safe responsive images; reject the entire list if any candidate is unsafe or malformed. */\nexport function safeDisplaySrcSet(value: unknown): string | undefined {\n  if (typeof value !== 'string' || !value.trim()) return undefined;\n  const candidates = value.split(',');\n  for (const candidate of candidates) {\n    const parts = candidate.trim().split(/\\s+/);\n    if (!safeDisplayUrl(parts[0], 'media') || parts.length > 2 ||\n        (parts.length === 2 && !/^(?:[1-9]\\d*w|(?:\\d+(?:\\.\\d+)?|\\.\\d+)x)$/.test(parts[1]!))) return undefined;\n  }\n  return value;\n}\n","import { FileText, Image as ImageIcon, Loader2, Music2, Video } from 'lucide-react';\nimport { useEffect, useState, type ReactNode } from 'react';\n\nimport { MediaPreviewFrame, MediaPreviewImage } from '../primitives/MediaPreview';\nimport type { DataExplorerMediaPreviewProps } from './types';\nimport { cn } from './utils';\nimport { safeDisplayUrl, safeDisplaySrcSet } from '../safeDisplayUrl';\n\nfunction PreviewIcon({ kind }: { kind: NonNullable<DataExplorerMediaPreviewProps['kind']> }) {\n  const Icon = kind === 'image' ? ImageIcon : kind === 'video' ? Video : kind === 'audio' ? Music2 : FileText;\n  return <Icon className=\"h-6 w-6\" aria-hidden=\"true\" />;\n}\n\nexport function DataExplorerMediaPreview({\n  src,\n  kind = 'image',\n  alt = 'Preview',\n  title,\n  aspectRatio = 'auto',\n  fit = 'contain',\n  controls = true,\n  loading = false,\n  empty = 'No preview available',\n  error = 'Preview is unavailable right now.',\n  className,\n  style,\n  classNames,\n  mediaAttributes,\n  onLoad,\n  onError,\n}: DataExplorerMediaPreviewProps) {\n  const [hasError, setHasError] = useState(false);\n  const resolvedSrc = safeDisplayUrl(src, 'media') ?? '';\n  const safeMediaAttributes = Object.fromEntries(Object.entries(mediaAttributes ?? {}).flatMap(([key, value]) => {\n    const name = key.toLowerCase();\n    if (name === 'src' || name === 'srcdoc' || name === 'dangerouslysetinnerhtml') return [];\n    if (name === 'srcset') return [['srcSet', safeDisplaySrcSet(value)]];\n    if (name === 'poster') return [['poster', safeDisplayUrl(value, 'media')]];\n    return [[key, value]];\n  }));\n\n  useEffect(() => {\n    setHasError(false);\n  }, [resolvedSrc, kind]);\n\n  const renderPlaceholder = (content: ReactNode, placeholderClassName?: string) => (\n    <div\n      className={cn(\n        'flex min-h-24 flex-col items-center justify-center gap-2 bg-muted/30 p-4 text-center text-sm text-muted-foreground',\n        classNames?.placeholder,\n        placeholderClassName,\n      )}\n      role={loading ? 'status' : 'img'}\n      aria-label={typeof content === 'string' ? content : undefined}\n    >\n      {content}\n    </div>\n  );\n\n  if (loading) {\n    return (\n      <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style} aria-busy=\"true\">\n        <div\n          className={cn(\n            'flex min-h-24 flex-col items-center justify-center gap-2 bg-muted/30 p-4 text-sm text-muted-foreground',\n            classNames?.loading,\n          )}\n        >\n          <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\n          {title || 'Loading preview...'}\n        </div>\n      </div>\n    );\n  }\n\n  if (!resolvedSrc || hasError) {\n    return (\n      <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style}>\n        {renderPlaceholder(\n          <>\n            <PreviewIcon kind={kind} />\n            <span className={cn('max-w-full truncate', hasError ? classNames?.error : undefined)}>\n              {hasError ? error : empty}\n            </span>\n            {title ? <span className=\"max-w-full truncate text-xs\">{title}</span> : null}\n          </>,\n        )}\n      </div>\n    );\n  }\n\n  const handleError = () => {\n    setHasError(true);\n    onError?.();\n  };\n\n  const media =\n    kind === 'image' ? (\n      <MediaPreviewImage\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        alt={alt}\n        fit={fit}\n        className={classNames?.media}\n        loading=\"lazy\"\n        decoding=\"async\"\n        draggable={false}\n        onLoad={onLoad}\n        onError={handleError}\n      />\n    ) : kind === 'video' ? (\n      <video\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        className={cn('block h-auto w-full', fit === 'cover' ? 'object-cover' : 'object-contain', classNames?.media)}\n        controls={controls}\n        preload=\"metadata\"\n        onLoadedData={onLoad}\n        onError={handleError}\n      />\n    ) : kind === 'audio' ? (\n      <audio\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        className={cn('w-full', classNames?.media)}\n        controls={controls}\n        preload=\"metadata\"\n        onCanPlay={onLoad}\n        onError={handleError}\n      />\n    ) : (\n      renderPlaceholder(\n        <>\n          <PreviewIcon kind=\"file\" />\n          <span className=\"max-w-full truncate\">{title || resolvedSrc}</span>\n        </>,\n      )\n    );\n\n  if (kind === 'image') {\n    return (\n      <MediaPreviewFrame aspectRatio={aspectRatio} className={cn(classNames?.root, className)} style={style}>\n        {media}\n      </MediaPreviewFrame>\n    );\n  }\n\n  return <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style}>{media}</div>;\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { DragEvent, ReactNode } from \"react\";\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from \"./theme\";\nimport type {\n  DataExplorerViewTreeAction,\n  DataExplorerViewTreeActionContext,\n  DataExplorerViewTreeGroup,\n  DataExplorerViewTreeNode,\n  DataExplorerViewTreeProps,\n  DataExplorerViewTreeReorderPayload,\n} from './types';\nimport { resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n  TGroupSource,\n  TNodeSource,\n  TContext\n>;\n\ntype TreeNode<\n  TNodeSource,\n  TGroupSource = unknown,\n  TContext = unknown,\n> = DataExplorerViewTreeNode<TNodeSource, TGroupSource, TContext>;\n\ntype FlattenedNode<TNodeSource, TGroupSource, TContext> = {\n  node: TreeNode<TNodeSource, TGroupSource, TContext>;\n  group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n  parentId?: string;\n  index: number;\n};\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn(\n        \"h-3.5 w-3.5 transition-transform\",\n        expanded && \"rotate-90\",\n      )}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"12\" cy=\"5\" r=\"1\" />\n      <circle cx=\"12\" cy=\"19\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction GripIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\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      <circle cx=\"9\" cy=\"6\" r=\"1\" />\n      <circle cx=\"9\" cy=\"12\" r=\"1\" />\n      <circle cx=\"9\" cy=\"18\" r=\"1\" />\n      <circle cx=\"15\" cy=\"6\" r=\"1\" />\n      <circle cx=\"15\" cy=\"12\" r=\"1\" />\n      <circle cx=\"15\" cy=\"18\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction collectDefaultExpandedNodeIds<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  defaults: Set<string>,\n) {\n  for (const node of nodes ?? []) {\n    if (node.defaultExpanded) {\n      defaults.add(node.id);\n    }\n    collectDefaultExpandedNodeIds(node.children, defaults);\n  }\n}\n\nfunction buildDefaultNodeExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedNodeIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedNodeIds ?? []);\n  for (const group of groups) {\n    collectDefaultExpandedNodeIds(group.nodes, defaults);\n  }\n  return defaults;\n}\n\nfunction buildDefaultGroupExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedGroupIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedGroupIds ?? []);\n  for (const group of groups) {\n    if (group.hideHeader || group.defaultExpanded !== false) {\n      defaults.add(group.id);\n    }\n  }\n  return defaults;\n}\n\nfunction flattenNodes<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n  parentId: string | undefined,\n  entries: Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>,\n) {\n  for (const [index, node] of (nodes ?? []).entries()) {\n    entries.set(node.id, { node, group, parentId, index });\n    flattenNodes(node.children, group, node.id, entries);\n  }\n}\n\nfunction buildFlattenedNodeMap<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n) {\n  const entries = new Map<\n    string,\n    FlattenedNode<TNodeSource, TGroupSource, TContext>\n  >();\n  for (const group of groups) {\n    flattenNodes(group.nodes, group, undefined, entries);\n  }\n  return entries;\n}\n\nfunction getNodeActions<TNodeSource, TGroupSource, TContext>(\n  node: TreeNode<TNodeSource, TGroupSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((node.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nfunction getGroupActions<TNodeSource, TGroupSource, TContext>(\n  group: TreeGroup<TGroupSource, TNodeSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((group.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nexport function DataExplorerViewTree<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>({\n  groups,\n  nodes,\n  context,\n  selectedNodeId,\n  selectedGroupId,\n  expandedNodeIds,\n  defaultExpandedNodeIds,\n  expandedGroupIds,\n  defaultExpandedGroupIds,\n  resetExpansionKey,\n  nodeActions,\n  groupActions,\n  indentSize = 16,\n  indentOffset = 8,\n  actionIcon,\n  empty,\n  loading = false,\n  loadingNode,\n  error,\n  labels,\n  reorderMode = \"none\",\n  appearance,\n  className,\n  classNames,\n  onSelectNode,\n  onSelectGroup,\n  onExpandedNodeIdsChange,\n  onExpandedGroupIdsChange,\n  onAction,\n  onReorderNodes,\n}: DataExplorerViewTreeProps<TNodeSource, TGroupSource, TContext>) {\n  const internalLabels = useMonkeysLocaleMessages().dataExplorer.viewTree;\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const actionLabel = labels?.actions ?? internalLabels.actions;\n  const expandLabel = labels?.expand ?? internalLabels.expand;\n  const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n  const loadingContent =\n    loadingNode ?? labels?.loading ?? internalLabels.loading;\n  const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n  const hasExplicitGroups = Array.isArray(groups);\n  const resolvedGroups = useMemo<\n    Array<TreeGroup<TGroupSource, TNodeSource, TContext>>\n  >(() => {\n    if (hasExplicitGroups) {\n      return groups;\n    }\n    return [\n      {\n        id: \"__root__\",\n        hideHeader: true,\n        defaultExpanded: true,\n        nodes: Array.isArray(nodes) ? nodes : [],\n      },\n    ];\n  }, [groups, hasExplicitGroups, nodes]);\n  const flattenedNodeMap = useMemo(\n    () => buildFlattenedNodeMap(resolvedGroups),\n    [resolvedGroups],\n  );\n  const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(() =>\n    buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n  );\n  const [internalExpandedGroupIds, setInternalExpandedGroupIds] = useState(() =>\n    buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n  );\n  const [draggingNodeId, setDraggingNodeId] = useState<string | undefined>();\n  const [dragOverNodeId, setDragOverNodeId] = useState<string | undefined>();\n\n  useEffect(() => {\n    setInternalExpandedNodeIds(\n      buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n    );\n    setInternalExpandedGroupIds(\n      buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n    );\n  }, [defaultExpandedGroupIds, defaultExpandedNodeIds, resetExpansionKey]);\n\n  const resolvedExpandedNodeIds =\n    expandedNodeIds !== undefined\n      ? new Set(expandedNodeIds)\n      : internalExpandedNodeIds;\n  const resolvedExpandedGroupIds =\n    expandedGroupIds !== undefined\n      ? new Set(expandedGroupIds)\n      : internalExpandedGroupIds;\n\n  const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedNodeIds);\n    if (expanded) {\n      next.add(nodeId);\n    } else {\n      next.delete(nodeId);\n    }\n    if (expandedNodeIds === undefined) {\n      setInternalExpandedNodeIds(next);\n    }\n    onExpandedNodeIdsChange?.([...next]);\n  };\n\n  const setGroupExpanded = (groupId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedGroupIds);\n    if (expanded) {\n      next.add(groupId);\n    } else {\n      next.delete(groupId);\n    }\n    if (expandedGroupIds === undefined) {\n      setInternalExpandedGroupIds(next);\n    }\n    onExpandedGroupIdsChange?.([...next]);\n  };\n\n  const createActionContext = (\n    action: DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ): DataExplorerViewTreeActionContext<TNodeSource, TGroupSource, TContext> =>\n    target.type === \"node\"\n      ? {\n          type: \"node\",\n          action,\n          node: target.node,\n          group: target.group,\n          context,\n        }\n      : {\n          type: \"group\",\n          action,\n          group: target.group,\n          context,\n        };\n\n  const renderActions = (\n    actions: Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ) => {\n    const visibleActions = actions.filter((action) => {\n      const payload = createActionContext(action, target);\n      return resolveDataExplorerValue(action.visible, payload) ?? true;\n    });\n    if (visibleActions.length === 0) return null;\n\n    return (\n      <DropdownMenu.Root>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            title={actionLabel}\n            aria-label={actionLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              target.type === \"group\"\n                ? theme.slots.treeGroupActions\n                : theme.slots.treeNodeActions,\n              target.type === \"group\"\n                ? classNames?.groupActions\n                : cn(classNames?.nodeActions, classNames?.itemActions),\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {actionIcon ?? <MoreIcon />}\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align=\"end\"\n            sideOffset={6}\n            className={cn(theme.slots.menuContent, classNames?.menuContent)}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {visibleActions.map((action) => {\n              const payload = createActionContext(action, target);\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, payload) ?? false) ||\n                (resolveDataExplorerValue(action.loading, payload) ?? false);\n              const active =\n                resolveDataExplorerValue(action.active, payload) ?? false;\n\n              if (action.render) {\n                return <div key={action.id}>{action.render(payload)}</div>;\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                  <DropdownMenu.Item\n                    title={action.title}\n                    disabled={disabled}\n                    className={cn(\n                      theme.slots.menuItem,\n                      getDataExplorerMenuItemToneClassName(theme, action.tone),\n                      active && \"bg-accent text-accent-foreground\",\n                      classNames?.menuItem,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (disabled) return;\n                      void action.onAction?.(payload);\n                      void onAction?.(payload);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span className={theme.slots.menuItemIcon}>\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span className={theme.slots.menuItemLabel}>\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    );\n  };\n\n  const handleDrop = (\n    event: DragEvent<HTMLElement>,\n    overNode: TreeNode<TNodeSource, TGroupSource, TContext>,\n  ) => {\n    event.preventDefault();\n    const activeNodeId =\n      draggingNodeId ||\n      event.dataTransfer.getData(\"application/x-data-explorer-node\");\n    if (!activeNodeId || activeNodeId === overNode.id || !onReorderNodes) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const activeEntry = flattenedNodeMap.get(activeNodeId);\n    const overEntry = flattenedNodeMap.get(overNode.id);\n    if (!activeEntry || !overEntry) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const sameParent =\n      activeEntry.parentId === overEntry.parentId &&\n      activeEntry.group?.id === overEntry.group?.id;\n    if (reorderMode === \"same-parent\" && !sameParent) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const payload: DataExplorerViewTreeReorderPayload<\n      TNodeSource,\n      TGroupSource,\n      TContext\n    > = {\n      activeNode: activeEntry.node,\n      overNode: overEntry.node,\n      activeGroup: activeEntry.group,\n      overGroup: overEntry.group,\n      activeParentId: activeEntry.parentId,\n      overParentId: overEntry.parentId,\n      oldIndex: activeEntry.index,\n      newIndex: overEntry.index,\n      sameParent,\n      context,\n    };\n    void onReorderNodes(payload);\n    setDraggingNodeId(undefined);\n    setDragOverNodeId(undefined);\n  };\n\n  const renderNode = (\n    node: TreeNode<TNodeSource, TGroupSource, TContext>,\n    group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n    depth: number,\n  ): ReactNode => {\n    const childNodes = Array.isArray(node.children) ? node.children : [];\n    const hasChildren = childNodes.length > 0;\n    const isExpanded =\n      node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n    const isSelected = selectedNodeId === node.id;\n    const isSelectable = node.selectable !== false && !node.disabled;\n    const isReorderable =\n      reorderMode !== \"none\" && !!onReorderNodes && node.reorderable !== false;\n    const isDragging = draggingNodeId === node.id;\n    const isDragOver = dragOverNodeId === node.id && draggingNodeId !== node.id;\n    const actions = getNodeActions(node, nodeActions);\n\n    return (\n      <div\n        key={node.id}\n        data-data-explorer-entry=\"node\"\n        data-data-explorer-node-id={node.id}\n        data-data-explorer-group-id={group?.id}\n        className={cn(\n          theme.slots.treeNode,\n          classNames?.node,\n          classNames?.item,\n          node.className,\n        )}\n        onDragOver={(event) => {\n          if (!draggingNodeId || !isReorderable) return;\n          event.preventDefault();\n          setDragOverNodeId(node.id);\n        }}\n        onDragLeave={() => {\n          if (dragOverNodeId === node.id) {\n            setDragOverNodeId(undefined);\n          }\n        }}\n        onDrop={(event) => handleDrop(event, node)}\n      >\n        <div\n          className={cn(\n            theme.slots.treeNodeButton,\n            isSelected && theme.slots.treeNodeSelected,\n            node.disabled && theme.slots.treeNodeDisabled,\n            isDragging && theme.slots.treeNodeDragging,\n            isDragOver && \"ring-1 ring-primary/30\",\n            isSelected && classNames?.itemSelected,\n            isSelected && classNames?.nodeSelected,\n            node.disabled && classNames?.nodeDisabled,\n            isDragging && classNames?.nodeDragging,\n            classNames?.nodeButton,\n            classNames?.itemButton,\n          )}\n          style={{\n            paddingLeft: `calc(${(node.indentLevel ?? depth) * indentSize + indentOffset}px + var(--data-explorer-tree-group-indent, 0px))`,\n          }}\n          role=\"treeitem\"\n          aria-selected={isSelected || undefined}\n          aria-disabled={node.disabled || undefined}\n          aria-expanded={hasChildren ? isExpanded : undefined}\n          aria-label={node.ariaLabel}\n          tabIndex={isSelectable ? 0 : -1}\n          onClick={() => {\n            if (!isSelectable) return;\n            onSelectNode?.(node, context);\n          }}\n          onKeyDown={(event) => {\n            if (event.target !== event.currentTarget) return;\n            if (!isSelectable) return;\n            if (event.key !== \"Enter\" && event.key !== \" \") return;\n            event.preventDefault();\n            onSelectNode?.(node, context);\n          }}\n        >\n          {isReorderable ? (\n            <span\n              draggable\n              className={cn(\n                theme.slots.treeNodeDragHandle,\n                classNames?.nodeDragHandle,\n              )}\n              onClick={(event) => event.stopPropagation()}\n              onDragStart={(event) => {\n                event.stopPropagation();\n                event.dataTransfer.effectAllowed = \"move\";\n                event.dataTransfer.setData(\n                  \"application/x-data-explorer-node\",\n                  node.id,\n                );\n                setDraggingNodeId(node.id);\n              }}\n              onDragEnd={() => {\n                setDraggingNodeId(undefined);\n                setDragOverNodeId(undefined);\n              }}\n            >\n              <GripIcon />\n            </span>\n          ) : null}\n          {hasChildren ? (\n            <button\n              type=\"button\"\n              className={cn(\n                theme.slots.treeNodeToggle,\n                classNames?.nodeToggle,\n                classNames?.expander,\n              )}\n              aria-label={isExpanded ? collapseLabel : expandLabel}\n              onClick={(event) => {\n                event.stopPropagation();\n                setNodeExpanded(node.id, !isExpanded);\n              }}\n            >\n              <ChevronIcon expanded={isExpanded} />\n            </button>\n          ) : (\n            <span\n              className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)}\n            />\n          )}\n          {node.icon ? (\n            <span\n              className={cn(\n                theme.slots.treeNodeIcon,\n                classNames?.nodeIcon,\n                classNames?.itemIcon,\n              )}\n            >\n              {node.icon}\n            </span>\n          ) : null}\n          <span className=\"flex min-w-0 flex-1 flex-col\">\n            <span\n              className={cn(\n                theme.slots.treeNodeLabel,\n                classNames?.nodeLabel,\n                classNames?.itemLabel,\n              )}\n            >\n              {node.label}\n            </span>\n            {node.description ? (\n              <span\n                className={cn(\n                  theme.slots.treeNodeDescription,\n                  classNames?.nodeDescription,\n                )}\n              >\n                {node.description}\n              </span>\n            ) : null}\n          </span>\n          {node.meta ? (\n            <span\n              className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}\n            >\n              {node.meta}\n            </span>\n          ) : null}\n          {node.badge ? (\n            <span\n              className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}\n            >\n              {node.badge}\n            </span>\n          ) : null}\n          {renderActions(actions, { type: \"node\", node, group })}\n        </div>\n        {hasChildren && isExpanded ? (\n          <div\n            className={cn(\n              theme.slots.treeNodeChildren,\n              classNames?.nodeChildren,\n              classNames?.list,\n            )}\n          >\n            {childNodes.map((child) => renderNode(child, group, depth + 1))}\n          </div>\n        ) : null}\n      </div>\n    );\n  };\n\n  const renderPlaceholder = (\n    content: ReactNode,\n    slotClassName: string,\n    classNameOverride: string | undefined,\n  ) => <div className={cn(slotClassName, classNameOverride)}>{content}</div>;\n\n  if (loading) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          loadingContent,\n          theme.slots.treeLoading,\n          classNames?.loading,\n        )}\n      </div>\n    );\n  }\n\n  if (error) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          error ?? labels?.error,\n          theme.slots.treeError,\n          classNames?.error,\n        )}\n      </div>\n    );\n  }\n\n  const hasAnyNodes = resolvedGroups.some(\n    (group) => (group.nodes ?? []).length > 0,\n  );\n  const hasAnyGroupState = resolvedGroups.some(\n    (group) => group.status === \"loading\" || group.error,\n  );\n  const shouldRenderGlobalEmpty =\n    !hasAnyNodes &&\n    !hasAnyGroupState &&\n    (!hasExplicitGroups || resolvedGroups.length === 0);\n  if (shouldRenderGlobalEmpty) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          emptyContent,\n          theme.slots.treeEmpty,\n          classNames?.empty,\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn(theme.slots.treeRoot, classNames?.root, className)}\n      role={hasAnyNodes || resolvedGroups.some((group) => !group.hideHeader) ? 'tree' : undefined}\n    >\n      {resolvedGroups.map((group) => {\n        const groupExpanded =\n          group.hideHeader ||\n          group.collapsible === false ||\n          resolvedExpandedGroupIds.has(group.id);\n        const groupNodeCount = group.nodes?.length ?? 0;\n        const actions = getGroupActions(group, groupActions);\n        const groupSelected = selectedGroupId === group.id;\n        const groupCollapsible = group.collapsible !== false;\n        return (\n          <section\n            key={group.id}\n            data-data-explorer-entry=\"group\"\n            data-data-explorer-group-id={group.id}\n            className={cn(\n              theme.slots.treeGroup,\n              classNames?.group,\n              group.className,\n            )}\n          >\n            {!group.hideHeader ? (\n              <div\n                role=\"treeitem\"\n                aria-label={typeof group.label === 'string' ? group.label : undefined}\n                aria-selected={group.selectable ? groupSelected : undefined}\n                aria-expanded={groupCollapsible ? groupExpanded : undefined}\n                className={cn(\n                  theme.slots.treeGroupHeader,\n                  theme.slots.treeGroupHeaderButton,\n                  groupSelected && theme.slots.treeNodeSelected,\n                  classNames?.groupHeader,\n                  classNames?.groupHeaderButton,\n                  groupSelected && classNames?.itemSelected,\n                )}\n              >\n                <button\n                  type=\"button\"\n                  className={cn(\n                    \"flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                    classNames?.groupLabel,\n                  )}\n                  aria-pressed={group.selectable ? groupSelected : undefined}\n                  aria-expanded={\n                    !group.selectable && groupCollapsible\n                      ? groupExpanded\n                      : undefined\n                  }\n                  onClick={() => {\n                    if (group.selectable) {\n                      onSelectGroup?.(group, context);\n                      return;\n                    }\n                    if (groupCollapsible)\n                      setGroupExpanded(group.id, !groupExpanded);\n                  }}\n                >\n                  {group.icon ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeIcon,\n                        classNames?.nodeIcon,\n                        classNames?.itemIcon,\n                      )}\n                    >\n                      {group.icon}\n                    </span>\n                  ) : null}\n                  <span className=\"flex min-w-0 flex-1 flex-col\">\n                    {group.label ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeLabel,\n                          classNames?.nodeLabel,\n                          classNames?.itemLabel,\n                        )}\n                      >\n                        {group.label}\n                      </span>\n                    ) : null}\n                    {group.description ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeDescription,\n                          classNames?.nodeDescription,\n                        )}\n                      >\n                        {group.description}\n                      </span>\n                    ) : null}\n                  </span>\n                  {group.meta ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeMeta,\n                        classNames?.nodeMeta,\n                      )}\n                    >\n                      {group.meta}\n                    </span>\n                  ) : null}\n                  {group.badge ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeBadge,\n                        classNames?.nodeBadge,\n                      )}\n                    >\n                      {group.badge}\n                    </span>\n                  ) : null}\n                </button>\n                {groupCollapsible ? (\n                  <button\n                    type=\"button\"\n                    className={cn(\n                      theme.slots.treeNodeToggle,\n                      classNames?.expander,\n                    )}\n                    aria-label={groupExpanded ? collapseLabel : expandLabel}\n                    aria-expanded={groupExpanded}\n                    onClick={() => setGroupExpanded(group.id, !groupExpanded)}\n                  >\n                    <ChevronIcon expanded={groupExpanded} />\n                  </button>\n                ) : (\n                  <span className={cn(theme.slots.treeNodeToggle, classNames?.expander)} />\n                )}\n                {renderActions(actions, { type: \"group\", group })}\n              </div>\n            ) : null}\n            {groupExpanded ? (\n              <div\n                role=\"group\"\n                className={cn(\n                  theme.slots.treeGroupContent,\n                  classNames?.groupContent,\n                  classNames?.list,\n                )}\n              >\n                {group.loading || group.status === \"loading\"\n                  ? renderPlaceholder(\n                      loadingContent,\n                      theme.slots.treeLoading,\n                      classNames?.loading,\n                    )\n                  : group.error || group.status === \"error\"\n                    ? renderPlaceholder(\n                        group.error ?? labels?.error ?? internalLabels.error,\n                        theme.slots.treeError,\n                        classNames?.error,\n                      )\n                    : groupNodeCount > 0\n                      ? group.nodes?.map((node) => renderNode(node, group, 0))\n                      : renderPlaceholder(\n                          group.empty ?? emptyContent,\n                          theme.slots.treeEmpty,\n                          classNames?.empty,\n                        )}\n              </div>\n            ) : null}\n          </section>\n        );\n      })}\n    </div>\n  );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../base/utils\";\nimport type { DataExplorerViewTreeClassNames } from \"../data-explorer\";\nimport type { NavigationSidebarActiveVariant } from \"./types\";\n\nexport const unifiedRow =\n  \"gap-2 rounded-[var(--radius)] border border-transparent text-sm font-medium motion-reduce:transition-none\";\nexport const unifiedIcon =\n  \"size-[var(--monkeys-component-navigation-sidebar-icon-size,1.125rem)] shrink-0 text-inherit [&_svg]:size-full\";\nexport const unifiedInactive =\n  \"text-foreground hover:border-transparent hover:bg-[var(--navigation-internal-hover-background)] hover:text-[var(--navigation-internal-hover-foreground)]\";\nexport const unifiedSelected =\n  \"border-[var(--navigation-internal-selected-border)] bg-[var(--navigation-internal-selected-background)] text-[var(--navigation-internal-selected-foreground)] hover:border-[var(--navigation-internal-selected-border)] hover:bg-[var(--navigation-internal-selected-background)] hover:text-[var(--navigation-internal-selected-foreground)]\";\nexport const unifiedThemeDefaults =\n  \"[--navigation-internal-theme-selected-background:color-mix(in_srgb,hsl(var(--monkeys-color-primary,var(--primary)))_10%,transparent)] [--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-primary,var(--primary)))] dark:[--navigation-internal-theme-selected-background:hsl(var(--monkeys-color-accent,var(--accent)))] dark:[--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-foreground,var(--foreground)))]\";\n\nexport function unifiedStyle(\n  activeVariant?: NavigationSidebarActiveVariant,\n): CSSProperties {\n  const background = {\n    muted: \"hsl(var(--monkeys-color-accent,var(--accent)))\",\n    soft: \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 10%,transparent)\",\n    solid: \"hsl(var(--monkeys-color-primary,var(--primary)))\",\n    outline: \"hsl(var(--monkeys-color-background,var(--background)))\",\n  }[activeVariant ?? \"muted\"];\n  const foreground =\n    activeVariant === \"solid\"\n      ? \"hsl(var(--monkeys-color-primary-foreground,var(--primary-foreground)))\"\n      : \"hsl(var(--monkeys-color-foreground,var(--foreground)))\";\n  const border =\n    activeVariant === undefined || activeVariant === \"muted\"\n      ? \"transparent\"\n      : activeVariant === \"soft\"\n        ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 25%,transparent)\"\n        : activeVariant === \"outline\"\n          ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 55%,transparent)\"\n          : \"hsl(var(--monkeys-color-primary,var(--primary)))\";\n\n  return {\n    \"--navigation-internal-default-selected-background\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-background)\"\n      : background,\n    \"--navigation-internal-default-selected-foreground\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-foreground)\"\n      : foreground,\n    \"--navigation-internal-selected-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-background,var(--navigation-internal-default-selected-background))\",\n    \"--navigation-internal-selected-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--navigation-internal-default-selected-foreground))\",\n    \"--navigation-internal-selected-border\": `var(--monkeys-component-navigation-sidebar-row-selected-border,${border})`,\n    \"--navigation-internal-hover-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-background,color-mix(in srgb,hsl(var(--monkeys-color-accent,var(--accent))) 65%,transparent))\",\n    \"--navigation-internal-hover-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground))))\",\n  } as CSSProperties;\n}\n\n/** Tree-local fallbacks preserve existing theme overrides without changing route styles. */\nconst treeStateVariables =\n  \"[--navigation-internal-selected-background:var(--monkeys-component-navigation-sidebar-row-selected-background,var(--monkeys-component-navigation-sidebar-tree-row-selected-background,var(--navigation-internal-default-selected-background)))] [--navigation-internal-selected-foreground:var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,var(--navigation-internal-default-selected-foreground)))] [--navigation-internal-hover-background:var(--monkeys-component-navigation-sidebar-row-hover-background,var(--monkeys-component-navigation-sidebar-tree-row-hover-background,color-mix(in_srgb,hsl(var(--monkeys-color-accent,var(--accent)))_65%,transparent)))] [--navigation-internal-hover-foreground:var(--monkeys-component-navigation-sidebar-row-hover-foreground,var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground)))))]\";\n\nconst selectedTreeNode =\n  \"aria-selected:border-[var(--navigation-internal-selected-border)] aria-selected:bg-[var(--navigation-internal-selected-background)] aria-selected:text-[var(--navigation-internal-selected-foreground)] aria-selected:hover:border-[var(--navigation-internal-selected-border)] aria-selected:hover:bg-[var(--navigation-internal-selected-background)] aria-selected:hover:text-[var(--navigation-internal-selected-foreground)]\";\nconst nestedControl =\n  \"rounded-[var(--monkeys-component-navigation-sidebar-action-radius,0.25rem)] text-inherit hover:bg-foreground/10 hover:text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\";\n\nexport function unifiedTreeClassNames(\n  height: string,\n  padding: string,\n  overrides: DataExplorerViewTreeClassNames = {},\n): DataExplorerViewTreeClassNames {\n  const row = cn(unifiedRow, height, padding, unifiedInactive);\n  return {\n    ...overrides,\n    root: cn(treeStateVariables, \"space-y-0.5\", overrides.root),\n    group: cn(\n      \"space-y-0.5\",\n      // Indent row contents, keeping guide-free hover and selection full width.\n      \"[&>[role=treeitem]+[role=group]]:[--data-explorer-tree-group-indent:var(--monkeys-component-navigation-sidebar-tree-group-indent,1rem)]\",\n      overrides.group,\n    ),\n    groupHeaderButton: cn(\"h-auto\", row, overrides.groupHeaderButton),\n    nodeButton: cn(row, selectedTreeNode, overrides.nodeButton),\n    itemSelected: cn(unifiedSelected, overrides.itemSelected),\n    nodeIcon: cn(\n      unifiedIcon,\n      \"group-hover/tree-node:text-inherit\",\n      overrides.nodeIcon,\n    ),\n    nodeLabel: cn(\"font-medium\", overrides.nodeLabel),\n    nodeDescription: cn(\"text-inherit\", overrides.nodeDescription),\n    nodeDisabled: cn(\"opacity-50\", overrides.nodeDisabled),\n    groupActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-group:opacity-100\",\n      overrides.groupActions,\n    ),\n    nodeActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-node:opacity-100\",\n      overrides.nodeActions,\n    ),\n    nodeToggle: cn(nestedControl, \"order-1 empty:hidden\", overrides.nodeToggle),\n    expander: cn(nestedControl, \"order-1 empty:hidden\", overrides.expander),\n    nodeDragHandle: cn(nestedControl, overrides.nodeDragHandle),\n  };\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport {\n  Fragment,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type ElementType,\n  type ForwardedRef,\n  type KeyboardEvent,\n  type MouseEvent,\n  type MutableRefObject,\n  type PointerEvent,\n  type ReactElement,\n  type ReactNode,\n  type RefAttributes,\n} from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport {\n  DataExplorerViewTree,\n  type DataExplorerViewTreeClassNames,\n} from \"../data-explorer\";\nimport type {\n  NavigationSidebarActiveVariant,\n  NavigationSidebarAppearance,\n  NavigationSidebarCatalogItem,\n  NavigationSidebarCatalogProps,\n  NavigationSidebarCatalogSection,\n  NavigationSidebarClassNames,\n  NavigationSidebarCommonProps,\n  NavigationSidebarDisclosureRouteItem,\n  NavigationSidebarProps,\n  NavigationSidebarRouteChild,\n  NavigationSidebarRouteItem,\n  NavigationSidebarRouteProps,\n  NavigationSidebarStorage,\n  NavigationSidebarTreeProps,\n} from \"./types\";\nimport {\n  unifiedIcon,\n  unifiedInactive,\n  unifiedRow,\n  unifiedSelected,\n  unifiedStyle,\n  unifiedThemeDefaults,\n  unifiedTreeClassNames,\n} from \"./unified-appearance\";\n\ninterface LayoutBounds {\n  defaultWidth: number;\n  minWidth: number;\n  maxWidth: number;\n  collapsedWidth: number;\n  collapseThreshold: number;\n}\n\ninterface StoredLayout {\n  collapsed: boolean;\n  width: number;\n}\n\nfunction CollapseIcon({ collapsed }: { collapsed: boolean }) {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <path\n        d={\n          collapsed\n            ? \"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n            : \"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n        }\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction SearchIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n      <path\n        d=\"m12.2 12.2 3.3 3.3\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction ClearIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 6 8 8m0-8-8 8\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-4 w-4\"\n      fill=\"currentColor\"\n    >\n      <circle cx=\"5\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"10\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"15\" cy=\"10\" r=\"1.2\" />\n    </svg>\n  );\n}\n\nfunction DisclosureIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className={cn(\n        \"h-4 w-4 transition-transform motion-reduce:transition-none\",\n        expanded && \"rotate-180\",\n      )}\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 8 4 4 4-4\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\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 requireFiniteNumber(name: string, value: number) {\n  if (!Number.isFinite(value)) {\n    throw new RangeError(`NavigationSidebar ${name} must be a finite number.`);\n  }\n}\n\nfunction resolveLayoutBounds(\n  props: NavigationSidebarCommonProps,\n): LayoutBounds {\n  const minWidth = props.minWidth ?? 180;\n  const maxWidth = props.maxWidth ?? 420;\n  const defaultWidth = props.defaultWidth ?? 256;\n  const collapsedWidth = props.collapsedWidth ?? 60;\n  const collapseThreshold = props.collapseThreshold ?? 140;\n\n  requireFiniteNumber(\"minWidth\", minWidth);\n  requireFiniteNumber(\"maxWidth\", maxWidth);\n  requireFiniteNumber(\"defaultWidth\", defaultWidth);\n  requireFiniteNumber(\"collapsedWidth\", collapsedWidth);\n  requireFiniteNumber(\"collapseThreshold\", collapseThreshold);\n\n  if (minWidth <= 0)\n    throw new RangeError(\n      \"NavigationSidebar minWidth must be greater than zero.\",\n    );\n  if (maxWidth < minWidth)\n    throw new RangeError(\n      \"NavigationSidebar maxWidth must be greater than or equal to minWidth.\",\n    );\n  if (collapsedWidth < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapsedWidth cannot be negative.\",\n    );\n  if (collapseThreshold < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapseThreshold cannot be negative.\",\n    );\n\n  return {\n    defaultWidth,\n    minWidth,\n    maxWidth,\n    collapsedWidth,\n    collapseThreshold,\n  };\n}\n\nfunction clampWidth(\n  width: number,\n  bounds: Pick<LayoutBounds, \"minWidth\" | \"maxWidth\">,\n) {\n  return Math.min(Math.max(width, bounds.minWidth), bounds.maxWidth);\n}\n\nfunction reportStorageError(\n  error: unknown,\n  onStorageError: ((error: unknown) => void) | undefined,\n) {\n  if (onStorageError) {\n    onStorageError(error);\n    return;\n  }\n  if (typeof console !== \"undefined\") {\n    console.warn(\"NavigationSidebar could not persist layout state.\", error);\n  }\n}\n\nfunction resolveStorage(storage: NavigationSidebarStorage | undefined) {\n  if (storage) return storage;\n  if (typeof window === \"undefined\") return undefined;\n  return window.localStorage;\n}\n\nfunction readStoredLayout(\n  props: NavigationSidebarCommonProps,\n  bounds: LayoutBounds,\n): StoredLayout {\n  const fallback = {\n    collapsed: props.defaultCollapsed ?? false,\n    width: clampWidth(bounds.defaultWidth, bounds),\n  };\n  if (!props.storageKey) return fallback;\n\n  const storage = resolveStorage(props.storage);\n  if (!storage) return fallback;\n\n  try {\n    const rawValue = storage.getItem(props.storageKey);\n    if (!rawValue) return fallback;\n    const parsedValue = JSON.parse(rawValue) as Partial<StoredLayout>;\n    return {\n      collapsed:\n        typeof parsedValue.collapsed === \"boolean\"\n          ? parsedValue.collapsed\n          : fallback.collapsed,\n      width:\n        typeof parsedValue.width === \"number\" &&\n        Number.isFinite(parsedValue.width)\n          ? clampWidth(parsedValue.width, bounds)\n          : fallback.width,\n    };\n  } catch (error) {\n    reportStorageError(error, props.onStorageError);\n    return fallback;\n  }\n}\n\nfunction getNodeTitle(label: ReactNode, explicitTitle: string | undefined) {\n  if (explicitTitle) return explicitTitle;\n  return typeof label === \"string\" ? label : undefined;\n}\n\nfunction activeVariantClassName(activeVariant: NavigationSidebarActiveVariant) {\n  if (activeVariant === \"solid\")\n    return \"border-primary bg-primary text-primary-foreground shadow-sm\";\n  if (activeVariant === \"outline\")\n    return \"border-primary/55 bg-background text-foreground ring-1 ring-primary/20\";\n  if (activeVariant === \"muted\")\n    return \"border-transparent bg-muted text-foreground\";\n  return \"border-primary/25 bg-primary/10 text-foreground\";\n}\n\nfunction resolveAppearance(\n  appearance: NavigationSidebarAppearance | undefined,\n) {\n  if (appearance?.preset !== undefined && appearance.preset !== \"unified\") {\n    throw new TypeError(\n      `Unknown NavigationSidebar preset \"${appearance.preset}\". Supported preset: unified.`,\n    );\n  }\n  const unified = appearance?.preset === \"unified\";\n  const density = appearance?.density ?? (unified ? \"compact\" : \"default\");\n  const surface = appearance?.surface ?? \"panel\";\n  const activeVariant =\n    appearance?.activeVariant ?? (unified ? \"muted\" : \"soft\");\n  return {\n    unified,\n    density,\n    surface,\n    activeVariant,\n    selected: unified ? unifiedSelected : activeVariantClassName(activeVariant),\n    inactive: unified\n      ? unifiedInactive\n      : \"text-muted-foreground hover:border-border/70 hover:bg-muted/60 hover:text-foreground\",\n    root: cn(\n      surface === \"plain\" && \"border-transparent bg-transparent shadow-none\",\n      surface === \"panel\" &&\n        \"border-border/70 bg-card text-card-foreground shadow-sm\",\n      surface === \"frosted\" &&\n        \"border-border/55 bg-card/80 text-card-foreground shadow-sm backdrop-blur-xl\",\n      surface === \"outlined\" &&\n        \"border-border bg-background text-foreground shadow-none\",\n      unified && \"rounded-[var(--radius)] shadow-none\",\n      unified && unifiedThemeDefaults,\n      unified &&\n        surface === \"panel\" &&\n        \"border-[var(--monkeys-component-navigation-sidebar-border,hsl(var(--monkeys-color-border,var(--border))))] bg-[var(--monkeys-component-navigation-sidebar-background,hsl(var(--monkeys-color-card,var(--card))))] text-foreground\",\n    ),\n    itemHeight:\n      density === \"compact\"\n        ? unified\n          ? \"min-h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"min-h-9\"\n        : density === \"comfortable\"\n          ? \"min-h-14\"\n          : \"min-h-11\",\n    itemPadding:\n      density === \"compact\"\n        ? unified\n          ? \"px-2 py-2\"\n          : \"px-2 py-1.5\"\n        : density === \"comfortable\"\n          ? \"px-3 py-3\"\n          : \"px-3 py-2\",\n    searchHeight:\n      density === \"compact\"\n        ? unified\n          ? \"h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"h-8\"\n        : density === \"comfortable\"\n          ? \"h-10\"\n          : \"h-9\",\n  };\n}\n\nconst navigationTreeRowHoverClassName =\n  \"hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-hover-background,hsl(var(--muted)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--foreground)))]\";\n\nconst navigationTreeRowSelectedClassName =\n  \"bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\";\n\nconst navigationTreeNestedControlClassName =\n  \"hover:!bg-transparent hover:!text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\";\n\nfunction resolveNavigationTreeClassNames(\n  classNames: DataExplorerViewTreeClassNames | undefined,\n): DataExplorerViewTreeClassNames {\n  return {\n    ...classNames,\n    groupHeader: cn(navigationTreeRowHoverClassName, classNames?.groupHeader),\n    itemSelected: cn(\n      navigationTreeRowSelectedClassName,\n      classNames?.itemSelected,\n    ),\n    nodeButton: cn(\n      navigationTreeRowHoverClassName,\n      \"aria-selected:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] aria-selected:hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\",\n      classNames?.nodeButton,\n    ),\n    expander: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.expander,\n    ),\n    nodeToggle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeToggle,\n    ),\n    groupActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.groupActions,\n    ),\n    nodeActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeActions,\n    ),\n    nodeDragHandle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeDragHandle,\n    ),\n  };\n}\n\ninterface EntryButtonProps {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  itemAs?: ElementType;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  mobile?: boolean;\n  embedded?: boolean;\n  onSelect?: () => void;\n  ariaControls?: string;\n  ariaExpanded?: boolean;\n  endIndicator?: ReactNode;\n}\n\nfunction entryClassName({\n  item,\n  active,\n  collapsed,\n  mobile,\n  embedded = false,\n  appearance,\n  classNames,\n  domClassName,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  mobile: boolean;\n  embedded?: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  domClassName?: string;\n}) {\n  return cn(\n    \"group/navigation-item relative flex w-full min-w-0 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.itemPadding,\n    appearance.unified && unifiedRow,\n    embedded\n      ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n      : active\n        ? appearance.selected\n        : appearance.inactive,\n    collapsed && !mobile && \"justify-center px-0\",\n    item.disabled && \"pointer-events-none opacity-50\",\n    classNames?.item,\n    active && classNames?.itemActive,\n    mobile && classNames?.mobileItem,\n    domClassName,\n    item.className,\n  );\n}\n\nfunction EntryContent({\n  item,\n  collapsed,\n  mobile,\n  classNames,\n  endIndicator,\n  appearance,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  collapsed: boolean;\n  mobile: boolean;\n  classNames?: NavigationSidebarClassNames;\n  endIndicator?: ReactNode;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return (\n    <>\n      {hasRenderableNode(item.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n            classNames?.itemIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {item.icon}\n        </span>\n      ) : null}\n      {mobile || !collapsed ? (\n        <span\n          className={cn(\n            \"flex min-w-0 flex-1 flex-col\",\n            classNames?.itemContent,\n          )}\n        >\n          <span\n            className={cn(\n              \"min-w-0 truncate font-semibold\",\n              appearance.unified && \"font-medium\",\n              classNames?.itemLabel,\n            )}\n          >\n            {item.label}\n          </span>\n          {hasRenderableNode(item.description) ? (\n            <span\n              className={cn(\n                \"mt-0.5 truncate text-xs font-normal\",\n                appearance.unified && \"text-inherit\",\n                classNames?.itemDescription,\n              )}\n            >\n              {item.description}\n            </span>\n          ) : null}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.meta) ? (\n        <span\n          className={cn(\n            \"shrink-0 text-xs text-muted-foreground\",\n            classNames?.itemMeta,\n          )}\n        >\n          {item.meta}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.endContent) ? (\n        <span className={cn(\"shrink-0\", classNames?.itemEndContent)}>\n          {item.endContent}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(endIndicator) ? (\n        <span className=\"flex shrink-0 items-center justify-center\">\n          {endIndicator}\n        </span>\n      ) : null}\n    </>\n  );\n}\n\nfunction EntryButton({\n  item,\n  active,\n  collapsed,\n  itemAs,\n  appearance,\n  classNames,\n  mobile = false,\n  embedded = false,\n  onSelect,\n  ariaControls,\n  ariaExpanded,\n  endIndicator,\n}: EntryButtonProps) {\n  const ItemComponent = itemAs ?? (item.href ? \"a\" : \"button\");\n  const title = getNodeTitle(item.label, item.title);\n  const domProps = item.domProps ?? {};\n  const handleClick = (event: MouseEvent<HTMLElement>) => {\n    if (item.disabled) {\n      event.preventDefault();\n      return;\n    }\n    item.onClick?.(event);\n    onSelect?.();\n  };\n  const componentProps = {\n    ...domProps,\n    ...(item.to ? { to: item.to } : {}),\n    ...(item.href ? { href: item.href } : {}),\n    ...(ItemComponent === \"button\"\n      ? { type: \"button\", disabled: item.disabled }\n      : {}),\n    title,\n    \"aria-current\": active ? \"page\" : undefined,\n    \"aria-disabled\": item.disabled || undefined,\n    \"aria-controls\": ariaControls,\n    \"aria-expanded\": ariaExpanded,\n    tabIndex: item.disabled ? -1 : domProps.tabIndex,\n    onClick: handleClick,\n  };\n\n  return (\n    <ItemComponent\n      {...componentProps}\n      data-navigation-sidebar-item-id={item.id}\n      data-active={active ? \"true\" : \"false\"}\n      data-expanded={ariaExpanded === undefined ? undefined : String(ariaExpanded)}\n      className={entryClassName({\n        item,\n        active,\n        collapsed,\n        mobile,\n        embedded,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={collapsed}\n        mobile={mobile}\n        classNames={classNames}\n        endIndicator={endIndicator}\n      />\n    </ItemComponent>\n  );\n}\n\nfunction EntryPresentation({\n  item,\n  appearance,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const domProps = item.domProps ?? {};\n  return (\n    <div\n      {...domProps}\n      data-navigation-sidebar-item-id={item.id}\n      aria-disabled={item.disabled || undefined}\n      title={getNodeTitle(item.label, item.title)}\n      className={entryClassName({\n        item,\n        active: false,\n        collapsed: false,\n        mobile: true,\n        embedded: true,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={false}\n        mobile\n        classNames={classNames}\n      />\n    </div>\n  );\n}\n\nfunction routeRowClassName({\n  active,\n  appearance,\n}: {\n  active: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return cn(\n    \"flex w-full min-w-0 items-center gap-0.5 rounded-[var(--radius)] border border-transparent pr-1 text-sm transition-[background-color,border-color,color,box-shadow] motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.unified && unifiedRow,\n    active ? appearance.selected : appearance.inactive,\n  );\n}\n\nfunction filterCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  activeFilterId: string | undefined,\n) {\n  if (!activeFilterId) return items;\n  return items.filter(\n    (item) =>\n      !item.filterIds?.length || item.filterIds.includes(activeFilterId),\n  );\n}\n\nfunction CatalogContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    items = [],\n    sections = [],\n    filters = [],\n    activeFilterId,\n    activeItemId,\n    onFilterSelect,\n    itemAs,\n    layout = \"single\",\n    empty,\n    ariaLabel,\n    classNames,\n  } = props;\n  const filteredItems = filterCatalogItems(items, activeFilterId);\n  const filteredSections = sections\n    .map((section) => ({\n      ...section,\n      items: filterCatalogItems(section.items, activeFilterId),\n    }))\n    .filter((section) => section.items.length > 0);\n  const hasItems = filteredItems.length > 0 || filteredSections.length > 0;\n\n  const filtersNode =\n    filters.length > 0 && !collapsed ? (\n      <div\n        role=\"group\"\n        className={cn(\n          layout === \"split\"\n            ? \"flex min-w-32 flex-col gap-1 border-r border-border/60 pr-2\"\n            : \"flex flex-wrap gap-1\",\n          classNames?.filterList,\n        )}\n        aria-label={ariaLabel ? `${ariaLabel} filters` : undefined}\n      >\n        {filters.map((filter) => {\n          const active = filter.id === activeFilterId;\n          return (\n            <button\n              key={filter.id}\n              type=\"button\"\n              title={\n                filter.title ??\n                (typeof filter.label === \"string\" ? filter.label : undefined)\n              }\n              aria-pressed={active}\n              disabled={filter.disabled}\n              className={cn(\n                \"inline-flex min-h-8 items-center gap-2 rounded-md px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n                active && \"bg-muted text-foreground\",\n                classNames?.filterItem,\n                active && classNames?.filterItemActive,\n              )}\n              onClick={() => onFilterSelect?.(filter)}\n            >\n              {hasRenderableNode(filter.icon) ? (\n                <span aria-hidden=\"true\">{filter.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{filter.label}</span>\n            </button>\n          );\n        })}\n      </div>\n    ) : null;\n\n  const listNode = hasItems ? (\n    <div className={cn(\"min-w-0 flex-1\", classNames?.list)}>\n      {filteredItems.length > 0 ? (\n        <ul className=\"grid list-none gap-1 p-0\">\n          {filteredItems.map((item) => (\n            <li key={item.id}>\n              <EntryButton\n                item={item}\n                active={item.active ?? item.id === activeItemId}\n                collapsed={collapsed}\n                itemAs={itemAs}\n                appearance={appearance}\n                classNames={classNames}\n              />\n            </li>\n          ))}\n        </ul>\n      ) : null}\n      {filteredSections.map((section) => (\n        <section\n          key={section.id}\n          className={cn(\n            \"mt-3 first:mt-0\",\n            classNames?.section,\n            section.className,\n          )}\n        >\n          {!collapsed && hasRenderableNode(section.label) ? (\n            <div\n              className={cn(\n                \"mb-1 px-2 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\",\n                classNames?.sectionLabel,\n                section.labelClassName,\n              )}\n            >\n              {section.label}\n            </div>\n          ) : null}\n          <ul className=\"grid list-none gap-1 p-0\">\n            {section.items.map((item) => (\n              <li key={item.id}>\n                <EntryButton\n                  item={item}\n                  active={item.active ?? item.id === activeItemId}\n                  collapsed={collapsed}\n                  itemAs={itemAs}\n                  appearance={appearance}\n                  classNames={classNames}\n                />\n              </li>\n            ))}\n          </ul>\n        </section>\n      ))}\n    </div>\n  ) : (\n    <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n      {empty}\n    </div>\n  );\n\n  return (\n    <nav\n      aria-label={ariaLabel}\n      className={cn(layout === \"split\" && !collapsed && \"flex min-w-0 gap-2\")}\n    >\n      {filtersNode}\n      {listNode}\n    </nav>\n  );\n}\n\nfunction ChildEntry({\n  child,\n  parent,\n  active,\n  interactive,\n  onSelect,\n  appearance,\n  classNames,\n  embedded = false,\n}: {\n  child: NavigationSidebarRouteChild;\n  parent: NavigationSidebarRouteItem;\n  active: boolean;\n  interactive: boolean;\n  onSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  embedded?: boolean;\n}) {\n  const Component = interactive ? \"button\" : \"div\";\n  const domProps = child.domProps ?? {};\n  return (\n    <Component\n      {...domProps}\n      {...(interactive ? { type: \"button\" } : {})}\n      data-navigation-sidebar-child-id={child.id}\n      aria-current={interactive && active ? \"page\" : undefined}\n      aria-disabled={child.disabled || undefined}\n      title={getNodeTitle(child.label, child.title)}\n      disabled={interactive ? child.disabled : undefined}\n      className={cn(\n        \"flex w-full min-w-0 flex-1 items-center gap-3 rounded-[var(--radius)] border border-transparent 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        appearance.itemHeight,\n        appearance.itemPadding,\n        appearance.unified && unifiedRow,\n        embedded\n          ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n          : active\n            ? appearance.selected\n            : appearance.inactive,\n        child.disabled && \"pointer-events-none opacity-50\",\n        classNames?.childItem,\n        active && classNames?.childItemActive,\n        domProps.className,\n        child.className,\n      )}\n      onClick={\n        interactive && !child.disabled\n          ? () => onSelect?.(child, parent)\n          : undefined\n      }\n    >\n      {hasRenderableNode(child.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {child.icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{child.label}</span>\n    </Component>\n  );\n}\n\nfunction RouteActions({\n  itemId,\n  actions,\n  kind,\n  className,\n  mobile = false,\n}: {\n  itemId: string;\n  actions: ReactNode;\n  kind: \"item\" | \"child\";\n  className?: string;\n  mobile?: boolean;\n}) {\n  if (!hasRenderableNode(actions)) return null;\n  return (\n    <div\n      data-navigation-sidebar-item-actions={\n        kind === \"item\" ? itemId : undefined\n      }\n      data-navigation-sidebar-child-actions={\n        kind === \"child\" ? itemId : undefined\n      }\n      data-navigation-sidebar-actions-mobile={mobile ? \"true\" : undefined}\n      className={cn(\n        \"ml-auto flex shrink-0 items-center gap-1 [&>button]:border-0 [&>button]:bg-transparent [&>button]:shadow-none [&>button:hover]:bg-muted\",\n        className,\n      )}\n    >\n      {actions}\n    </div>\n  );\n}\n\nfunction isDisclosureRouteItem(\n  item: NavigationSidebarRouteItem,\n): item is NavigationSidebarDisclosureRouteItem {\n  return item.interaction === \"disclosure\";\n}\n\nfunction validateRouteItems(routeItems: NavigationSidebarRouteItem[]) {\n  const itemIds = new Set<string>();\n  const childIds = new Set<string>();\n  const collapsibleItemIds = new Set<string>();\n\n  for (const item of routeItems) {\n    const itemId = item.id;\n    if (itemIds.has(itemId)) {\n      throw new RangeError(\n        `NavigationSidebar route item ids must be unique; received \"${itemId}\" more than once.`,\n      );\n    }\n    itemIds.add(itemId);\n\n    const disclosure = isDisclosureRouteItem(item);\n    if (disclosure) {\n      if (!item.children.length) {\n        throw new RangeError(\n          `NavigationSidebar disclosure item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      if (\n        item.href !== undefined ||\n        item.to !== undefined ||\n        item.onClick !== undefined\n      ) {\n        throw new TypeError(\n          `NavigationSidebar disclosure item \"${itemId}\" cannot define href, to, or onClick.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    } else if (item.childrenPresentation === \"collapsible\") {\n      if (!item.children?.length) {\n        throw new RangeError(\n          `NavigationSidebar collapsible route item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    }\n\n    for (const child of item.children ?? []) {\n      if (childIds.has(child.id)) {\n        throw new RangeError(\n          `NavigationSidebar route child ids must be unique; received \"${child.id}\" more than once.`,\n        );\n      }\n      childIds.add(child.id);\n    }\n  }\n\n  return collapsibleItemIds;\n}\n\nfunction RouteChildrenToggle({\n  item,\n  expanded,\n  controls,\n  label,\n  onToggle,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  expanded: boolean;\n  controls: string;\n  label: string;\n  onToggle: () => void;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  return (\n    <button\n      type=\"button\"\n      disabled={item.disabled}\n      aria-expanded={expanded}\n      aria-controls={controls}\n      aria-label={`${label}: ${itemLabel}`}\n      title={label}\n      data-navigation-sidebar-disclosure-trigger={item.id}\n      className={cn(\n        \"inline-flex h-8 w-7 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n        classNames?.childMenuTrigger,\n      )}\n      onClick={onToggle}\n    >\n      <DisclosureIcon expanded={expanded} />\n    </button>\n  );\n}\n\nfunction CollapsedChildMenu({\n  item,\n  activeChildId,\n  label,\n  onChildSelect,\n  classNames,\n  appearance,\n  triggerVariant = \"submenu\",\n  mobile = false,\n}: {\n  item: NavigationSidebarRouteItem;\n  activeChildId?: string;\n  label: string;\n  onChildSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  classNames?: NavigationSidebarClassNames;\n  appearance?: ReturnType<typeof resolveAppearance>;\n  triggerVariant?: \"submenu\" | \"item\" | \"disclosure\";\n  mobile?: boolean;\n}) {\n  const enabledChildren = (item.children ?? []).filter(\n    (child) => !child.disabled,\n  );\n  if (!item.children?.length) return null;\n  if (\n    triggerVariant === \"submenu\" &&\n    (!onChildSelect || enabledChildren.length === 0)\n  )\n    return null;\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  const itemTriggerDisabled =\n    Boolean(item.disabled) || !onChildSelect || enabledChildren.length === 0;\n  const domProps = item.domProps ?? {};\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        {triggerVariant === \"item\" && appearance ? (\n          <button\n            {...domProps}\n            type=\"button\"\n            disabled={itemTriggerDisabled}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n            data-navigation-sidebar-item-id={item.id}\n            data-navigation-sidebar-disclosure-menu=\"true\"\n            className={entryClassName({\n              item,\n              active: false,\n              collapsed: !mobile,\n              mobile,\n              appearance,\n              classNames,\n              domClassName: domProps.className,\n            })}\n          >\n            <EntryContent\n              appearance={appearance}\n              item={item}\n              collapsed={!mobile}\n              mobile={mobile}\n              classNames={classNames}\n              endIndicator={mobile ? <DisclosureIcon expanded={false} /> : undefined}\n            />\n          </button>\n        ) : (\n          <button\n            type=\"button\"\n            disabled={\n              triggerVariant === \"disclosure\" ? itemTriggerDisabled : undefined\n            }\n            data-navigation-sidebar-disclosure-trigger={\n              triggerVariant === \"disclosure\" ? item.id : undefined\n            }\n            className={cn(\n              \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n              triggerVariant === \"disclosure\" ? \"w-7\" : \"w-6\",\n              classNames?.childMenuTrigger,\n            )}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n          >\n            {triggerVariant === \"disclosure\" ? (\n              <DisclosureIcon expanded={false} />\n            ) : (\n              <MoreIcon />\n            )}\n          </button>\n        )}\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          side=\"right\"\n          align=\"start\"\n          sideOffset={8}\n          className={cn(\n            \"z-50 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none\",\n            classNames?.childMenuContent,\n          )}\n        >\n          {item.children?.map((child) => (\n            <DropdownMenu.Item\n              key={child.id}\n              disabled={child.disabled}\n              data-navigation-sidebar-child-id={child.id}\n              data-active={child.id === activeChildId ? \"true\" : \"false\"}\n              className={cn(\n                \"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n                child.id === activeChildId &&\n                  \"bg-accent text-accent-foreground\",\n              )}\n              onSelect={() => onChildSelect?.(child, item)}\n            >\n              {hasRenderableNode(child.icon) ? (\n                <span aria-hidden=\"true\">{child.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{child.label}</span>\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction RouteContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarRouteProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    routeItems,\n    activeItemId,\n    activeChildId,\n    expandedItemIds,\n    defaultExpandedItemIds = [],\n    itemAs,\n    onItemSelect,\n    onChildSelect,\n    onExpandedItemIdsChange,\n    collapsedChildMenuLabel = \"Open submenu\",\n    disclosureLabel = \"Toggle submenu\",\n    ariaLabel,\n    classNames,\n  } = props;\n  const disclosureId = useId();\n  const collapsibleItemIds = useMemo(\n    () => validateRouteItems(routeItems),\n    [routeItems],\n  );\n  const [internalExpandedItemIds, setInternalExpandedItemIds] = useState(\n    () => defaultExpandedItemIds,\n  );\n  const isExpandedControlled = expandedItemIds !== undefined;\n  const resolvedExpandedItemIds =\n    expandedItemIds ?? internalExpandedItemIds;\n  const normalizedExpandedItemIds = useMemo(\n    () =>\n      resolvedExpandedItemIds.filter((itemId) =>\n        collapsibleItemIds.has(itemId),\n      ),\n    [collapsibleItemIds, resolvedExpandedItemIds],\n  );\n  const expandedItemIdSet = useMemo(\n    () => new Set(normalizedExpandedItemIds),\n    [normalizedExpandedItemIds],\n  );\n  const toggleItemExpanded = useCallback(\n    (item: NavigationSidebarRouteItem) => {\n      if (item.disabled || !collapsibleItemIds.has(item.id)) return;\n      const nextExpandedItemIds = expandedItemIdSet.has(item.id)\n        ? normalizedExpandedItemIds.filter((itemId) => itemId !== item.id)\n        : [...normalizedExpandedItemIds, item.id];\n      if (!isExpandedControlled) {\n        setInternalExpandedItemIds(nextExpandedItemIds);\n      }\n      onExpandedItemIdsChange?.(nextExpandedItemIds);\n    },\n    [\n      collapsibleItemIds,\n      expandedItemIdSet,\n      isExpandedControlled,\n      normalizedExpandedItemIds,\n      onExpandedItemIdsChange,\n    ],\n  );\n  return (\n    <nav aria-label={ariaLabel}>\n      <ul\n        className={cn(\n          \"grid list-none gap-2 p-0\",\n          appearance.unified && \"gap-0.5\",\n          classNames?.list,\n        )}\n      >\n        {routeItems.map((item, itemIndex) => {\n          const disclosure = isDisclosureRouteItem(item);\n          const active = !disclosure && item.id === activeItemId;\n          const hasChildren = Boolean(item.children?.length);\n          const childrenCollapsible = collapsibleItemIds.has(item.id);\n          const childrenExpanded =\n            !childrenCollapsible || expandedItemIdSet.has(item.id);\n          const showItemActions =\n            !collapsed && hasRenderableNode(item.actions);\n          const compoundItemRow =\n            (collapsed && hasChildren && Boolean(onChildSelect)) ||\n            (!collapsed && childrenCollapsible && !disclosure) ||\n            showItemActions;\n          const childListId = `${disclosureId}-route-children-${itemIndex}`;\n          return (\n            <li key={item.id} className=\"grid min-w-0 gap-1\">\n              {collapsed && disclosure ? (\n                <CollapsedChildMenu\n                  item={item}\n                  activeChildId={activeChildId}\n                  label={collapsedChildMenuLabel}\n                  onChildSelect={onChildSelect}\n                  classNames={classNames}\n                  appearance={appearance}\n                  triggerVariant=\"item\"\n                />\n              ) : (\n                <div\n                  data-navigation-sidebar-item-row={\n                    compoundItemRow ? item.id : undefined\n                  }\n                  data-active={compoundItemRow ? String(active) : undefined}\n                  className={\n                    compoundItemRow\n                      ? routeRowClassName({ active, appearance })\n                      : undefined\n                  }\n                >\n                  <EntryButton\n                    item={item}\n                    active={active}\n                    collapsed={collapsed}\n                    embedded={compoundItemRow}\n                    itemAs={disclosure ? \"button\" : itemAs}\n                    appearance={appearance}\n                    classNames={classNames}\n                    onSelect={\n                      disclosure\n                        ? () => toggleItemExpanded(item)\n                        : onItemSelect\n                          ? () => onItemSelect(item)\n                          : undefined\n                    }\n                    ariaControls={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childListId\n                        : undefined\n                    }\n                    ariaExpanded={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childrenExpanded\n                        : undefined\n                    }\n                    endIndicator={\n                      !collapsed && disclosure && !showItemActions ? (\n                        <DisclosureIcon expanded={childrenExpanded} />\n                      ) : undefined\n                    }\n                  />\n                  {showItemActions ? (\n                    <RouteActions\n                      itemId={item.id}\n                      actions={item.actions}\n                      kind=\"item\"\n                      className={classNames?.itemActions}\n                    />\n                  ) : null}\n                  {collapsed && onChildSelect ? (\n                    <CollapsedChildMenu\n                      item={item}\n                      activeChildId={activeChildId}\n                      label={collapsedChildMenuLabel}\n                      onChildSelect={onChildSelect}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                  {!collapsed &&\n                  childrenCollapsible &&\n                  (!disclosure || showItemActions) ? (\n                    <RouteChildrenToggle\n                      item={item}\n                      expanded={childrenExpanded}\n                      controls={childListId}\n                      label={disclosureLabel}\n                      onToggle={() => toggleItemExpanded(item)}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                </div>\n              )}\n              {!collapsed && hasChildren ? (\n                <ul\n                  id={childListId}\n                  hidden={!childrenExpanded}\n                  style={childrenExpanded ? undefined : { display: \"none\" }}\n                  className={cn(\n                    \"ml-5 grid list-none gap-0.5 border-l border-border/70 py-1 pl-3\",\n                    appearance.unified && \"border-border\",\n                    classNames?.childList,\n                  )}\n                >\n                  {item.children?.map((child) => {\n                    const hasChildActions = hasRenderableNode(child.actions);\n                    const childActive = child.id === activeChildId;\n                    const childEntry = (\n                      <ChildEntry\n                        child={child}\n                        parent={item}\n                        active={childActive}\n                        interactive={Boolean(onChildSelect)}\n                        onSelect={onChildSelect}\n                        appearance={appearance}\n                        classNames={classNames}\n                        embedded={hasChildActions}\n                      />\n                    );\n                    return (\n                      <li key={child.id}>\n                        {hasChildActions ? (\n                          <div\n                            data-navigation-sidebar-child-row={child.id}\n                            data-active={String(childActive)}\n                            className={routeRowClassName({\n                              active: childActive,\n                              appearance,\n                            })}\n                          >\n                            {childEntry}\n                            <RouteActions\n                              itemId={child.id}\n                              actions={child.actions}\n                              kind=\"child\"\n                              className={classNames?.childActions}\n                            />\n                          </div>\n                        ) : (\n                          childEntry\n                        )}\n                      </li>\n                    );\n                  })}\n                </ul>\n              ) : null}\n            </li>\n          );\n        })}\n      </ul>\n    </nav>\n  );\n}\n\nfunction flattenCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  sections: NavigationSidebarCatalogSection[],\n  activeFilterId: string | undefined,\n) {\n  return [\n    ...filterCatalogItems(items, activeFilterId),\n    ...sections.flatMap((section) =>\n      filterCatalogItems(section.items, activeFilterId),\n    ),\n  ];\n}\n\nfunction MobileNavigation({\n  props,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps | NavigationSidebarRouteProps;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  if (!props.mobile || props.mobile.mode !== \"horizontal\") return null;\n  const classNames = props.classNames;\n  const items =\n    props.kind === \"catalog\"\n      ? flattenCatalogItems(\n          props.items ?? [],\n          props.sections ?? [],\n          props.activeFilterId,\n        )\n      : props.routeItems;\n  return (\n    <nav\n      aria-label={props.ariaLabel}\n      className={cn(\n        \"flex gap-2 overflow-x-auto pb-1\",\n        classNames?.mobileNav,\n        props.mobile.className,\n      )}\n    >\n      {items.map((item) => {\n        const mobileClassNames = {\n          ...classNames,\n          mobileItem: cn(\n            classNames?.mobileItem,\n            props.mobile?.itemClassName,\n          ),\n        };\n        const routeItem =\n          props.kind === \"route\"\n            ? (item as NavigationSidebarRouteItem)\n            : undefined;\n        const showRouteActions =\n          routeItem !== undefined && hasRenderableNode(routeItem.actions);\n        if (props.kind === \"route\" && isDisclosureRouteItem(item)) {\n          return showRouteActions ? (\n            <div\n              key={item.id}\n              data-navigation-sidebar-item-row={item.id}\n              data-active=\"false\"\n              className={cn(\n                routeRowClassName({ active: false, appearance }),\n                \"shrink-0\",\n              )}\n            >\n              <EntryPresentation\n                item={item}\n                appearance={appearance}\n                classNames={mobileClassNames}\n              />\n              <RouteActions\n                itemId={item.id}\n                actions={item.actions}\n                kind=\"item\"\n                className={classNames?.itemActions}\n                mobile\n              />\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"disclosure\"\n                mobile\n              />\n            </div>\n          ) : (\n            <Fragment key={item.id}>\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"item\"\n                mobile\n              />\n            </Fragment>\n          );\n        }\n        const active =\n          props.kind === \"catalog\"\n            ? ((item as NavigationSidebarCatalogItem).active ??\n              item.id === props.activeItemId)\n            : item.id === props.activeItemId;\n        const entryButton = (\n          <EntryButton\n            item={item}\n            active={active}\n            collapsed={false}\n            embedded={showRouteActions}\n            itemAs={props.itemAs}\n            appearance={appearance}\n            classNames={mobileClassNames}\n            mobile\n            onSelect={\n              props.kind === \"route\" && props.onItemSelect\n                ? () =>\n                    props.onItemSelect?.(item as NavigationSidebarRouteItem)\n                : undefined\n            }\n          />\n        );\n        return showRouteActions && routeItem ? (\n          <div\n            key={item.id}\n            data-navigation-sidebar-item-row={item.id}\n            data-active={String(active)}\n            className={cn(\n              routeRowClassName({ active, appearance }),\n              \"shrink-0\",\n            )}\n          >\n            {entryButton}\n            <RouteActions\n              itemId={routeItem.id}\n              actions={routeItem.actions}\n              kind=\"item\"\n              className={classNames?.itemActions}\n              mobile\n            />\n          </div>\n        ) : (\n          <Fragment key={item.id}>{entryButton}</Fragment>\n        );\n      })}\n    </nav>\n  );\n}\n\nfunction NavigationSidebarInner<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext>,\n  ref: ForwardedRef<HTMLElement>,\n) {\n  const bounds = resolveLayoutBounds(props);\n  if (props.width !== undefined) requireFiniteNumber(\"width\", props.width);\n  const initialLayoutRef = useRef<StoredLayout | null>(null);\n  if (!initialLayoutRef.current) {\n    initialLayoutRef.current = readStoredLayout(props, bounds);\n  }\n\n  const sidebarRef = useRef<HTMLElement | null>(null);\n  const [internalCollapsed, setInternalCollapsed] = useState(\n    initialLayoutRef.current.collapsed,\n  );\n  const [internalWidth, setInternalWidth] = useState(\n    initialLayoutRef.current.width,\n  );\n  const [internalSearchValue, setInternalSearchValue] = useState(\n    props.search?.defaultValue ?? \"\",\n  );\n  const [isResizing, setIsResizing] = useState(false);\n  const resolvedCollapsed = props.collapsed ?? internalCollapsed;\n  const resolvedWidth = clampWidth(props.width ?? internalWidth, bounds);\n  const resolvedSearchValue = props.search?.value ?? internalSearchValue;\n  const isCollapsedControlled = props.collapsed !== undefined;\n  const isWidthControlled = props.width !== undefined;\n  const appearance = useMemo(\n    () => resolveAppearance(props.appearance),\n    [props.appearance],\n  );\n  const collapsible = props.collapsible ?? true;\n  const resizable = props.resizable ?? true;\n  const collapsePlacement = collapsible\n    ? (props.collapsePlacement ?? \"header\")\n    : \"none\";\n  const collapseLabel = props.collapseLabel ?? \"Collapse sidebar\";\n  const expandLabel = props.expandLabel ?? \"Expand sidebar\";\n  const resizeLabel = props.resizeLabel ?? \"Resize sidebar\";\n  const contentVisible = !resolvedCollapsed || bounds.collapsedWidth > 0;\n\n  const setSidebarRef = (node: HTMLElement | null) => {\n    sidebarRef.current = node;\n    assignRef(ref, node);\n  };\n\n  const updateCollapsed = useCallback(\n    (nextCollapsed: boolean) => {\n      if (!collapsible && nextCollapsed) return;\n      if (!isCollapsedControlled) setInternalCollapsed(nextCollapsed);\n      props.onCollapsedChange?.(nextCollapsed);\n    },\n    [collapsible, isCollapsedControlled, props.onCollapsedChange],\n  );\n\n  const updateWidth = useCallback(\n    (nextWidth: number) => {\n      const clampedWidth = clampWidth(nextWidth, bounds);\n      if (!isWidthControlled) setInternalWidth(clampedWidth);\n      props.onWidthChange?.(clampedWidth);\n    },\n    [bounds.maxWidth, bounds.minWidth, isWidthControlled, props.onWidthChange],\n  );\n\n  useEffect(() => {\n    if (!props.storageKey) return;\n    const storage = resolveStorage(props.storage);\n    if (!storage) return;\n    try {\n      storage.setItem(\n        props.storageKey,\n        JSON.stringify({\n          collapsed: resolvedCollapsed,\n          width: resolvedWidth,\n        }),\n      );\n    } catch (error) {\n      reportStorageError(error, props.onStorageError);\n    }\n  }, [\n    props.onStorageError,\n    props.storage,\n    props.storageKey,\n    resolvedCollapsed,\n    resolvedWidth,\n  ]);\n\n  useEffect(() => {\n    if (!isResizing) return undefined;\n    const previousCursor = document.body.style.cursor;\n    const previousUserSelect = document.body.style.userSelect;\n    const handlePointerMove = (event: globalThis.PointerEvent) => {\n      const sidebar = sidebarRef.current;\n      if (!sidebar) return;\n      const nextWidth = event.clientX - sidebar.getBoundingClientRect().left;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n        return;\n      }\n      updateCollapsed(false);\n      updateWidth(nextWidth);\n    };\n    const handlePointerUp = () => setIsResizing(false);\n    window.addEventListener(\"pointermove\", handlePointerMove);\n    window.addEventListener(\"pointerup\", handlePointerUp);\n    document.body.style.cursor = \"col-resize\";\n    document.body.style.userSelect = \"none\";\n    return () => {\n      window.removeEventListener(\"pointermove\", handlePointerMove);\n      window.removeEventListener(\"pointerup\", handlePointerUp);\n      document.body.style.cursor = previousCursor;\n      document.body.style.userSelect = previousUserSelect;\n    };\n  }, [\n    bounds.collapseThreshold,\n    collapsible,\n    isResizing,\n    updateCollapsed,\n    updateWidth,\n  ]);\n\n  const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n    if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n    event.preventDefault();\n    if (event.key === \"ArrowLeft\") {\n      const nextWidth = resolvedWidth - 24;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n      } else {\n        updateWidth(nextWidth);\n      }\n      return;\n    }\n    if (resolvedCollapsed) updateCollapsed(false);\n    updateWidth(Math.max(resolvedWidth + 24, bounds.minWidth));\n  };\n\n  const collapseButton = (extraClassName?: string) => (\n    <button\n      type=\"button\"\n      className={cn(\n        \"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        props.classNames?.collapseButton,\n        extraClassName,\n      )}\n      aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n      title={resolvedCollapsed ? expandLabel : collapseLabel}\n      aria-expanded={!resolvedCollapsed}\n      onClick={() => updateCollapsed(!resolvedCollapsed)}\n    >\n      <CollapseIcon collapsed={resolvedCollapsed} />\n    </button>\n  );\n\n  const hasHeader =\n    hasRenderableNode(props.title) ||\n    hasRenderableNode(props.headerLeading) ||\n    hasRenderableNode(props.headerActions) ||\n    collapsePlacement === \"header\";\n\n  const renderContent = () => {\n    if (props.kind === \"catalog\") {\n      return (\n        <CatalogContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    if (props.kind === \"route\") {\n      return (\n        <RouteContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    const treeProps = (\n      props as NavigationSidebarTreeProps<TNodeSource, TGroupSource, TContext>\n    ).tree;\n    return (\n      <DataExplorerViewTree\n        {...treeProps}\n        classNames={\n          appearance.unified\n            ? unifiedTreeClassNames(\n                appearance.itemHeight,\n                appearance.itemPadding,\n                treeProps.classNames,\n              )\n            : resolveNavigationTreeClassNames(treeProps.classNames)\n        }\n      />\n    );\n  };\n\n  return (\n    <>\n      <aside\n        {...props.rootDomProps}\n        ref={setSidebarRef}\n        aria-label={props.ariaLabel}\n        data-monkeys-component={props.dataComponent ?? \"navigation-sidebar\"}\n        data-navigation-sidebar-kind={props.kind}\n        data-navigation-sidebar-preset={props.appearance?.preset}\n        data-collapsed={resolvedCollapsed ? \"true\" : \"false\"}\n        className={cn(\n          \"relative flex h-full min-h-0 shrink-0 flex-col overflow-visible rounded-[calc(var(--radius)+0.25rem)] border transition-[width,opacity] duration-300 motion-reduce:transition-none\",\n          appearance.root,\n          props.desktopClassName,\n          props.classNames?.root,\n          props.rootDomProps?.className,\n          props.className,\n        )}\n        style={{\n          ...(appearance.unified ? unifiedStyle(props.appearance?.activeVariant) : {}),\n          ...props.style,\n          width:\n            props.widthMode === \"fill\"\n              ? undefined\n              : resolvedCollapsed\n                ? bounds.collapsedWidth\n                : resolvedWidth,\n          transition: isResizing ? \"none\" : props.style?.transition,\n        }}\n      >\n        {resizable ? (\n          <button\n            type=\"button\"\n            role=\"separator\"\n            aria-orientation=\"vertical\"\n            aria-valuemin={bounds.minWidth}\n            aria-valuemax={bounds.maxWidth}\n            aria-valuenow={resolvedWidth}\n            aria-label={resizeLabel}\n            title={resizeLabel}\n            className={cn(\n              \"group/resize absolute -right-1.5 bottom-0 top-0 z-40 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n              props.classNames?.resizeHandle,\n            )}\n            onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n              event.preventDefault();\n              setIsResizing(true);\n            }}\n            onKeyDown={handleResizeKeyDown}\n          >\n            <span className=\"pointer-events-none absolute bottom-3 right-1/2 top-3 w-px translate-x-1/2 rounded-full bg-border opacity-0 transition-opacity group-hover/resize:opacity-100 group-focus-visible/resize:opacity-100\" />\n          </button>\n        ) : null}\n\n        {collapsePlacement === \"edge\"\n          ? collapseButton(\n              \"absolute -right-3 top-1/2 z-50 -translate-y-1/2 border border-border bg-background shadow-sm\",\n            )\n          : null}\n\n        {contentVisible ? (\n          <div className=\"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden\">\n            {hasHeader ? (\n              <div\n                className={cn(\n                  \"flex min-h-12 min-w-0 items-center gap-2 border-b border-border/60 px-3\",\n                  appearance.unified &&\n                    \"min-h-14 border-border px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))]\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.header,\n                )}\n              >\n                {hasRenderableNode(props.headerLeading) ? (\n                  <span\n                    className={cn(\n                      \"flex shrink-0 items-center justify-center\",\n                      props.classNames?.headerLeading,\n                    )}\n                  >\n                    {props.headerLeading}\n                  </span>\n                ) : null}\n                {!resolvedCollapsed && hasRenderableNode(props.title) ? (\n                  <div\n                    className={cn(\n                      \"min-w-0 flex-1 truncate text-sm font-semibold\",\n                      props.classNames?.title,\n                    )}\n                  >\n                    {props.title}\n                  </div>\n                ) : null}\n                {!resolvedCollapsed &&\n                hasRenderableNode(props.headerActions) ? (\n                  <div\n                    className={cn(\n                      \"flex shrink-0 items-center gap-1\",\n                      props.classNames?.headerActions,\n                    )}\n                  >\n                    {props.headerActions}\n                  </div>\n                ) : null}\n                {collapsePlacement === \"header\" ? collapseButton() : null}\n              </div>\n            ) : null}\n\n            {!resolvedCollapsed && props.search ? (\n              <div\n                className={cn(\n                  \"px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] pb-2 pt-3\",\n                  appearance.unified && \"pb-1\",\n                  props.classNames?.search,\n                )}\n              >\n                <div\n                  className={cn(\n                    \"flex items-center gap-2 rounded-md border border-input bg-[var(--monkeys-component-navigation-sidebar-search-background,hsl(var(--monkeys-color-control-surface)))] px-3 text-muted-foreground ring-offset-control-surface focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n                    appearance.searchHeight,\n                    appearance.unified &&\n                      \"rounded-[var(--radius)] border-border bg-[var(--monkeys-component-navigation-sidebar-search-background,transparent)] px-2\",\n                  )}\n                >\n                  <span\n                    className={cn(\n                      \"flex shrink-0\",\n                      appearance.unified && unifiedIcon,\n                      props.classNames?.searchIcon,\n                    )}\n                    aria-hidden=\"true\"\n                  >\n                    {props.search.icon ?? <SearchIcon />}\n                  </span>\n                  <input\n                    type=\"search\"\n                    value={resolvedSearchValue}\n                    placeholder={props.search.placeholder}\n                    aria-label={props.search.ariaLabel}\n                    className={cn(\n                      \"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground\",\n                      props.classNames?.searchInput,\n                    )}\n                    onChange={(event) => {\n                      const nextValue = event.currentTarget.value;\n                      if (props.search?.value === undefined)\n                        setInternalSearchValue(nextValue);\n                      props.search?.onValueChange?.(nextValue);\n                    }}\n                  />\n                  {resolvedSearchValue && props.search.clearLabel ? (\n                    <button\n                      type=\"button\"\n                      className={cn(\n                        \"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                        props.classNames?.searchClear,\n                      )}\n                      aria-label={props.search.clearLabel}\n                      title={props.search.clearLabel}\n                      onClick={() => {\n                        if (props.search?.value === undefined)\n                          setInternalSearchValue(\"\");\n                        props.search?.onValueChange?.(\"\");\n                      }}\n                    >\n                      <ClearIcon />\n                    </button>\n                  ) : null}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                \"min-h-0 flex-1 overflow-y-auto px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] py-3\",\n                appearance.unified && props.search && \"pt-1\",\n                resolvedCollapsed && \"px-1.5\",\n                props.classNames?.content,\n              )}\n            >\n              {renderContent()}\n            </div>\n\n            {hasRenderableNode(props.footer) ||\n            collapsePlacement === \"footer\" ? (\n              <div\n                className={cn(\n                  \"flex shrink-0 items-center gap-2 border-t border-border/70 p-3\",\n                  appearance.unified && \"border-border\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.footer,\n                )}\n              >\n                {!resolvedCollapsed && hasRenderableNode(props.footer) ? (\n                  <div className=\"min-w-0 flex-1\">{props.footer}</div>\n                ) : null}\n                {collapsePlacement === \"footer\" ? collapseButton() : null}\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n      </aside>\n      {props.kind !== \"tree\" ? (\n        <MobileNavigation props={props} appearance={appearance} />\n      ) : null}\n    </>\n  );\n}\n\nexport type NavigationSidebarComponent = <\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext> &\n    RefAttributes<HTMLElement>,\n) => ReactElement | null;\n\nexport const NavigationSidebar = forwardRef(\n  NavigationSidebarInner,\n) as NavigationSidebarComponent;\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseBadgeProps } from './types';\nimport { getBaseBadgeToneClassName, resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nexport const BaseBadge = forwardRef<HTMLSpanElement, BaseBadgeProps>(\n  function BaseBadge(\n    {\n      children,\n      label,\n      icon,\n      tone,\n      appearance,\n      variant,\n      density,\n      state,\n      className,\n      classNames,\n      style,\n      ...badgeProps\n    },\n    ref,\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        'BaseBadge 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 resolvedTone = tone ?? 'default';\n\n    return (\n      <span\n        {...componentAttributes}\n        {...badgeProps}\n        ref={ref}\n        data-monkeys-component=\"badge\"\n        data-slot=\"root\"\n        data-tone={resolvedTone}\n        data-variant={theme.variant}\n        data-density={theme.density}\n        data-state={theme.state}\n        className={cn(\n          theme.slots.badgeBase,\n          getBaseBadgeToneClassName(theme, tone),\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.badge,\n          ...style,\n        }}\n      >\n        {icon ? (\n          <span\n            data-slot=\"icon\"\n            data-tone={resolvedTone}\n            className={cn(theme.slots.badgeIcon, classNames?.icon)}\n          >\n            {icon}\n          </span>\n        ) : null}\n        {resolvedLabel !== undefined && resolvedLabel !== null ? (\n          <span\n            data-slot=\"label\"\n            data-tone={resolvedTone}\n            className={cn(theme.slots.badgeLabel, classNames?.label)}\n          >\n            {resolvedLabel}\n          </span>\n        ) : null}\n      </span>\n    );\n  },\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 { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport type { BaseEmptyStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction DefaultEmptyIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-6 w-6\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"1.8\"\n    >\n      <rect width=\"16\" height=\"12\" x=\"4\" y=\"6\" rx=\"2\" />\n      <path d=\"M8 10h8\" />\n      <path d=\"M8 14h5\" />\n    </svg>\n  );\n}\n\nexport const BaseEmptyState = forwardRef<HTMLDivElement, BaseEmptyStateProps>(\n  function BaseEmptyState(\n    {\n      icon = <DefaultEmptyIcon />,\n      title,\n      description,\n      actions,\n      variant,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...stateProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const statusStates = useMonkeysStatusStates();\n    const resolvedVariant = variant ?? statusStates.empty?.variant ?? 'default';\n    const densityClassName =\n      statusStates.density === 'compact'\n        ? 'min-h-0 px-3 py-3'\n        : statusStates.density === 'comfortable'\n          ? 'min-h-56 px-8 py-12'\n          : undefined;\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...stateProps}\n        ref={ref}\n        data-monkeys-component=\"empty-state\"\n        data-slot=\"root\"\n        data-state=\"empty\"\n        data-variant={resolvedVariant}\n        data-density={statusStates.density}\n        className={cn(\n          theme.slots.stateRoot,\n          densityClassName,\n          resolvedVariant === 'compact' && 'min-h-0 gap-1 py-3',\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.stateRoot,\n          ...style,\n        }}\n      >\n        {hasRenderableNode(icon) ? (\n          <div\n            data-slot=\"icon\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateIcon, classNames?.icon)}\n            style={theme.styles.stateIcon}\n          >\n            {icon}\n          </div>\n        ) : null}\n        {hasRenderableNode(title) ? (\n          <div\n            data-slot=\"title\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateTitle, classNames?.title)}\n          >\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(description) ? (\n          <div\n            data-slot=\"description\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateDescription, classNames?.description)}\n          >\n            {description}\n          </div>\n        ) : null}\n        {hasRenderableNode(actions) ? (\n          <div\n            data-slot=\"actions\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateActions, classNames?.actions)}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    );\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 { forwardRef } from 'react';\nimport { useSkeletonMotion } from '../skeleton/motion';\n\nimport { useMonkeysBaseAppearance, useMonkeysComponentAttributes } from '../../provider/context';\nimport type { BaseSkeletonProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst variantClassNames = {\n  line: 'h-4 w-full',\n  block: 'h-24 w-full',\n  circle: 'aspect-square h-10 rounded-full',\n} as const;\n\nexport const BaseSkeleton = forwardRef<HTMLDivElement, BaseSkeletonProps>(function BaseSkeleton(\n  {\n    variant = 'line',\n    animated = true,\n    animation,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...skeletonProps\n  },\n  ref,\n) {\n  if (variant !== 'line' && variant !== 'block' && variant !== 'circle') {\n    throw new TypeError('BaseSkeleton variant must be \"line\", \"block\", or \"circle\".');\n  }\n  if (typeof animated !== 'boolean') {\n    throw new TypeError('BaseSkeleton animated must be a boolean.');\n  }\n\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const motion = useSkeletonMotion(animation, animated, ref);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...skeletonProps}\n      ref={motion.ref}\n      aria-hidden=\"true\"\n      data-monkeys-component=\"skeleton\"\n      data-slot=\"root\"\n      data-variant={variant}\n      data-animated={motion.mode !== 'none'}\n      data-state={motion.mode !== 'none' ? 'animated' : 'static'}\n      data-skeleton-animation={motion.mode}\n      className={cn(\n        theme.slots.skeletonRoot,\n        variantClassNames[variant],\n        motion.mode === 'pulse' && 'motion-safe:animate-pulse motion-reduce:animate-none',\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.skeleton,\n        ...motion.style,\n        ...style,\n      }}\n    />\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport { BaseSkeleton } from './BaseSkeleton';\nimport { SkeletonScope } from '../skeleton/motion';\nimport type { BaseLoadingStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction DefaultLoadingIcon({ className }: { className?: string }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={className}\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 BaseLoadingState = forwardRef<\n  HTMLDivElement,\n  BaseLoadingStateProps\n>(function BaseLoadingState(\n  {\n    icon,\n    title,\n    description,\n    actions,\n    variant,\n    animation,\n    appearance,\n    className,\n    classNames,\n    style,\n    role = 'status',\n    'aria-live': ariaLive = 'polite',\n    'aria-busy': ariaBusy = true,\n    'aria-label': nativeAriaLabel,\n    'aria-labelledby': nativeAriaLabelledBy,\n    ...stateProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const { loading } = useMonkeysLocaleMessages();\n  const statusStates = useMonkeysStatusStates();\n  const resolvedVariant = variant ?? statusStates.loading?.variant ?? 'spinner';\n  const densityClassName =\n    statusStates.density === 'compact'\n      ? 'min-h-0 px-3 py-3'\n      : statusStates.density === 'comfortable'\n        ? 'min-h-56 px-8 py-12'\n        : undefined;\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const resolvedIcon =\n    resolvedVariant === 'skeleton' && icon === undefined\n      ? undefined\n      : icon === undefined\n        ? <DefaultLoadingIcon className={theme.slots.loadingSpinner} />\n        : icon;\n  const resolvedAriaLabel =\n    nativeAriaLabel ??\n    (nativeAriaLabelledBy === undefined\n      ? typeof title === 'string'\n        ? title\n        : loading.spinner\n      : undefined);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...stateProps}\n      ref={ref}\n      role={role}\n      aria-live={ariaLive}\n      aria-busy={ariaBusy}\n      aria-label={resolvedAriaLabel}\n      aria-labelledby={nativeAriaLabelledBy}\n      data-monkeys-component=\"loading-state\"\n      data-slot=\"root\"\n      data-state=\"loading\"\n      data-variant={resolvedVariant}\n      data-density={statusStates.density}\n      className={cn(theme.slots.stateRoot, densityClassName, classNames?.root, className)}\n      style={{\n        ...theme.styles.stateRoot,\n        ...style,\n      }}\n    >\n      {resolvedVariant === 'skeleton' ? (\n        <SkeletonScope animation={animation}>\n          <div className=\"flex w-full max-w-sm flex-col gap-3\" data-slot=\"skeleton\">\n            <BaseSkeleton variant=\"block\" className=\"h-20\" />\n            <BaseSkeleton variant=\"line\" className=\"w-4/5\" />\n            <BaseSkeleton variant=\"line\" className=\"w-3/5\" />\n          </div>\n        </SkeletonScope>\n      ) : hasRenderableNode(resolvedIcon) ? (\n        <div\n          data-slot=\"icon\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateIcon, classNames?.icon)}\n          style={theme.styles.stateIcon}\n        >\n          {resolvedIcon}\n        </div>\n      ) : null}\n      {resolvedVariant !== 'skeleton' && hasRenderableNode(title) ? (\n        <div\n          data-slot=\"title\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateTitle, classNames?.title)}\n        >\n          {title}\n        </div>\n      ) : null}\n      {resolvedVariant !== 'skeleton' && hasRenderableNode(description) ? (\n        <div\n          data-slot=\"description\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateDescription, classNames?.description)}\n        >\n          {description}\n        </div>\n      ) : null}\n      {hasRenderableNode(actions) ? (\n        <div\n          data-slot=\"actions\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateActions, classNames?.actions)}\n        >\n          {actions}\n        </div>\n      ) : null}\n    </div>\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 { forwardRef, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport type { BaseSystemStateKind, BaseSystemStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction SystemStateIcon({ kind }: { kind: BaseSystemStateKind }) {\n  const path: Record<BaseSystemStateKind, ReactNode> = {\n    error: (\n      <>\n        <circle cx=\"12\" cy=\"12\" r=\"9\" />\n        <path d=\"M12 7v6\" />\n        <path d=\"M12 17h.01\" />\n      </>\n    ),\n    permission: (\n      <>\n        <rect x=\"5\" y=\"10\" width=\"14\" height=\"10\" rx=\"2\" />\n        <path d=\"M8 10V7a4 4 0 0 1 8 0v3\" />\n      </>\n    ),\n    offline: (\n      <>\n        <path d=\"M5 12.5a10 10 0 0 1 14 0\" />\n        <path d=\"M8.5 16a5 5 0 0 1 7 0\" />\n        <path d=\"M12 20h.01\" />\n        <path d=\"m4 4 16 16\" />\n      </>\n    ),\n    fallback: (\n      <>\n        <circle cx=\"12\" cy=\"12\" r=\"9\" />\n        <path d=\"M9.5 9a2.5 2.5 0 1 1 4.2 1.8c-1 .8-1.7 1.2-1.7 2.7\" />\n        <path d=\"M12 17h.01\" />\n      </>\n    ),\n  };\n\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-7 w-7\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"1.8\"\n    >\n      {path[kind]}\n    </svg>\n  );\n}\n\nexport const BaseSystemState = forwardRef<HTMLDivElement, BaseSystemStateProps>(\n  function BaseSystemState(\n    {\n      kind = 'fallback',\n      icon,\n      title,\n      description,\n      actions,\n      appearance,\n      className,\n      classNames,\n      style,\n      role,\n      'aria-live': ariaLive,\n      ...stateProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const statusStates = useMonkeysStatusStates();\n    const densityClassName =\n      statusStates.density === 'compact'\n        ? 'min-h-0 px-3 py-3'\n        : statusStates.density === 'comfortable'\n          ? 'min-h-56 px-8 py-12'\n          : undefined;\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const resolvedIcon =\n      icon === undefined ? <SystemStateIcon kind={kind} /> : icon;\n    const resolvedRole =\n      role ?? (kind === 'error' || kind === 'offline' ? 'alert' : 'status');\n\n    return (\n      <div\n        {...componentAttributes}\n        {...stateProps}\n        ref={ref}\n        role={resolvedRole}\n        aria-live={\n          ariaLive ?? (resolvedRole === 'alert' ? 'assertive' : 'polite')\n        }\n        data-monkeys-component=\"system-state\"\n        data-slot=\"root\"\n        data-state={kind}\n        data-density={statusStates.density}\n        className={cn(\n          theme.slots.stateRoot,\n          densityClassName,\n          classNames?.root,\n          className,\n        )}\n        style={{ ...theme.styles.stateRoot, ...style }}\n      >\n        {hasRenderableNode(resolvedIcon) ? (\n          <div\n            data-slot=\"icon\"\n            data-state={kind}\n            className={cn(theme.slots.stateIcon, classNames?.icon)}\n            style={theme.styles.stateIcon}\n          >\n            {resolvedIcon}\n          </div>\n        ) : null}\n        {hasRenderableNode(title) ? (\n          <div\n            data-slot=\"title\"\n            data-state={kind}\n            className={cn(theme.slots.stateTitle, classNames?.title)}\n          >\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(description) ? (\n          <div\n            data-slot=\"description\"\n            data-state={kind}\n            className={cn(\n              theme.slots.stateDescription,\n              classNames?.description,\n            )}\n          >\n            {description}\n          </div>\n        ) : null}\n        {hasRenderableNode(actions) ? (\n          <div\n            data-slot=\"actions\"\n            data-state={kind}\n            className={cn(theme.slots.stateActions, classNames?.actions)}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    );\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';\nimport { SkeletonScope, SkeletonItem, useSkeletonMotion } from '../skeleton/motion';\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(\n      `BaseTable ${name} must be a non-empty string when provided.`,\n    );\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 (\n      typeof definition.id !== \"string\" ||\n      definition.id.trim().length === 0\n    ) {\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(\n  columnOrder: unknown,\n  knownColumnIds?: Set<string>,\n) {\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(\n      (columnId) => !ids.has(columnId),\n    );\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(\n  columnSizes: unknown,\n  knownColumnIds?: Set<string>,\n) {\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(\n      column.minWidth,\n      columnId,\n      \"minWidth\",\n    );\n    const numericMaxWidth = validateNumericSize(\n      column.maxWidth,\n      columnId,\n      \"maxWidth\",\n    );\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\n          ? theme.styles.tableContainerFooterAttached\n          : 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\", {\n      stringAllowed: true,\n    });\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<\n      string | undefined\n    >();\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);\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);\n\nexport const BaseTableHead = forwardRef<\n  HTMLTableCellElement,\n  BaseTableHeadProps\n>(function BaseTableHead(\n  {\n    presentation,\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  },\n  forwardedRef,\n) {\n  assertEnum(\"head presentation\", presentation, [\"classic-data-grid\"] as const);\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 (minWidth !== undefined && maxWidth !== undefined && minWidth > maxWidth) {\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 classicDataGrid = presentation === \"classic-data-grid\";\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 (canResize && maxWidth !== undefined && maxWidth < (minWidth ?? 48)) {\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 = classicDataGrid ? (\n    <div\n      className={cn(\n        \"flex h-full min-w-0 select-none items-center\",\n        resolvedAlign === \"center\"\n          ? \"justify-center\"\n          : resolvedAlign === \"right\"\n            ? \"justify-end\"\n            : \"justify-start\",\n        canDrag && \"cursor-grab active:cursor-grabbing\",\n      )}\n      {...(canDrag\n        ? {\n            draggable: true,\n            role: \"button\",\n            tabIndex: 0,\n            \"aria-disabled\": false,\n            \"aria-roledescription\": \"sortable\",\n            onKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => {\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 =\n                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: DragEvent<HTMLDivElement>) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(columnId as string);\n              event.dataTransfer.effectAllowed = \"move\";\n              event.dataTransfer.setData(\n                DATA_TRANSFER_COLUMN_TYPE,\n                columnId as string,\n              );\n            },\n            onDragEnd: (event: DragEvent<HTMLDivElement>) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(undefined);\n            },\n          }\n        : {})}\n    >\n      {content}\n    </div>\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(\n              theme.slots.tableHeadDragHandle,\n              classNames?.dragHandle,\n            )}\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 =\n                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(\n                DATA_TRANSFER_COLUMN_TYPE,\n                columnId as string,\n              );\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(\n              theme.slots.tableHeadSortButton,\n              classNames?.sortButton,\n            )}\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\n                  className={cn(theme.slots.tableHeadLabel, classNames?.label)}\n                >\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(\n                theme.slots.tableHeadSortIcon,\n                classNames?.sortIcon,\n              )}\n            />\n          </button>\n        ) : (\n          <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n            {hasRenderableNode(content) ? (\n              <span\n                className={cn(theme.slots.tableHeadLabel, classNames?.label)}\n              >\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) ||\n      hasRenderableNode(actions) ||\n      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 (\n      !canDrag ||\n      !tableContext.draggingColumnId ||\n      tableContext.draggingColumnId === columnId\n    ) {\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<HTMLElement>) => {\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 +\n          (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 =\n        previousWidth +\n        (rtl ? COLUMN_RESIZE_KEYBOARD_STEP : -COLUMN_RESIZE_KEYBOARD_STEP);\n    }\n    if (event.key === \"ArrowRight\") {\n      nextWidth =\n        previousWidth +\n        (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      data-v2-header-drag-id={classicDataGrid && canDrag ? columnId : undefined}\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        classicDataGrid &&\n          \"!relative !h-9 !px-3 !align-middle !text-sm !font-medium !text-muted-foreground after:pointer-events-none after:absolute after:bottom-2 after:right-0 after:top-2 after:w-px after:bg-border/50 after:content-['']\",\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 && classicDataGrid ? (\n        <div\n          data-column-resize-handle=\"true\"\n          className=\"absolute right-0 top-0 z-20 h-full w-2 cursor-col-resize touch-none select-none hover:bg-muted\"\n          onPointerDown={handleResizePointerDown}\n        />\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 ??\n            messages.resizeColumn({ columnId: columnId as string })\n          }\n          className={cn(\n            theme.slots.tableHeadResizeHandle,\n            classNames?.resizeHandle,\n          )}\n          onClick={(event) => event.stopPropagation()}\n          onKeyDown={handleResizeKeyDown}\n          onPointerDown={handleResizePointerDown}\n        />\n      ) : null}\n    </th>\n  );\n});\n\nexport const BaseTableCell = forwardRef<\n  HTMLTableCellElement,\n  BaseTableCellProps\n>(function BaseTableCell(\n  { align = \"left\", appearance, className, classNames, style, ...cellProps },\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<\n  HTMLTableRowElement,\n  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\n            className={cn(theme.slots.tableEmptyContent, classNames?.content)}\n          >\n            {hasRenderableNode(icon) ? (\n              <div className={cn(theme.slots.tableEmptyIcon, classNames?.icon)}>\n                {icon}\n              </div>\n            ) : null}\n            {hasRenderableNode(title) ? (\n              <div\n                className={cn(theme.slots.tableEmptyTitle, classNames?.title)}\n              >\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\n                className={cn(\n                  theme.slots.tableEmptyActions,\n                  classNames?.actions,\n                )}\n              >\n                {actions}\n              </div>\n            ) : null}\n          </div>\n        ) : (\n          children\n        )}\n      </td>\n    </tr>\n  );\n});\n\nfunction BaseTableLoadingSkeleton({\n  baseClassName,\n  className,\n  style,\n}: {\n  baseClassName?: string;\n  className?: string;\n  style?: CSSProperties;\n}) {\n  const motion = useSkeletonMotion();\n  return (\n    <div\n      ref={motion.ref}\n      aria-hidden=\"true\"\n      data-slot=\"loading-skeleton\"\n      data-skeleton-animation={motion.mode}\n      className={cn(\n        baseClassName,\n        motion.mode === 'pulse' && 'animate-pulse motion-reduce:animate-none',\n        className,\n      )}\n      style={{ ...motion.style, ...style }}\n    />\n  );\n}\n\nexport function BaseTableLoading({\n  rows = 3,\n  columns,\n  columnWidths = [],\n  animated = true,\n  animation,\n  rowLabel,\n  appearance,\n  className,\n  classNames,\n  style,\n}: BaseTableLoadingProps) {\n  if (!Number.isSafeInteger(rows) || rows < 0) {\n    throw new Error('BaseTable loading rows must be a non-negative safe integer.');\n  }\n  if (!Number.isSafeInteger(columns) || columns < 1) {\n    throw new Error('BaseTable loading columns must be a positive safe integer.');\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    <SkeletonScope animation={animation} animated={animated}>\n      {Array.from({ length: rows }).map((_, rowIndex) => (\n        <SkeletonItem key={rowIndex} index={rowIndex}>\n          <tr\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                <BaseTableLoadingSkeleton\n                  baseClassName={theme.slots.tableLoadingSkeleton}\n                  className={classNames?.skeleton}\n                  style={{\n                    width: toCssSize(columnWidths[columnIndex]),\n                  }}\n                />\n              </td>\n            ))}\n          </tr>\n        </SkeletonItem>\n      ))}\n    </SkeletonScope>\n  );\n}\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseTextareaProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst controlSizeClassNames = {\n  sm: 'min-h-20 px-2.5 py-1.5 text-xs leading-5',\n  md: 'min-h-24 px-3 py-2 text-sm leading-6',\n  lg: 'min-h-28 px-3.5 py-2.5 text-base leading-7',\n} as const;\n\nexport const BaseTextarea = forwardRef<HTMLTextAreaElement, BaseTextareaProps>(\n  function BaseTextarea(\n    {\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      ...textareaProps\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(`BaseTextarea ${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        'BaseTextarea 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\n    return (\n      <textarea\n        {...componentAttributes}\n        {...textareaProps}\n        ref={ref}\n        disabled={disabled}\n        readOnly={readOnly}\n        aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n        data-monkeys-component=\"textarea\"\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.controlWrapper,\n          theme.slots.controlBase,\n          theme.slots.controlTextarea,\n          resolvedInvalid && theme.slots.controlInvalid,\n          disabled && theme.slots.controlDisabled,\n          readOnly && theme.slots.controlReadOnly,\n          controlSize && controlSizeClassNames[controlSize],\n          classNames?.control,\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        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    );\n  },\n);\n","import { createElement, forwardRef, useEffect, useState, type HTMLAttributes } from 'react';\nimport { Wrench } from 'lucide-react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysAssetIconResolver, useMonkeysAssetImageResolver, useMonkeysComponentAttributes } from '../../provider/context';\nimport { safeDisplayUrl } from '../safeDisplayUrl';\nimport { cn } from './utils';\n\nexport type BaseAssetIconDescriptor =\n  | { kind: 'image'; src: string }\n  | { kind: 'emoji'; value: string; backgroundColor?: string }\n  | { kind: 'lucide'; name: string };\nexport interface BaseAssetIconProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n  icon: BaseAssetIconDescriptor;\n  alt: string;\n  normalizeImageIcon?: boolean;\n}\nexport const BASE_ASSET_ICON_DESCRIPTOR_SCHEMA: JsonObject = {\n  oneOf: [\n    { type: 'object', additionalProperties: false, required: ['kind', 'src'], properties: { kind: { const: 'image' }, src: { type: 'string', minLength: 1, maxLength: 4096 } } },\n    { type: 'object', additionalProperties: false, required: ['kind', 'value'], properties: { kind: { const: 'emoji' }, value: { type: 'string', minLength: 1, maxLength: 64 }, backgroundColor: { type: 'string', maxLength: 128 } } },\n    { type: 'object', additionalProperties: false, required: ['kind', 'name'], properties: { kind: { const: 'lucide' }, name: { type: 'string', minLength: 1, maxLength: 128 } } },\n  ],\n};\n\nexport type AssetIconTag = 'path' | 'circle' | 'rect' | 'polyline' | 'line' | 'ellipse' | 'polygon';\nexport type AssetIconNode = readonly [tag: AssetIconTag, attributes: Readonly<Record<string, string>>];\n/** Host data remains untrusted until the component validates every node. */\nexport type AssetIconResolver = (name: string) => Promise<unknown>;\nexport type AssetImageResolver = (reference: string, signal: AbortSignal) => Promise<string | undefined>;\nconst attributesByTag: Record<AssetIconTag, readonly string[]> = {\n  path: ['d'], circle: ['cx', 'cy', 'r'], rect: ['x', 'y', 'width', 'height', 'rx', 'ry'],\n  polyline: ['points'], line: ['x1', 'x2', 'y1', 'y2'], ellipse: ['cx', 'cy', 'rx', 'ry'], polygon: ['points'],\n};\nexport function parseAssetIconNodes(value: unknown): readonly AssetIconNode[] | undefined {\n  if (!Array.isArray(value) || !value.length || value.length > 256) return undefined;\n  const result: AssetIconNode[] = [];\n  for (const node of value) {\n    if (!Array.isArray(node) || node.length !== 2 || typeof node[0] !== 'string' || !Object.prototype.hasOwnProperty.call(attributesByTag, node[0])) return undefined;\n    const tag = node[0] as AssetIconTag;\n    const raw = node[1];\n    if (!raw || typeof raw !== 'object' || Array.isArray(raw) || Object.getPrototypeOf(raw) !== Object.prototype) return undefined;\n    const attributes: Record<string, string> = {};\n    for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(raw))) {\n      if (!('value' in descriptor) || typeof descriptor.value !== 'string') return undefined;\n      const text = descriptor.value;\n      if (key === 'key') { if (text.length > 256) return undefined; }\n      else if (key === 'fill') { if (text !== 'currentColor' && text !== 'none') return undefined; }\n      else if (!attributesByTag[tag].includes(key)) return undefined;\n      else if (key === 'd') { if (!text.length || text.length > 8192 || !/^[MmZzLlHhVvCcSsQqTtAa0-9eE+.,\\s-]+$/.test(text)) return undefined; }\n      else if (key === 'points') { if (!text.length || text.length > 8192 || !/^[0-9eE+.,\\s-]+$/.test(text)) return undefined; }\n      else if (!text.trim() || text.length > 128 || !Number.isFinite(Number(text))) return undefined;\n      attributes[key] = text;\n    }\n    result.push([tag, attributes]);\n  }\n  return result;\n}\nexport const BaseAssetIcon = forwardRef<HTMLDivElement, BaseAssetIconProps>(function BaseAssetIcon(\n  { icon, alt, normalizeImageIcon = false, className, style, ...props }, ref,\n) {\n  const attributes = useMonkeysComponentAttributes();\n  const resolver = useMonkeysAssetIconResolver();\n  const imageResolver = useMonkeysAssetImageResolver();\n  const imageReference = icon.kind === 'image' ? icon.src : undefined;\n  const [image, setImage] = useState<{ reference: string; resolver: AssetImageResolver; src?: string }>();\n  useEffect(() => {\n    if (!imageReference || !imageResolver) return;\n    const controller = new AbortController();\n    void Promise.resolve().then(() => imageResolver(imageReference, controller.signal)).then(src => {\n      if (!controller.signal.aborted) setImage({ reference: imageReference, resolver: imageResolver, src: safeDisplayUrl(src, 'media') });\n    }).catch(() => { if (!controller.signal.aborted) setImage({ reference: imageReference, resolver: imageResolver }); });\n    return () => controller.abort();\n  }, [imageReference, imageResolver]);\n  const imageSource = imageResolver\n    ? image && image.reference === imageReference && image.resolver === imageResolver ? image.src : undefined\n    : safeDisplayUrl(imageReference, 'media');\n  const name = icon.kind === 'lucide' ? icon.name : undefined;\n  const [loaded, setLoaded] = useState<{ name: string; resolver: AssetIconResolver; nodes: readonly AssetIconNode[] | undefined }>();\n  useEffect(() => {\n    let active = true;\n    if (name && resolver) void Promise.resolve().then(() => resolver(name)).then(value => { if (active) setLoaded({ name, resolver, nodes: parseAssetIconNodes(value) }); }).catch(() => { if (active) setLoaded({ name, resolver, nodes: undefined }); });\n    return () => { active = false; };\n  }, [name, resolver]);\n  const nodes = loaded?.name === name && loaded?.resolver === resolver ? loaded?.nodes : undefined;\n  return <div {...attributes} {...props} ref={ref} role=\"img\" aria-label={alt}\n    className={cn('flex h-11 w-11 shrink-0 items-center justify-center rounded-xl', icon.kind === 'emoji' ? 'text-2xl' : icon.kind === 'image' && !normalizeImageIcon ? 'overflow-hidden border' : 'bg-muted', className)}\n    style={{ ...(icon.kind === 'emoji' && icon.backgroundColor ? { backgroundColor: icon.backgroundColor } : {}), ...style }}>\n    {icon.kind === 'image' ? imageSource ? <img src={imageSource} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" className={normalizeImageIcon ? 'h-5 w-5 object-contain' : 'h-full w-full object-cover'} /> : <Wrench aria-hidden=\"true\" className=\"h-5 w-5 text-muted-foreground\" />\n      : icon.kind === 'emoji' ? <span aria-hidden=\"true\">{icon.value}</span>\n        : nodes ? <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-5 w-5 text-muted-foreground\">{nodes.map(([tag, attributes], index) => { const { key, ...props } = attributes; return createElement(tag, { ...props, key: key ?? index }); })}</svg>\n          : <Wrench aria-hidden=\"true\" className=\"h-5 w-5 text-muted-foreground\" />}\n  </div>;\n});\n","import {\n  forwardRef,\n  type CSSProperties,\n  type ElementType,\n  type MouseEvent,\n  type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport { NavigationSidebar } from '../navigation-sidebar';\nimport { BaseAssetIcon, BaseBadge } from '../base';\n\nexport interface WorkbenchResizableSidebarItem {\n  id: string;\n  label: ReactNode;\n  icon?: ReactNode;\n  iconName?: string;\n  count?: number;\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  onItemSelect?: (value: { itemId: string }) => void;\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\nexport const WorkbenchResizableSidebar = forwardRef<HTMLElement, WorkbenchResizableSidebarProps>(\n  function WorkbenchResizableSidebar(\n    {\n      title,\n      items,\n      sections = [],\n      activeItemId,\n      onItemSelect,\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      ...domProps\n    },\n    ref,\n  ) {\n    const project = (item: WorkbenchResizableSidebarItem): WorkbenchResizableSidebarItem => ({\n      ...item,\n      icon: item.icon ?? (item.iconName ? <BaseAssetIcon icon={{ kind: 'lucide', name: item.iconName }} alt=\"\" className=\"h-4 w-4 rounded-none bg-transparent\" /> : undefined),\n      endContent: item.endContent ?? (item.count !== undefined ? <BaseBadge>{item.count}</BaseBadge> : undefined),\n      onClick: event => {\n        if (item.disabled) return;\n        item.onClick?.(event);\n        if (!event.defaultPrevented) onItemSelect?.({ itemId: item.id });\n      },\n    });\n    return (\n      <NavigationSidebar\n        ref={ref}\n        kind=\"catalog\"\n        title={title}\n        items={items.map(project)}\n        sections={sections.map(section => ({ ...section, items: section.items.map(project) }))}\n        activeItemId={activeItemId}\n        itemAs={itemAs}\n        collapsed={collapsed}\n        defaultCollapsed={defaultCollapsed}\n        onCollapsedChange={onCollapsedChange}\n        width={width}\n        onWidthChange={onWidthChange}\n        defaultWidth={defaultWidth}\n        minWidth={minWidth}\n        maxWidth={maxWidth}\n        collapsedWidth={collapsedWidth}\n        collapseThreshold={collapseThreshold}\n        storageKey={storageKey}\n        resizable={resizable}\n        collapsible={collapsible}\n        collapsePlacement=\"header\"\n        collapseLabel={collapseLabel}\n        expandLabel={expandLabel}\n        resizeLabel={resizeLabel}\n        desktopClassName={desktopClassName}\n        dataComponent=\"workbench-resizable-sidebar\"\n        rootDomProps={{ ...domProps, 'data-workbench-resizable-sidebar': '' }}\n        appearance={{\n          density: 'compact',\n          surface: 'panel',\n          activeVariant: 'soft',\n        }}\n        mobile={{ mode: 'horizontal', className: mobileClassName }}\n        className={cn('rounded-xl', className)}\n        classNames={{\n          root: classNames?.root,\n          header: cn('min-h-12 border-0', classNames?.header),\n          title: cn('text-[11px] font-medium uppercase text-muted-foreground', classNames?.title),\n          collapseButton: classNames?.collapseButton,\n          content: cn('space-y-2', classNames?.list),\n          section: classNames?.section,\n          sectionLabel: classNames?.sectionLabel,\n          item: cn('h-9 min-h-9 rounded-md px-2 text-[12px] shadow-none', classNames?.item),\n          itemIcon: cn('[&_svg]:h-3.5 [&_svg]:w-3.5', classNames?.itemIcon),\n          itemLabel: classNames?.itemLabel,\n          resizeHandle: classNames?.resizeHandle,\n          mobileNav: classNames?.mobileNav,\n          mobileItem: cn('h-9 min-h-9 shrink-0 px-3 text-xs', classNames?.mobileItem),\n        }}\n        style={style}\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-lg 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 {\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  useRef,\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  headerStyle?: CSSProperties;\n  cellStyle?: CSSProperties;\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 WorkbenchTableScrollRestoration {\n  key: string;\n  read(): { x: number; y: number; rowKey?: string; rowOffset?: number } | undefined;\n  write(position: { x: number; y: number; rowKey?: string; rowOffset?: number }): void;\n}\n\nexport interface WorkbenchTableViewProps<Row = any> {\n  scrollRestoration?: WorkbenchTableScrollRestoration;\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  headerPresentation?: \"classic-data-grid\";\n  fillRemainingWidthColumnKey?: string;\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?: (\n    column: WorkbenchTableViewColumn,\n    row: Row,\n    context: WorkbenchTableViewRenderContext<Row>,\n  ) => ReactNode;\n  renderFieldValue?: (\n    column: WorkbenchTableViewColumn,\n    row: Row,\n    context: WorkbenchTableViewRenderContext<Row>,\n  ) => ReactNode;\n  renderColumnHeader?: (\n    column: WorkbenchTableViewColumn,\n    context: WorkbenchTableViewHeaderContext<Row>,\n  ) => ReactNode;\n  onColumnOrderChange?: (\n    nextOrder: string[],\n    detail: BaseTableColumnOrderChangeDetail,\n  ) => void;\n  onColumnSizeChange?: (\n    columnId: string,\n    width: number,\n    detail: BaseTableColumnSizeChangeDetail,\n  ) => void;\n  onSort?: (columnKey: string, column: WorkbenchTableViewColumn) => void;\n  formatLabel?: (\n    value: ReactNode,\n    context?: { column?: WorkbenchTableViewColumn },\n  ) => ReactNode;\n  getColumnDataType?: (\n    columnKey: string,\n    rows: Row[],\n    column?: WorkbenchTableViewColumn,\n  ) => 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?: (\n    row: Row,\n    rowIndex: number,\n  ) => 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?:\n    | ReactNode\n    | ((\n        hiddenRowCount: number,\n        renderedRowCount: number,\n        totalRowCount: number,\n      ) => ReactNode);\n  scrollFooter?: 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)\n    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(\n  column: WorkbenchTableViewColumn,\n  action: boolean,\n) {\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 (\n    controlledWidth ??\n    numericCssSize(column.width) ??\n    numericCssSize(column.minWidth) ??\n    defaultWorkbenchColumnWidth(column, action)\n  );\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\")\n    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(\n  columns: WorkbenchTableViewColumn[],\n  columnOrder?: string[],\n) {\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(\n    (column) => !orderedKeySet.has(column.key),\n  );\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) =>\n    validColumnKeys.has(columnKey),\n  );\n  const orderedKeySet = new Set(orderedKeys);\n  const remainingKeys = columnKeys.filter(\n    (columnKey) => !orderedKeySet.has(columnKey),\n  );\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  headerPresentation,\n  fillRemainingWidthColumnKey,\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  scrollFooter,\n  scrollRestoration,\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  );\n  const [internalColumnOrder, setInternalColumnOrder] =\n    useState(defaultColumnOrder);\n  const [internalColumnSizes, setInternalColumnSizes] =\n    useState<BaseTableColumnSizes>({});\n  const scrollAreaRef = useRef<HTMLDivElement | null>(null);\n  const rowElements = useRef(new Map<string, HTMLTableRowElement>());\n  const scrollAdapter = useRef(scrollRestoration);\n  scrollAdapter.current = scrollRestoration;\n  const restoredScrollKey = useRef<string | undefined>(undefined);\n  const saveScroll = useCallback(() => {\n    const viewport = scrollAreaRef.current;\n    const adapter = scrollAdapter.current;\n    if (!viewport || !adapter || restoredScrollKey.current !== adapter.key) return;\n    const top = viewport.getBoundingClientRect().top;\n    const anchor = Array.from(rowElements.current.entries()).find(([, element]) => element.getBoundingClientRect().bottom > top);\n    adapter.write({ x: viewport.scrollLeft, y: viewport.scrollTop,\n      ...(anchor ? { rowKey: anchor[0], rowOffset: anchor[1].getBoundingClientRect().top - top } : {}) });\n  }, []);\n  useEffect(() => {\n    const viewport = scrollAreaRef.current;\n    const adapter = scrollAdapter.current;\n    if (!viewport || !adapter || restoredScrollKey.current === adapter.key || rows.length === 0) return;\n    const position = adapter.read();\n    const restore = () => {\n      const anchor = position?.rowKey ? rowElements.current.get(position.rowKey) : undefined;\n      const y = anchor && typeof position?.rowOffset === 'number'\n        ? viewport.scrollTop + anchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - position.rowOffset\n        : position?.y ?? 0;\n      viewport.scrollTo({ left: position?.x ?? 0, top: Math.max(0, y), behavior: 'auto' });\n      restoredScrollKey.current = adapter.key;\n    };\n    const ownerWindow = viewport.ownerDocument.defaultView;\n    if (!ownerWindow) { restore(); return; }\n    const frame = ownerWindow.requestAnimationFrame(restore);\n    return () => ownerWindow.cancelAnimationFrame(frame);\n  }, [rows, scrollRestoration?.key]);\n  useEffect(() => {\n    const ownerWindow = scrollAreaRef.current?.ownerDocument.defaultView;\n    ownerWindow?.addEventListener('pagehide', saveScroll);\n    return () => { ownerWindow?.removeEventListener('pagehide', saveScroll); saveScroll(); };\n  }, [saveScroll]);\n  const [tableViewportWidth, setTableViewportWidth] = useState<number>();\n\n  useEffect(() => {\n    setInternalColumnOrder((current) =>\n      normalizeColumnOrder(defaultColumnOrder, current),\n    );\n  }, [defaultColumnOrder]);\n\n  const resolvedColumnOrder = columnOrder\n    ? normalizeColumnOrder(defaultColumnOrder, columnOrder)\n    : internalColumnOrder;\n  const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n  const handleColumnOrderChange = useCallback(\n    (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n      const normalizedOrder = normalizeColumnOrder(\n        defaultColumnOrder,\n        nextOrder,\n      );\n      if (!columnOrder) {\n        setInternalColumnOrder(normalizedOrder);\n      }\n      onColumnOrderChange?.(normalizedOrder, detail);\n    },\n    [columnOrder, defaultColumnOrder, onColumnOrderChange],\n  );\n  const handleColumnSizeChange = useCallback(\n    (\n      columnId: string,\n      width: number,\n      detail: BaseTableColumnSizeChangeDetail,\n    ) => {\n      if (!columnSizes) {\n        setInternalColumnSizes((current) => ({\n          ...current,\n          [columnId]: width,\n        }));\n      }\n      onColumnSizeChange?.(columnId, width, detail);\n    },\n    [columnSizes, onColumnSizeChange],\n  );\n  const resolvedSelectedKey = selectedRowKey ?? selectedLinkKey;\n  const resolvedActivePrimaryColumn =\n    activePrimaryColumn ?? activeTablePrimaryColumn;\n  const sourceOrderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n  const fixedTableWidth = fillRemainingWidthColumnKey\n    ? sourceOrderedColumns.reduce((total, column) => {\n        if (column.key === fillRemainingWidthColumnKey) return total;\n        return (\n          total +\n          resolvedWorkbenchColumnWidth(\n            column,\n            resolvedColumnSizes[column.key],\n            isActionColumn?.(column) ?? isActionField?.(column) ?? false,\n          )\n        );\n      }, 0)\n    : undefined;\n  const remainingTableWidth =\n    fillRemainingWidthColumnKey &&\n    fixedTableWidth !== undefined &&\n    tableViewportWidth !== undefined\n      ? Math.max(0, Math.round(tableViewportWidth - fixedTableWidth))\n      : undefined;\n  const orderedColumns = sourceOrderedColumns.flatMap((column) => {\n    if (column.key !== fillRemainingWidthColumnKey) return [column];\n    if (remainingTableWidth === 0) return [];\n    if (remainingTableWidth === undefined) return [column];\n    return [\n      {\n        ...column,\n        width: remainingTableWidth,\n        minWidth: remainingTableWidth,\n        maxWidth: remainingTableWidth,\n      },\n    ];\n  });\n  const hiddenRowCount = Math.max(\n    0,\n    Number(totalRowCount || rows.length) -\n      Number(renderedRowCount || rows.length),\n  );\n  const renderValue =\n    renderCell ??\n    renderFieldValue ??\n    ((column: WorkbenchTableViewColumn, row: Row) =>\n      (row as any)?.[column.key]);\n  const isAction = isActionColumn ?? isActionField ?? (() => false);\n  const isDisabled =\n    isRowDisabled ?? isWorkbenchPlaceholderRow ?? (() => false);\n  const resolveColumnIcon = getColumnIcon ?? getColumnTypeIcon;\n  const resolvedTableWidth =\n    fixedTableWidth !== undefined && remainingTableWidth !== undefined\n      ? fixedTableWidth + remainingTableWidth\n      : undefined;\n  const resolvedMinWidth =\n    resolvedTableWidth ??\n    tableMinWidth ??\n    minWidth ??\n    Math.max(\n      760,\n      orderedColumns.reduce(\n        (total, column) =>\n          total +\n          resolvedWorkbenchColumnWidth(\n            column,\n            resolvedColumnSizes[column.key],\n            isAction(column),\n          ),\n        0,\n      ),\n    );\n\n  useEffect(() => {\n    if (!fillRemainingWidthColumnKey) {\n      setTableViewportWidth(undefined);\n      return;\n    }\n    const scrollArea = scrollAreaRef.current;\n    if (!scrollArea) return;\n    const ownerWindow = scrollArea.ownerDocument.defaultView;\n    const updateWidth = () => {\n      const nextWidth = Math.round(scrollArea.getBoundingClientRect().width);\n      if (!Number.isFinite(nextWidth) || nextWidth <= 0) return;\n      setTableViewportWidth((current) =>\n        current === nextWidth ? current : nextWidth,\n      );\n    };\n    updateWidth();\n    const Observer = ownerWindow?.ResizeObserver;\n    const observer = Observer ? new Observer(updateWidth) : undefined;\n    observer?.observe(scrollArea);\n    ownerWindow?.addEventListener(\"resize\", updateWidth);\n    return () => {\n      observer?.disconnect();\n      ownerWindow?.removeEventListener(\"resize\", updateWidth);\n    };\n  }, [fillRemainingWidthColumnKey]);\n\n  const footer =\n    hiddenRowCount > 0 && hiddenRowsMessage\n      ? typeof hiddenRowsMessage === \"function\"\n        ? hiddenRowsMessage(\n            hiddenRowCount,\n            renderedRowCount || rows.length,\n            totalRowCount || rows.length,\n          )\n        : hiddenRowsMessage\n      : null;\n\n  return (\n    <BaseTableContainer\n      appearance={appearance}\n      className={cn(\n        \"w-full overflow-hidden rounded-lg border border-border/40 bg-muted/15 dark:border-border/35 dark:bg-muted/10\",\n        classNames?.root,\n        className,\n      )}\n      style={style}\n    >\n      <div\n        ref={scrollAreaRef}\n        onScroll={saveScroll}\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(\n            \"w-full table-auto text-left text-xs\",\n            classNames?.table,\n            tableClassName,\n          )}\n          style={{\n            width: resolvedTableWidth,\n            minWidth: resolvedMinWidth,\n          }}\n        >\n          <BaseTableHeader\n            appearance={appearance}\n            className={cn(\n              \"text-[10px] font-mono uppercase tracking-wide text-muted-foreground\",\n              classNames?.header,\n            )}\n          >\n            <BaseTableRow\n              className={cn(\"hover:bg-transparent\", classNames?.headerRow)}\n            >\n              {orderedColumns.map((column, columnIndex) => {\n                const defaultColumnWidth = defaultWorkbenchColumnWidth(\n                  column,\n                  isAction(column),\n                );\n                const columnType =\n                  column.renderType ||\n                  column.type ||\n                  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 =\n                  previousColumn?.renderType === \"icon\" &&\n                  column.key === resolvedActivePrimaryColumn?.key;\n                const headerContent = renderColumnHeader\n                  ? renderColumnHeader(column, {\n                      column,\n                      columnIndex,\n                      columns: orderedColumns,\n                      rows,\n                      columnType,\n                    })\n                  : formatLabel(column.label, { column });\n                const headerTrailing =\n                  !renderColumnHeader &&\n                  (hasRenderableNode(column.trailing) ||\n                    hasRenderableNode(column.helperText)) ? (\n                    <span className=\"inline-flex items-center gap-1.5\">\n                      {hasRenderableNode(column.trailing)\n                        ? formatLabel(column.trailing, { column })\n                        : null}\n                      <WorkbenchTableHeaderHelper\n                        helperText={formatLabel(column.helperText, { column })}\n                        className={classNames?.helper}\n                      />\n                    </span>\n                  ) : undefined;\n                const sortable = Boolean(column.sortable);\n                const handleSort =\n                  sortable && onSort\n                    ? () => onSort(column.key, column)\n                    : undefined;\n\n                return (\n                  <BaseTableHead\n                    appearance={appearance}\n                    presentation={headerPresentation}\n                    key={column.key}\n                    columnId={column.key}\n                    align={column.align}\n                    icon={renderColumnHeader ? undefined : columnIcon}\n                    label={headerContent}\n                    description={\n                      renderColumnHeader\n                        ? undefined\n                        : formatLabel(column.description, { column })\n                    }\n                    meta={\n                      renderColumnHeader\n                        ? undefined\n                        : formatLabel(column.meta, { column })\n                    }\n                    actions={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={\n                      typeof column.minWidth === \"number\"\n                        ? column.minWidth\n                        : undefined\n                    }\n                    maxWidth={\n                      typeof column.maxWidth === \"number\"\n                        ? column.maxWidth\n                        : undefined\n                    }\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 &&\n                        columnIndex === 0 &&\n                        \"md:left-0 md:z-30 md:shadow-[1px_0_0_0_hsl(var(--border)/0.35)]\",\n                      column.compactHeaderClassName,\n                      column.renderType === \"icon\" && \"pl-3 pr-1\",\n                      followsRecordIcon && \"pl-2\",\n                      classNames?.headerCell,\n                      column.headerClassName,\n                    )}\n                    style={{\n                      minWidth:\n                        typeof column.minWidth === \"string\"\n                          ? column.minWidth\n                          : undefined,\n                      maxWidth:\n                        typeof column.maxWidth === \"string\"\n                          ? column.maxWidth\n                          : undefined,\n                      ...column.headerStyle,\n                    }}\n                  />\n                );\n              })}\n            </BaseTableRow>\n          </BaseTableHeader>\n          <BaseTableBody\n            appearance={appearance}\n            className={cn(\n              \"divide-y divide-border/35 dark:divide-border/30\",\n              classNames?.body,\n            )}\n          >\n            {rows.length ? (\n              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(\n                  resolvedSelectedKey &&\n                    String(selectionKey) === String(resolvedSelectedKey),\n                );\n                const resolvedRowClassName =\n                  typeof rowClassName === \"function\"\n                    ? rowClassName(row, rowIndex)\n                    : rowClassName;\n\n                return (\n                  <BaseTableRow\n                    appearance={appearance}\n                    key={key}\n                    ref={(element) => { if (element) rowElements.current.set(String(key), element); else rowElements.current.delete(String(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\n                        ? \"cursor-pointer\"\n                        : \"cursor-default\",\n                      selected\n                        ? \"bg-primary/10 hover:bg-primary/15\"\n                        : disabled\n                          ? \"\"\n                          : \"hover:bg-muted/25 dark:hover:bg-muted/15\",\n                      classNames?.row,\n                      resolvedRowClassName,\n                    )}\n                  >\n                    {orderedColumns.map((column, columnIndex) => {\n                      const shouldWrap =\n                        isAction(column) || column.wrap === true;\n                      const previousColumn = orderedColumns[columnIndex - 1];\n                      const followsRecordIcon =\n                        previousColumn?.renderType === \"icon\" &&\n                        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\n                              ? \"align-top whitespace-normal\"\n                              : \"whitespace-nowrap\",\n                            \"px-4 py-3 text-muted-foreground\",\n                            !shouldWrap && \"overflow-hidden text-ellipsis\",\n                            stickyFirstColumn &&\n                              columnIndex === 0 &&\n                              \"md:sticky md:left-0 md:z-10 md:bg-card/95 md:text-foreground md:shadow-[1px_0_0_0_hsl(var(--border)/0.3)]\",\n                            column.compactCellClassName,\n                            column.renderType === \"icon\" && \"pl-3 pr-1\",\n                            followsRecordIcon && \"pl-2\",\n                            classNames?.cell,\n                            column.cellClassName,\n                          )}\n                          style={column.cellStyle}\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            ) : (\n              <BaseTableEmpty\n                appearance={appearance}\n                colSpan={Math.max(orderedColumns.length, 1)}\n                classNames={{\n                  cell: \"px-4 py-10 text-center text-sm text-muted-foreground\",\n                }}\n              >\n                {emptyState}\n              </BaseTableEmpty>\n            )}\n          </BaseTableBody>\n        </BaseTable>\n        {hasRenderableNode(scrollFooter) ? (\n          <div style={{ minWidth: resolvedMinWidth }}>{scrollFooter}</div>\n        ) : null}\n      </div>\n      {footer ? (\n        <div\n          className={cn(\n            \"border-t border-border/40 px-4 py-2 text-[11px] text-muted-foreground dark:border-border/30\",\n            classNames?.footer,\n          )}\n        >\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  cardInteraction?: 'button' | 'container';\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  galleryDetailPresentation?: 'tiles' | 'lines';\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  cardInteraction = 'button',\n  isSelected = false,\n  isMasonry = false,\n  galleryFieldKey = 'auto',\n  galleryDensity = 'comfortable',\n  galleryBentoColumns,\n  galleryDetailVisibility = 'limit',\n  galleryDetailLimit,\n  galleryDetailPresentation = 'tiles',\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 summaryCandidates = contentColumns.filter(column => column && column.key !== titleColumn?.key && !resolvedIsMediaColumn(column, row) && resolvedIsSummaryCandidate(column, row));\n  const summaries = summaryCandidates.map(column => ({ column, text: String(resolvedGetDisplayText(resolvedGetFieldValue(column, row))) }));\n  const summaryColumn = (summaries.find(({ text }) => text !== '—' && text.length > 12)\n    || summaries.find(({ text }) => text !== '—'))?.column || 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 lineDetails = galleryDetailPresentation === 'lines';\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 metaContext = { row, contentColumns, detailColumns, titleColumn, summaryColumn, getDisplayText: resolvedGetDisplayText, getFieldValue: resolvedGetFieldValue as any };\n  const metaContent = renderMeta?.(metaContext) ?? null;\n  const customLeadingVisual = renderLeadingVisual?.({ ...metaContext, iconVisual }) ?? 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  const Root = cardInteraction === 'container' ? 'div' : 'button';\n  return (\n    <Root\n      type={cardInteraction === 'button' ? 'button' : undefined}\n      onClick={cardInteraction === 'button' ? onClick : undefined}\n      aria-label={getLabelText(titleText)}\n      className={cn(\n        'group relative w-full rounded-lg text-left transition-all duration-300',\n        isImageOnly\n          ? 'overflow-hidden bg-transparent p-0 shadow-none'\n          : isPreviewOnly\n            ? 'overflow-hidden bg-transparent p-0'\n            : cn('overflow-hidden border', isChromaticBento && '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={cn('relative z-[1]', (isImageOnly || isPreviewOnly) && 'rounded-[inherit]')}>\n        {customPreview ?? (\n          <>\n            {isImageMedia && mediaColumn ? (\n              <div className={cn(\n                'overflow-hidden bg-card/50',\n                isImageOnly\n                  ? 'rounded-[inherit] bg-transparent'\n                  : isPreviewOnly\n                    ? 'rounded-[inherit]'\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                'rounded-[inherit] border py-10', iconVisual.chipClassName || 'border-primary/20 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\">{cardInteraction === 'container' && onClick ? <button type=\"button\" onClick={onClick} className=\"border-0 bg-transparent p-0 text-left hover:underline\" style={{ font: 'inherit', color: 'inherit' }}>{titleText}</button> : 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 data-gallery-detail-presentation={galleryDetailPresentation} className={cn('mt-3 grid grid-flow-row gap-2', lineDetails ? 'grid-cols-1' : detailGridClassName)}>\n                {visibleDetailColumns.map((column) => (\n                  <div key={`${(row as any).id || (row as any).linkKey}-${column.key}`} className={lineDetails ? 'flex min-w-0 items-start gap-2 text-xs' : detailCellClassName}>\n                    {column.label ? <div className={lineDetails ? 'shrink-0 text-muted-foreground' : detailLabelClassName}>{formatLabel(column.label, { column })}</div> : null}\n                    <div className={lineDetails ? 'min-w-0 text-foreground' : 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    </Root>\n  );\n}\n","import {\n  useEffect,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState,\n  type HTMLAttributes,\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;\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\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' | 'shortest' | 'dense';\n  rowSpan?: number;\n  rowHeight: number;\n  size?: WorkbenchMasonryItemSize;\n}\n\nexport interface WorkbenchMasonryLayoutProps<Item = any> {\n  items?: readonly 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  columnCount?: number;\n  gap?: number;\n  rowHeight?: number;\n  placementStrategy?: 'shelf' | 'shortest' | 'dense';\n  containerProps?: Omit<HTMLAttributes<HTMLDivElement>, 'children'>;\n  getItemProps?: (\n    item: Item,\n    context: WorkbenchMasonryLayoutContext,\n  ) => Omit<HTMLAttributes<HTMLDivElement>, 'children'>;\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  columnCount: requestedColumnCount,\n  gap = DEFAULT_MASONRY_GAP_PX,\n  rowHeight = DEFAULT_MASONRY_ROW_HEIGHT_PX,\n  placementStrategy = 'shelf',\n  containerProps,\n  getItemProps,\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 currentItemKeys = new Set(itemKeys);\n      const next = Object.fromEntries(\n        Object.entries(prev).filter(([key]) => currentItemKeys.has(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 normalizedRequestedColumnCount = Number.isFinite(requestedColumnCount) && Number(requestedColumnCount) > 0\n    ? clamp(Math.round(Number(requestedColumnCount)), 1, 24)\n    : undefined;\n  const columnCount = normalizedRequestedColumnCount || 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  useIsomorphicLayoutEffect(() => {\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 (placementStrategy === 'shortest') {\n          let shortestBottom = Number.POSITIVE_INFINITY;\n          for (let candidate = 0; candidate <= columnCount - resolvedSpan; candidate += 1) {\n            const candidateBottom = Math.max(...columnBottoms.slice(candidate, candidate + resolvedSpan));\n            if (candidateBottom < shortestBottom) {\n              shortestBottom = candidateBottom;\n              startColumn = candidate;\n            }\n          }\n        } else {\n          if (startColumn + resolvedSpan > columnCount) {\n            startColumn = 0;\n          }\n\n          startColumn = Math.min(startColumn, columnCount - resolvedSpan);\n        }\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        if (placementStrategy !== 'shortest') {\n          nextColumnIndex = startColumn + resolvedSpan;\n\n          if (nextColumnIndex >= columnCount) {\n            nextColumnIndex = 0;\n          }\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        {...containerProps}\n        className={cn('relative w-full', className, containerProps?.className)}\n        style={{ ...containerProps?.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          const layoutContext: WorkbenchMasonryLayoutContext = {\n            columnCount,\n            columnSpan,\n            columnWidth: resolvedColumnWidth,\n            containerWidth,\n            gap,\n            itemWidth,\n            placementStrategy,\n            rowSpan,\n            rowHeight,\n            size,\n          };\n          const itemProps = getItemProps?.(item, layoutContext);\n\n          return (\n            <div\n              key={key}\n              {...itemProps}\n              className={cn('absolute min-w-0', itemProps?.className)}\n              style={{\n                ...itemProps?.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)} role=\"presentation\" className=\"min-w-0\">\n                {renderItem(item, layoutContext)}\n              </div>\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      ref={containerRef}\n      {...containerProps}\n      className={cn('grid w-full items-start', className, containerProps?.className)}\n      style={{\n        ...containerProps?.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        const layoutContext: WorkbenchMasonryLayoutContext = {\n              columnCount,\n              columnSpan,\n              columnWidth: resolvedColumnWidth,\n              containerWidth,\n              gap,\n              placementStrategy,\n              rowSpan,\n              rowHeight,\n              size,\n        };\n        const itemProps = getItemProps?.(item, layoutContext);\n        return (\n          <div\n            key={key}\n            {...itemProps}\n            className={cn('min-w-0', itemProps?.className)}\n            style={{\n              ...itemProps?.style,\n              gridColumn: `span ${columnSpan}`,\n              gridRow: `span ${rowSpan}`,\n            }}\n          >\n            <div ref={(node) => registerItemNode(key, node)} role=\"presentation\" className=\"min-w-0\">\n              {renderItem(item, layoutContext)}\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n","import { useMemo, type CSSProperties } from 'react';\n\nimport { BaseSkeleton } from '../base/BaseSkeleton';\nimport { cn } from '../base/utils';\nimport { SkeletonScope, SkeletonItem, type SkeletonGroupAnimation } from '../skeleton/motion';\nimport { WorkbenchMasonryLayout } from './WorkbenchMasonryLayout';\n\nexport type WorkbenchCollectionLoadingVariant = 'skeleton' | 'spinner';\n\nexport interface WorkbenchCollectionSkeletonConfig {\n  count?: number;\n  loadMoreCount?: number;\n  aspectRatios?: readonly number[];\n  animated?: boolean;\n  animation?: SkeletonGroupAnimation;\n}\n\ntype WorkbenchCollectionSkeletonLayoutMode = 'grid' | 'masonry' | 'dense' | 'rail';\n\ninterface WorkbenchCollectionSkeletonItem {\n  index: number;\n  aspectRatio: number;\n  key: string;\n}\n\ninterface WorkbenchCollectionSkeletonProps {\n  mode: WorkbenchCollectionSkeletonLayoutMode;\n  phase: 'initial' | 'load-more';\n  columnCount: number;\n  columnWidth: number;\n  cardWidth?: number | string;\n  gap: number;\n  rowHeight: number;\n  config?: WorkbenchCollectionSkeletonConfig;\n  ariaLabel: string;\n  className?: string;\n}\n\nconst DEFAULT_PROVISIONAL_CAPACITY = 12;\nconst DEFAULT_GRID_ASPECT_RATIOS = [1] as const;\nconst DEFAULT_RAIL_ASPECT_RATIOS = [4 / 3] as const;\nconst DEFAULT_MASONRY_ASPECT_RATIOS = [1, 4 / 5, 3 / 2, 3 / 4, 5 / 4] as const;\nconst MIN_SKELETON_ASPECT_RATIO = 0.5;\nconst MAX_SKELETON_ASPECT_RATIO = 2;\nconst SKELETON_BACKGROUND_COLOR = 'hsl(var(--monkeys-color-muted, var(--muted)))';\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeCount(value: number | undefined, fallback: number, max: number) {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) return fallback;\n  return clamp(Math.round(value), 1, max);\n}\n\nfunction getDefaultAspectRatios(mode: WorkbenchCollectionSkeletonLayoutMode) {\n  if (mode === 'masonry' || mode === 'dense') return DEFAULT_MASONRY_ASPECT_RATIOS;\n  if (mode === 'rail') return DEFAULT_RAIL_ASPECT_RATIOS;\n  return DEFAULT_GRID_ASPECT_RATIOS;\n}\n\nfunction resolveAspectRatios(\n  mode: WorkbenchCollectionSkeletonLayoutMode,\n  values: readonly number[] | undefined,\n) {\n  const normalized = values\n    ?.filter((value) => typeof value === 'number' && Number.isFinite(value) && value > 0)\n    .map((value) => clamp(value, MIN_SKELETON_ASPECT_RATIO, MAX_SKELETON_ASPECT_RATIO));\n  return normalized?.length ? normalized : getDefaultAspectRatios(mode);\n}\n\nexport function resolveWorkbenchCollectionSkeletonCapacity(\n  config?: WorkbenchCollectionSkeletonConfig,\n) {\n  return normalizeCount(config?.count, DEFAULT_PROVISIONAL_CAPACITY, 48);\n}\n\nexport function resolveWorkbenchCollectionLoadingVariant(\n  value: unknown,\n): WorkbenchCollectionLoadingVariant {\n  if (value === undefined) return 'skeleton';\n  if (value === 'skeleton' || value === 'spinner') return value;\n  throw new TypeError('WorkbenchCollection loading.variant must be \"skeleton\" or \"spinner\".');\n}\n\nfunction resolveSkeletonCount({\n  columnCount,\n  config,\n  phase,\n}: Pick<WorkbenchCollectionSkeletonProps, 'columnCount' | 'config' | 'phase'>) {\n  if (phase === 'initial') {\n    const fallback = clamp(columnCount * 2, 6, 24);\n    return normalizeCount(config?.count, fallback, 48);\n  }\n  const fallback = clamp(columnCount, 1, 12);\n  return normalizeCount(config?.loadMoreCount, fallback, 24);\n}\n\nfunction getSkeletonHeight(columnWidth: number, aspectRatio: number) {\n  return Math.max(1, columnWidth / aspectRatio);\n}\n\nexport function WorkbenchCollectionSkeleton({\n  mode,\n  phase,\n  columnCount,\n  columnWidth,\n  cardWidth,\n  gap,\n  rowHeight,\n  config,\n  ariaLabel,\n  className,\n}: WorkbenchCollectionSkeletonProps) {\n  const count = resolveSkeletonCount({ columnCount, config, phase });\n  const aspectRatios = resolveAspectRatios(mode, config?.aspectRatios);\n  const animated = config?.animated ?? true;\n  const items = useMemo<WorkbenchCollectionSkeletonItem[]>(\n    () =>\n      Array.from({ length: count }, (_, index) => ({\n        aspectRatio: aspectRatios[index % aspectRatios.length],\n        key: `${phase}-${index}`,\n        index,\n      })),\n    [aspectRatios, count, phase],\n  );\n  const renderSkeleton = (item: WorkbenchCollectionSkeletonItem, style?: CSSProperties) => (\n    <SkeletonItem index={item.index}>\n      <BaseSkeleton\n        variant=\"block\"\n        animated={animated}\n        className=\"h-auto w-full rounded-lg\"\n        style={{\n          backgroundColor: SKELETON_BACKGROUND_COLOR,\n          ...(style ?? { aspectRatio: String(item.aspectRatio) }),\n        }}\n        data-collection-skeleton-item=\"\"\n        data-skeleton-aspect-ratio={item.aspectRatio}\n      />\n    </SkeletonItem>\n  );\n\n  return (\n    <SkeletonScope animation={config?.animation} animated={animated}>\n      <div\n        role=\"status\"\n        aria-label={ariaLabel}\n        aria-atomic=\"true\"\n        data-collection-loading={phase}\n        data-layout-mode={mode}\n        className=\"min-w-0\"\n      >\n        {mode === 'masonry' || mode === 'dense' ? (\n          <WorkbenchMasonryLayout\n            items={items}\n            columnCount={columnCount}\n            columnWidth={columnWidth}\n            gap={gap}\n            rowHeight={rowHeight}\n            placementStrategy={mode === 'dense' ? 'dense' : 'shortest'}\n            className={className}\n            containerProps={{ 'aria-hidden': true }}\n            getItemKey={(item) => item.key}\n            getItemSize={(item, layout) => ({\n              height: getSkeletonHeight(layout.columnWidth, item.aspectRatio),\n            })}\n            renderItem={(item, layout) =>\n              renderSkeleton(item, {\n                height: `${getSkeletonHeight(layout.columnWidth, item.aspectRatio)}px`,\n              })\n            }\n          />\n        ) : mode === 'rail' ? (\n          <div\n            aria-hidden=\"true\"\n            className={cn('grid min-w-0 grid-flow-col items-start overflow-x-auto', className)}\n            style={{\n              gap,\n              gridAutoColumns:\n                typeof cardWidth === 'number' ? `${cardWidth}px` : cardWidth ?? `${columnWidth}px`,\n            }}\n          >\n            {items.map((item) => (\n              <div key={item.key}>{renderSkeleton(item)}</div>\n            ))}\n          </div>\n        ) : (\n          <div\n            aria-hidden=\"true\"\n            className={cn('grid min-w-0 items-start', className)}\n            style={{ gap, gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))` }}\n          >\n            {items.map((item) => (\n              <div key={item.key}>{renderSkeleton(item)}</div>\n            ))}\n          </div>\n        )}\n      </div>\n    </SkeletonScope>\n  );\n}\n","import {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nexport type WorkbenchCollectionKey = string | number;\nexport type WorkbenchCollectionSelectionMode = 'none' | 'single' | 'multiple';\nexport type WorkbenchCollectionSelectionBehavior = 'replace' | 'toggle' | 'range';\n\nexport interface WorkbenchCollectionSelectionIntent {\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  shiftKey?: boolean;\n}\n\nexport interface WorkbenchCollectionSelectionChangeDetails<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  behavior: WorkbenchCollectionSelectionBehavior;\n}\n\nexport interface UseWorkbenchCollectionSelectionOptions<Item> {\n  items: readonly Item[];\n  getItemKey: (item: Item, index: number) => WorkbenchCollectionKey;\n  mode?: WorkbenchCollectionSelectionMode;\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  selectedKeys?: Iterable<WorkbenchCollectionKey>;\n  defaultSelectedKeys?: Iterable<WorkbenchCollectionKey>;\n  isItemDisabled?: (item: Item, index: number) => boolean;\n  onSelectionChange?: (\n    selectedKeys: ReadonlySet<WorkbenchCollectionKey>,\n    details: WorkbenchCollectionSelectionChangeDetails<Item>,\n  ) => void;\n}\n\nexport interface WorkbenchCollectionSelectionController {\n  mode: WorkbenchCollectionSelectionMode;\n  selectedKeys: ReadonlySet<WorkbenchCollectionKey>;\n  isSelected: (key: WorkbenchCollectionKey) => boolean;\n  selectKey: (key: WorkbenchCollectionKey, intent?: WorkbenchCollectionSelectionIntent) => void;\n  resetAnchor: () => void;\n}\n\ninterface NormalizedSelectionItem<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n}\n\nfunction setsEqual<Value>(left: ReadonlySet<Value>, right: ReadonlySet<Value>) {\n  if (left.size !== right.size) return false;\n  for (const value of left) {\n    if (!right.has(value)) return false;\n  }\n  return true;\n}\n\nfunction getComparableKey(key: WorkbenchCollectionKey) {\n  return String(key);\n}\n\nfunction getDefaultBehavior(mode: WorkbenchCollectionSelectionMode) {\n  return mode === 'multiple' ? 'toggle' : 'replace';\n}\n\nexport function useWorkbenchCollectionSelection<Item>({\n  items,\n  getItemKey,\n  mode = 'none',\n  behavior,\n  selectedKeys: controlledSelectedKeys,\n  defaultSelectedKeys,\n  isItemDisabled,\n  onSelectionChange,\n}: UseWorkbenchCollectionSelectionOptions<Item>): WorkbenchCollectionSelectionController {\n  const controlled = controlledSelectedKeys !== undefined;\n  const [internalSelectedKeys, setInternalSelectedKeys] = useState<Set<WorkbenchCollectionKey>>(\n    () => new Set(defaultSelectedKeys ?? []),\n  );\n  const anchorKeyRef = useRef<WorkbenchCollectionKey | null>(null);\n  const onSelectionChangeRef = useRef(onSelectionChange);\n  onSelectionChangeRef.current = onSelectionChange;\n\n  const normalizedItems = useMemo<NormalizedSelectionItem<Item>[]>(() => {\n    const seenKeys = new Map<string, number>();\n    return items.map((item, index) => {\n      const key = getItemKey(item, index);\n      const comparableKey = getComparableKey(key);\n      const duplicateIndex = seenKeys.get(comparableKey);\n      if (duplicateIndex !== undefined) {\n        throw new TypeError(\n          `useWorkbenchCollectionSelection received duplicate item key \"${comparableKey}\" at indices ${duplicateIndex} and ${index}.`,\n        );\n      }\n      seenKeys.set(comparableKey, index);\n      return { item, index, key };\n    });\n  }, [getItemKey, items]);\n\n  const itemByKey = useMemo(() => {\n    const entries = new Map<WorkbenchCollectionKey, NormalizedSelectionItem<Item>>();\n    normalizedItems.forEach((entry) => entries.set(entry.key, entry));\n    return entries;\n  }, [normalizedItems]);\n\n  const selectedKeys = useMemo<ReadonlySet<WorkbenchCollectionKey>>(\n    () => mode === 'none'\n      ? new Set()\n      : controlled\n        ? new Set(controlledSelectedKeys ?? [])\n        : internalSelectedKeys,\n    [controlled, controlledSelectedKeys, internalSelectedKeys, mode],\n  );\n  const selectedKeysRef = useRef(selectedKeys);\n  selectedKeysRef.current = selectedKeys;\n\n  const resetAnchor = useCallback(() => {\n    anchorKeyRef.current = null;\n  }, []);\n\n  useEffect(() => {\n    if (controlled) return;\n    const availableKeys = new Set(normalizedItems.map(({ key }) => key));\n    setInternalSelectedKeys((previous) => {\n      const next = new Set(Array.from(previous).filter((key) => availableKeys.has(key)));\n      if (setsEqual(previous, next)) return previous;\n      selectedKeysRef.current = next;\n      return next;\n    });\n  }, [controlled, normalizedItems]);\n\n  useEffect(() => {\n    const anchorKey = anchorKeyRef.current;\n    if (mode !== 'multiple' || selectedKeys.size === 0 || anchorKey === null) {\n      resetAnchor();\n      return;\n    }\n    const anchor = itemByKey.get(anchorKey);\n    if (!anchor || isItemDisabled?.(anchor.item, anchor.index)) resetAnchor();\n  }, [isItemDisabled, itemByKey, mode, resetAnchor, selectedKeys.size]);\n\n  const selectKey = useCallback((\n    key: WorkbenchCollectionKey,\n    intent: WorkbenchCollectionSelectionIntent = {},\n  ) => {\n    if (mode === 'none') return;\n    const entry = itemByKey.get(key);\n    if (!entry || isItemDisabled?.(entry.item, entry.index)) return;\n\n    const current = new Set(selectedKeysRef.current);\n    const configuredBehavior = behavior ?? getDefaultBehavior(mode);\n    let effectiveBehavior = intent.shiftKey && mode === 'multiple'\n      ? 'range'\n      : intent.behavior ?? configuredBehavior;\n\n    if (mode === 'single') {\n      effectiveBehavior = effectiveBehavior === 'toggle' ? 'toggle' : 'replace';\n    }\n\n    const anchor = anchorKeyRef.current === null\n      ? undefined\n      : itemByKey.get(anchorKeyRef.current);\n    const hasValidAnchor = Boolean(\n      anchor && !isItemDisabled?.(anchor.item, anchor.index),\n    );\n    if (mode === 'multiple' && effectiveBehavior === 'range' && !hasValidAnchor) {\n      effectiveBehavior = configuredBehavior === 'range' ? 'toggle' : configuredBehavior;\n    }\n\n    const next = new Set<WorkbenchCollectionKey>();\n    if (mode === 'single') {\n      if (!(effectiveBehavior === 'toggle' && current.has(entry.key))) next.add(entry.key);\n    } else if (effectiveBehavior === 'range' && anchor) {\n      current.forEach((selectedKey) => next.add(selectedKey));\n      const start = Math.min(anchor.index, entry.index);\n      const end = Math.max(anchor.index, entry.index);\n      normalizedItems.slice(start, end + 1).forEach((candidate) => {\n        if (!isItemDisabled?.(candidate.item, candidate.index)) next.add(candidate.key);\n      });\n    } else if (effectiveBehavior === 'replace') {\n      next.add(entry.key);\n    } else {\n      current.forEach((selectedKey) => next.add(selectedKey));\n      if (next.has(entry.key)) next.delete(entry.key);\n      else next.add(entry.key);\n    }\n\n    anchorKeyRef.current = mode === 'multiple' ? entry.key : null;\n    if (!controlled) {\n      selectedKeysRef.current = next;\n      setInternalSelectedKeys(next);\n    }\n    onSelectionChangeRef.current?.(next, {\n      item: entry.item,\n      index: entry.index,\n      key: entry.key,\n      behavior: effectiveBehavior,\n    });\n  }, [behavior, controlled, isItemDisabled, itemByKey, mode, normalizedItems]);\n\n  const isSelected = useCallback(\n    (key: WorkbenchCollectionKey) => selectedKeys.has(key),\n    [selectedKeys],\n  );\n\n  return {\n    mode,\n    selectedKeys,\n    isSelected,\n    selectKey,\n    resetAnchor,\n  };\n}\n","import {\n  Fragment,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type CSSProperties,\n  type DragEvent,\n  type HTMLAttributes,\n  type KeyboardEvent,\n  type MouseEvent,\n  type ReactNode,\n} from 'react';\n\nimport { BaseButton } from '../base/BaseButton';\nimport { BaseEmptyState } from '../base/BaseEmptyState';\nimport { BaseLoadingState } from '../base/BaseLoadingState';\nimport { BaseSystemState } from '../base/BaseSystemState';\nimport { cn, hasRenderableNode } from '../base/utils';\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n  useMonkeysStatusStates,\n} from '../../provider';\nimport {\n  WorkbenchMasonryLayout,\n  type WorkbenchMasonryItemSize,\n  type WorkbenchMasonryLayoutContext,\n} from './WorkbenchMasonryLayout';\nimport {\n  resolveWorkbenchCollectionLoadingVariant,\n  resolveWorkbenchCollectionSkeletonCapacity,\n  WorkbenchCollectionSkeleton,\n  type WorkbenchCollectionLoadingVariant,\n  type WorkbenchCollectionSkeletonConfig,\n} from './WorkbenchCollectionSkeleton';\nimport {\n  useWorkbenchCollectionSelection,\n  type WorkbenchCollectionKey,\n  type WorkbenchCollectionSelectionBehavior,\n  type WorkbenchCollectionSelectionMode,\n} from './useWorkbenchCollectionSelection';\n\nexport type {\n  WorkbenchCollectionLoadingVariant,\n  WorkbenchCollectionSkeletonConfig,\n} from './WorkbenchCollectionSkeleton';\nexport type {\n  WorkbenchCollectionKey,\n  WorkbenchCollectionSelectionBehavior,\n  WorkbenchCollectionSelectionMode,\n} from './useWorkbenchCollectionSelection';\n\nexport type WorkbenchCollectionLayoutMode = 'grid' | 'masonry' | 'dense' | 'rail';\nexport type WorkbenchCollectionActivationEvent = MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>;\nexport type WorkbenchCollectionItemStatus = 'idle' | 'loading' | 'pending' | 'failed' | string;\nexport type WorkbenchCollectionItemSlotName =\n  | 'media'\n  | 'fallback'\n  | 'statusOverlay'\n  | 'top'\n  | 'selectionControl'\n  | 'header'\n  | 'title'\n  | 'body'\n  | 'meta'\n  | 'badges'\n  | 'actions'\n  | 'footer'\n  | 'detail'\n  | 'detailTrigger';\nexport type WorkbenchCollectionResponsive<Value> = Value | {\n  mobile?: Value;\n  tablet?: Value;\n  desktop?: Value;\n};\n\nexport type WorkbenchCollectionItemSize = WorkbenchMasonryItemSize;\n\nexport interface WorkbenchCollectionLayoutContext {\n  mode: WorkbenchCollectionLayoutMode;\n  columnCount: number;\n  columnSpan?: number;\n  columnWidth: number;\n  containerWidth: number;\n  gap: number;\n  itemWidth?: number;\n  placementStrategy: 'shelf' | 'shortest' | 'dense';\n  rowSpan?: number;\n  rowHeight: number;\n  size?: WorkbenchCollectionItemSize;\n}\n\nexport interface WorkbenchCollectionLayoutSnapshot {\n  mode: WorkbenchCollectionLayoutMode;\n  columnCount: number;\n  columnWidth: number;\n  containerWidth: number;\n  gap: number;\n  itemCount: number;\n}\n\nexport interface WorkbenchCollectionItemContext<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  status: WorkbenchCollectionItemStatus;\n  disabled: boolean;\n  selected: boolean;\n  selectionMode: WorkbenchCollectionSelectionMode;\n  layout: WorkbenchCollectionLayoutContext;\n  select: (behavior?: WorkbenchCollectionSelectionBehavior) => void;\n  selectFromEvent: (\n    event: Pick<WorkbenchCollectionActivationEvent, 'shiftKey'>,\n    behavior?: WorkbenchCollectionSelectionBehavior,\n  ) => void;\n  preview: () => void;\n  detail: () => void;\n  renderSlot: (name: WorkbenchCollectionItemSlotName) => ReactNode;\n  notifyMediaLoad: () => void;\n  notifyMediaError: (error?: unknown) => void;\n}\n\nexport interface WorkbenchCollectionStateConfig {\n  loading?: boolean;\n  loadingMore?: boolean;\n  error?: unknown;\n  empty?: boolean;\n  hasMore?: boolean;\n  permission?: boolean;\n  offline?: boolean;\n}\n\nexport interface WorkbenchCollectionSelectionConfig<Item> {\n  mode?: WorkbenchCollectionSelectionMode;\n  selectedKeys?: Iterable<WorkbenchCollectionKey>;\n  defaultSelectedKeys?: Iterable<WorkbenchCollectionKey>;\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  isItemDisabled?: (item: Item, index: number) => boolean;\n}\n\nexport interface WorkbenchCollectionGroupingConfig<Item> {\n  getGroupKey: (item: Item, index: number) => WorkbenchCollectionKey;\n  getGroupLabel?: (groupKey: WorkbenchCollectionKey, firstItem: Item) => ReactNode;\n}\n\nexport interface WorkbenchCollectionLoadingConfig {\n  rootMargin?: string;\n  threshold?: number;\n  /** Request another page while the configured scroll viewport is not filled. */\n  autoFill?: boolean;\n  /** Collection loading defaults to a layout-aware skeleton. */\n  variant?: WorkbenchCollectionLoadingVariant;\n  skeleton?: WorkbenchCollectionSkeletonConfig;\n}\n\nexport type WorkbenchCollectionHoverEffect =\n  | 'none'\n  | 'highlight'\n  | 'lift'\n  | 'scale'\n  | 'shadow'\n  | 'lift-shadow';\n\nexport type WorkbenchCollectionTitleVisibility = 'always' | 'hover' | 'never';\nexport type WorkbenchCollectionTitlePlacement =\n  | 'above'\n  | 'below'\n  | 'overlay-top'\n  | 'overlay-center'\n  | 'overlay-bottom';\nexport type WorkbenchCollectionActionsVisibility = 'always' | 'hover' | 'never';\nexport type WorkbenchCollectionActionsPlacement =\n  | 'above'\n  | 'below'\n  | 'overlay-top'\n  | 'overlay-bottom';\nexport type WorkbenchCollectionItemAlign = 'start' | 'center' | 'end';\n\nexport interface WorkbenchCollectionItemTitleConfig<Item> {\n  getContent?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode;\n  visibility?: WorkbenchCollectionTitleVisibility;\n  placement?: WorkbenchCollectionTitlePlacement;\n  align?: WorkbenchCollectionItemAlign;\n  maxLines?: number;\n  surface?: 'none' | 'surface' | 'scrim';\n}\n\nexport interface WorkbenchCollectionItemActionsConfig {\n  visibility?: WorkbenchCollectionActionsVisibility;\n  placement?: WorkbenchCollectionActionsPlacement;\n  align?: WorkbenchCollectionItemAlign;\n  wrap?: boolean;\n}\n\nexport interface WorkbenchCollectionItemConfig<Item> {\n  title?: WorkbenchCollectionItemTitleConfig<Item>;\n  actions?: WorkbenchCollectionItemActionsConfig;\n}\n\nexport interface WorkbenchCollectionAppearanceConfig {\n  density?: 'compact' | 'comfortable' | 'detailed' | string;\n  radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | string;\n  mediaFit?: 'cover' | 'contain' | 'natural';\n  hover?: WorkbenchCollectionHoverEffect;\n  selection?: 'none' | 'ring' | 'outline';\n}\n\nexport interface WorkbenchCollectionLabels {\n  collection: string;\n  loading: string;\n  empty: string;\n  loadError: string;\n  refreshError: string;\n  retry: string;\n  loadingMore: string;\n  permission: string;\n  offline: string;\n  requestAccess: string;\n}\n\nexport interface WorkbenchCollectionVirtualizationRenderOptions<Item> {\n  items: readonly Item[];\n  keys: readonly WorkbenchCollectionKey[];\n  layout: WorkbenchCollectionLayoutConfig<Item>;\n  scrollOwner: HTMLElement | null;\n  renderItem: (item: Item, index: number, layout: WorkbenchCollectionLayoutContext) => ReactNode;\n}\n\nexport interface WorkbenchCollectionVirtualizationAdapter<Item> {\n  supports?: (mode: WorkbenchCollectionLayoutMode) => boolean;\n  render: (options: WorkbenchCollectionVirtualizationRenderOptions<Item>) => ReactNode;\n}\n\nexport interface WorkbenchCollectionVirtualizationConfig<Item> {\n  enabled?: boolean;\n  adapter?: WorkbenchCollectionVirtualizationAdapter<Item>;\n  fallback?: 'render-all' | 'error';\n}\n\nexport interface WorkbenchCollectionLayoutConfig<Item> {\n  mode: WorkbenchCollectionLayoutMode;\n  columns?: WorkbenchCollectionResponsive<number> | 'auto';\n  /** Control whether an underfilled automatic grid stretches its items or preserves full-grid card widths. */\n  underfilledBehavior?: 'stretch-items' | 'preserve-columns';\n  maxColumns?: WorkbenchCollectionResponsive<number>;\n  minCardWidth?: number | string;\n  idealCardWidth?: number | string;\n  maxCardWidth?: number | string;\n  cardWidth?: number | string;\n  columnWidth?: number | string;\n  gap?: number;\n  rowHeight?: number;\n  placementStrategy?: 'shelf' | 'shortest' | 'dense';\n  padding?: number | string;\n  fillHeight?: boolean;\n  maxHeight?: number | string;\n  scrollOwner?: 'self' | 'parent' | HTMLElement | null;\n  getItemSize?: (\n    item: Item,\n    context: WorkbenchCollectionLayoutContext,\n  ) => WorkbenchCollectionItemSize | undefined;\n  getItemAspectRatio?: (item: Item, index: number) => number | undefined;\n}\n\nexport interface WorkbenchCollectionConfig<Item> {\n  getItemKey?: (item: Item, index: number) => WorkbenchCollectionKey;\n  getItemStatus?: (item: Item, index: number) => WorkbenchCollectionItemStatus;\n  layout: WorkbenchCollectionLayoutConfig<Item>;\n  state?: WorkbenchCollectionStateConfig;\n  selection?: WorkbenchCollectionSelectionConfig<Item>;\n  grouping?: WorkbenchCollectionGroupingConfig<Item>;\n  loading?: WorkbenchCollectionLoadingConfig;\n  virtualization?: WorkbenchCollectionVirtualizationConfig<Item>;\n  item?: WorkbenchCollectionItemConfig<Item>;\n  appearance?: WorkbenchCollectionAppearanceConfig;\n  labels?: Partial<WorkbenchCollectionLabels>;\n  scrollRestorationKey?: string;\n}\n\nexport interface WorkbenchCollectionSlotContext<Item> {\n  items: readonly Item[];\n  error?: unknown;\n  loading: boolean;\n  loadingMore: boolean;\n  selectedKeys: ReadonlySet<WorkbenchCollectionKey>;\n  retry: () => void;\n}\n\nexport interface WorkbenchCollectionGroupContext<Item> {\n  key: WorkbenchCollectionKey;\n  label?: ReactNode;\n  items: readonly Item[];\n  groupIndex: number;\n}\n\nexport type WorkbenchCollectionItemSlots<Item> = Partial<Record<\n  WorkbenchCollectionItemSlotName,\n  (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode\n>>;\n\nexport interface WorkbenchCollectionSlots<Item> {\n  header?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  toolbar?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  beforeItems?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  groupHeading?: (\n    group: WorkbenchCollectionGroupContext<Item>,\n    context: WorkbenchCollectionSlotContext<Item>,\n  ) => ReactNode;\n  selectionToolbar?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  loading?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  empty?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  error?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  permission?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  offline?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  loadMore?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  footer?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  item?: WorkbenchCollectionItemSlots<Item>;\n}\n\nexport interface WorkbenchCollectionCallbacks<Item> {\n  onItemClick?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: WorkbenchCollectionActivationEvent) => void;\n  onItemDoubleClick?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: MouseEvent<HTMLElement>) => void;\n  onItemHoverChange?: (\n    item: Item,\n    context: WorkbenchCollectionItemContext<Item>,\n    hovered: boolean,\n    event: MouseEvent<HTMLElement>,\n  ) => void;\n  onItemPreview?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onItemDetail?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onItemDragStart?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: DragEvent<HTMLElement>) => void;\n  onItemDrop?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: DragEvent<HTMLElement>) => void;\n  onSelectionChange?: (\n    selectedKeys: ReadonlySet<WorkbenchCollectionKey>,\n    details: { item: Item; key: WorkbenchCollectionKey; behavior: WorkbenchCollectionSelectionBehavior },\n  ) => void;\n  onLoadMore?: () => void | Promise<void>;\n  onRetry?: () => void;\n  onRequestAccess?: () => void;\n  onLayoutChange?: (snapshot: WorkbenchCollectionLayoutSnapshot) => void;\n  onLayoutReady?: (snapshot: WorkbenchCollectionLayoutSnapshot) => void;\n  onMediaLoad?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onMediaError?: (item: Item, context: WorkbenchCollectionItemContext<Item>, error?: unknown) => void;\n}\n\nexport interface WorkbenchCollectionClassNames {\n  root?: string;\n  header?: string;\n  toolbar?: string;\n  selectionToolbar?: string;\n  beforeItems?: string;\n  items?: string;\n  layout?: string;\n  group?: string;\n  groupHeading?: string;\n  item?: string;\n  itemContent?: string;\n  itemTitle?: string;\n  itemActions?: string;\n  status?: string;\n  loadMore?: string;\n  footer?: string;\n}\n\nexport interface WorkbenchCollectionProps<Item> {\n  items: readonly Item[];\n  config: WorkbenchCollectionConfig<Item>;\n  renderItem: (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode;\n  slots?: WorkbenchCollectionSlots<Item>;\n  callbacks?: WorkbenchCollectionCallbacks<Item>;\n  className?: string;\n  classNames?: WorkbenchCollectionClassNames;\n  style?: CSSProperties;\n  ariaLabel?: string;\n}\n\ninterface NormalizedCollectionItem<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  stringKey: string;\n}\n\ninterface NormalizedCollectionGroup<Item> {\n  key: WorkbenchCollectionKey;\n  stringKey: string;\n  label?: ReactNode;\n  items: NormalizedCollectionItem<Item>[];\n}\n\nconst DEFAULT_GAP_PX = 12;\nconst DEFAULT_ROW_HEIGHT_PX = 8;\nconst DEFAULT_CARD_WIDTH_PX = 280;\nconst BREAKPOINT_TABLET_PX = 640;\nconst BREAKPOINT_DESKTOP_PX = 1024;\nconst MAX_COLUMN_COUNT = 24;\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveRenderableSlot<Context>(\n  slot: ReactNode | ((context: Context) => ReactNode) | undefined,\n  context: Context,\n) {\n  return typeof slot === 'function' ? slot(context) : slot;\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  const normalized = value.trim().toLowerCase();\n  if (!normalized) return fallback;\n  if (/^\\d+(\\.\\d+)?(px)?$/.test(normalized)) {\n    const parsed = Number.parseFloat(normalized);\n    return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n  }\n  if (normalized.endsWith('rem')) {\n    const parsed = Number.parseFloat(normalized);\n    const rootFontSize = typeof window === 'undefined'\n      ? 16\n      : Number.parseFloat(window.getComputedStyle(node || document.documentElement).fontSize) || 16;\n    return Number.isFinite(parsed) && parsed > 0 ? parsed * rootFontSize : fallback;\n  }\n  return fallback;\n}\n\nfunction normalizeColumns(value: unknown) {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) return undefined;\n  return clamp(Math.round(value), 1, MAX_COLUMN_COUNT);\n}\n\nfunction resolveResponsiveColumns(\n  columns: WorkbenchCollectionResponsive<number> | 'auto' | undefined,\n  containerWidth: number,\n) {\n  if (columns === 'auto' || columns === undefined) return undefined;\n  if (typeof columns === 'number') return normalizeColumns(columns);\n  const mobile = normalizeColumns(columns.mobile);\n  const tablet = normalizeColumns(columns.tablet);\n  const desktop = normalizeColumns(columns.desktop);\n  if (containerWidth >= BREAKPOINT_DESKTOP_PX) return desktop ?? tablet ?? mobile;\n  if (containerWidth >= BREAKPOINT_TABLET_PX) return tablet ?? mobile ?? desktop;\n  return mobile ?? tablet ?? desktop;\n}\n\nfunction resolveColumnCount({\n  containerWidth,\n  itemCount,\n  gap,\n  columns,\n  underfilledBehavior,\n  maxColumns,\n  minCardWidth,\n  idealCardWidth,\n  maxCardWidth,\n  node,\n}: {\n  containerWidth: number;\n  itemCount: number;\n  gap: number;\n  columns: WorkbenchCollectionResponsive<number> | 'auto' | undefined;\n  underfilledBehavior?: 'stretch-items' | 'preserve-columns';\n  maxColumns?: WorkbenchCollectionResponsive<number>;\n  minCardWidth?: number | string;\n  idealCardWidth?: number | string;\n  maxCardWidth?: number | string;\n  node: Element | null;\n}) {\n  const fixedColumns = resolveResponsiveColumns(columns, containerWidth);\n  const resolvedMaxColumns = resolveResponsiveColumns(maxColumns, containerWidth);\n  if (fixedColumns) return resolvedMaxColumns ? Math.min(fixedColumns, resolvedMaxColumns) : fixedColumns;\n  if (!containerWidth) return 1;\n\n  const idealWidth = resolveLengthToPixels(idealCardWidth, DEFAULT_CARD_WIDTH_PX, node);\n  const minWidth = resolveLengthToPixels(minCardWidth, idealWidth * 0.78, node);\n  const maxWidth = Math.max(\n    minWidth,\n    resolveLengthToPixels(maxCardWidth, idealWidth * 1.35, node),\n  );\n  const safeItemCount = Math.max(itemCount, 1);\n  const maxCandidate = Math.max(\n    1,\n    Math.min(\n      underfilledBehavior === 'preserve-columns' ? MAX_COLUMN_COUNT : safeItemCount,\n      Math.ceil((containerWidth + gap) / (Math.max(minWidth * 0.75, 1) + gap)),\n    ),\n  );\n\n  let bestCount = 1;\n  let bestScore = Number.POSITIVE_INFINITY;\n  for (let candidate = 1; candidate <= maxCandidate; candidate += 1) {\n    const width = (containerWidth - gap * Math.max(candidate - 1, 0)) / candidate;\n    if (!Number.isFinite(width) || width <= 0) continue;\n    const score = Math.abs(width - idealWidth)\n      + Math.max(0, minWidth - width) * 3\n      + Math.max(0, width - maxWidth) * 2;\n    if (score < bestScore) {\n      bestScore = score;\n      bestCount = candidate;\n    }\n  }\n  return resolvedMaxColumns ? Math.min(bestCount, resolvedMaxColumns) : bestCount;\n}\n\nfunction normalizeGap(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value) && value >= 0\n    ? value\n    : DEFAULT_GAP_PX;\n}\n\nfunction normalizeRowHeight(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value) && value > 0\n    ? value\n    : DEFAULT_ROW_HEIGHT_PX;\n}\n\nfunction normalizeThreshold(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value)\n    ? clamp(value, 0, 1)\n    : 0;\n}\n\nfunction normalizeItemSize(\n  size: WorkbenchCollectionItemSize | undefined,\n  aspectRatio: number | undefined,\n  columnWidth: number,\n) {\n  const normalizedAspectRatio = Number.isFinite(aspectRatio) && Number(aspectRatio) > 0\n    ? Number(aspectRatio)\n    : undefined;\n  const normalizedHeight = size?.height ?? (\n    normalizedAspectRatio ? Math.max(1, columnWidth / normalizedAspectRatio) : undefined\n  );\n  return {\n    ...size,\n    height: normalizedHeight,\n  };\n}\n\nfunction getDefaultItemKey<Item>(item: Item, index: number): WorkbenchCollectionKey {\n  if (item && typeof item === 'object') {\n    const candidate = item as Record<string, unknown>;\n    if (typeof candidate.id === 'string' || typeof candidate.id === 'number') return candidate.id;\n    if (typeof candidate.key === 'string' || typeof candidate.key === 'number') return candidate.key;\n  }\n  return index;\n}\n\nfunction getScrollStorageKey(key: string) {\n  return `@inf-monkeys-tech/monkeys-design:workbench-collection:${key}`;\n}\n\nfunction getParentScrollOwner(node: HTMLElement | null) {\n  let current = node?.parentElement ?? null;\n  while (current) {\n    if (typeof window === 'undefined') return current;\n    const overflowY = window.getComputedStyle(current).overflowY;\n    if (overflowY === 'auto' || overflowY === 'scroll') return current;\n    current = current.parentElement;\n  }\n  return null;\n}\n\nfunction isInteractiveEventTarget(target: EventTarget | null, currentTarget: HTMLElement) {\n  if (typeof Element === 'undefined' || !(target instanceof Element) || target === currentTarget) return false;\n  const control = target.closest(\n    'a, button, input, select, textarea, summary, [contenteditable=\"true\"], [data-collection-action]',\n  );\n  return Boolean(control && currentTarget.contains(control));\n}\n\nfunction normalizeTitleMaxLines(value: number | undefined) {\n  if (!Number.isFinite(value) || Number(value) <= 0) return undefined;\n  return clamp(Math.round(Number(value)), 1, 12);\n}\n\nexport function WorkbenchCollection<Item>({\n  items,\n  config,\n  renderItem,\n  slots,\n  callbacks,\n  className,\n  classNames,\n  style,\n  ariaLabel,\n}: WorkbenchCollectionProps<Item>) {\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeMessages = useMonkeysLocaleMessages().workbench.collection;\n  const statusStates = useMonkeysStatusStates();\n  const componentId = useId().replace(/:/g, '');\n  const rootRef = useRef<HTMLElement | null>(null);\n  const itemsRef = useRef<HTMLDivElement | null>(null);\n  const loadMoreRef = useRef<HTMLDivElement | null>(null);\n  const loadMoreRequestPendingRef = useRef(false);\n  const loadMoreIntersectionActiveRef = useRef(false);\n  const loadMoreIntersectionConsumedRef = useRef(false);\n  const loadMoreScrollValidationPendingRef = useRef(false);\n  const observedLoadMoreTargetRef = useRef<HTMLDivElement | null>(null);\n  const layoutReadyRef = useRef(false);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [itemsNode, setItemsNode] = useState<HTMLDivElement | null>(null);\n  const callbacksRef = useRef(callbacks);\n  callbacksRef.current = callbacks;\n  const registerItemsNode = useCallback((node: HTMLDivElement | null) => {\n    itemsRef.current = node;\n    setItemsNode(node);\n  }, []);\n\n  const mode = config.layout.mode;\n  if (mode !== 'grid' && mode !== 'masonry' && mode !== 'dense' && mode !== 'rail') {\n    throw new TypeError(`WorkbenchCollection layout.mode \"${String(mode)}\" is not supported.`);\n  }\n  const gap = normalizeGap(config.layout.gap);\n  const rowHeight = normalizeRowHeight(config.layout.rowHeight);\n  const getItemKey = config.getItemKey ?? getDefaultItemKey;\n  const normalizedItems = useMemo<NormalizedCollectionItem<Item>[]>(() => (\n    items.map((item, index) => {\n      const key = getItemKey(item, index);\n      return { item, index, key, stringKey: String(key) };\n    })\n  ), [getItemKey, items]);\n  const keysSignature = normalizedItems.map(({ stringKey }) => stringKey).join('\\u0001');\n  const state = config.state;\n  const loading = state?.loading === true;\n  const loadingMore = state?.loadingMore === true;\n  const hasMore = state?.hasMore === true;\n  const loadingVariant = resolveWorkbenchCollectionLoadingVariant(config.loading?.variant);\n  const layoutItemCount = loading && normalizedItems.length === 0 && loadingVariant === 'skeleton'\n    ? resolveWorkbenchCollectionSkeletonCapacity(config.loading?.skeleton)\n    : normalizedItems.length;\n\n  const selectionMode = config.selection?.mode ?? 'none';\n  const isSelectionItemDisabled = useCallback(\n    (entry: NormalizedCollectionItem<Item>) => (\n      config.selection?.isItemDisabled?.(entry.item, entry.index) ?? false\n    ),\n    [config.selection?.isItemDisabled],\n  );\n  const getSelectionItemKey = useCallback(\n    (entry: NormalizedCollectionItem<Item>) => entry.key,\n    [],\n  );\n  const handleSelectionChange = useCallback((\n    next: ReadonlySet<WorkbenchCollectionKey>,\n    details: {\n      item: NormalizedCollectionItem<Item>;\n      key: WorkbenchCollectionKey;\n      behavior: WorkbenchCollectionSelectionBehavior;\n    },\n  ) => {\n    callbacksRef.current?.onSelectionChange?.(next, {\n      item: details.item.item,\n      key: details.key,\n      behavior: details.behavior,\n    });\n  }, []);\n  const { selectedKeys, selectKey } = useWorkbenchCollectionSelection({\n    items: normalizedItems,\n    getItemKey: getSelectionItemKey,\n    mode: selectionMode,\n    behavior: config.selection?.behavior,\n    selectedKeys: config.selection?.selectedKeys,\n    defaultSelectedKeys: config.selection?.defaultSelectedKeys,\n    isItemDisabled: isSelectionItemDisabled,\n    onSelectionChange: handleSelectionChange,\n  });\n\n  useEffect(() => {\n    const node = itemsNode;\n    if (!node) return undefined;\n    const updateWidth = () => {\n      const nextWidth = Math.round(node.getBoundingClientRect().width);\n      setContainerWidth((previous) => previous === nextWidth ? previous : nextWidth);\n    };\n    updateWidth();\n    if (typeof ResizeObserver === 'function') {\n      const observer = new ResizeObserver(updateWidth);\n      observer.observe(node);\n      return () => observer.disconnect();\n    }\n    if (typeof window === 'undefined') return undefined;\n    window.addEventListener('resize', updateWidth);\n    return () => window.removeEventListener('resize', updateWidth);\n  }, [itemsNode]);\n\n  const columnCount = resolveColumnCount({\n    containerWidth,\n    itemCount: layoutItemCount,\n    gap,\n    columns: config.layout.columns,\n    underfilledBehavior: config.layout.underfilledBehavior,\n    maxColumns: config.layout.maxColumns,\n    minCardWidth: config.layout.minCardWidth,\n    idealCardWidth: config.layout.idealCardWidth ?? config.layout.columnWidth,\n    maxCardWidth: config.layout.maxCardWidth,\n    node: itemsRef.current,\n  });\n  const columnWidth = containerWidth > 0\n    ? Math.max(0, (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount)\n    : resolveLengthToPixels(\n        config.layout.cardWidth ?? config.layout.columnWidth ?? config.layout.idealCardWidth,\n        DEFAULT_CARD_WIDTH_PX,\n        itemsRef.current,\n      );\n  const placementStrategy = config.layout.placementStrategy ?? (\n    mode === 'dense' ? 'dense' : mode === 'masonry' ? 'shortest' : 'shelf'\n  );\n  const labels = useMemo<WorkbenchCollectionLabels>(() => ({\n    collection: config.labels?.collection ?? localeMessages.label,\n    loading: config.labels?.loading ?? localeMessages.loading,\n    empty: config.labels?.empty ?? localeMessages.empty,\n    loadError: config.labels?.loadError ?? localeMessages.loadError,\n    refreshError: config.labels?.refreshError ?? localeMessages.refreshError,\n    retry: config.labels?.retry ?? localeMessages.retry,\n    loadingMore: config.labels?.loadingMore ?? localeMessages.loadingMore,\n    permission: config.labels?.permission ?? localeMessages.permission,\n    offline: config.labels?.offline ?? localeMessages.offline,\n    requestAccess: config.labels?.requestAccess ?? localeMessages.requestAccess,\n  }), [config.labels, localeMessages]);\n\n  const virtualizationError = useMemo(() => {\n    const virtualization = config.virtualization;\n    if (virtualization?.enabled !== true || virtualization.fallback !== 'error') return null;\n    if (!virtualization.adapter) {\n      return new Error('WorkbenchCollection virtualization requires an adapter.');\n    }\n    if (virtualization.adapter.supports?.(mode) === false) {\n      return new Error(`WorkbenchCollection virtualization adapter does not support mode \"${mode}\".`);\n    }\n    return null;\n  }, [config.virtualization, mode]);\n\n  const layoutSnapshot = useMemo<WorkbenchCollectionLayoutSnapshot>(() => ({\n    mode,\n    columnCount,\n    columnWidth,\n    containerWidth,\n    gap,\n    itemCount: normalizedItems.length,\n  }), [columnCount, columnWidth, containerWidth, gap, mode, normalizedItems.length]);\n\n  useEffect(() => {\n    callbacksRef.current?.onLayoutChange?.(layoutSnapshot);\n    if (containerWidth > 0 && !layoutReadyRef.current) {\n      layoutReadyRef.current = true;\n      callbacksRef.current?.onLayoutReady?.(layoutSnapshot);\n    }\n  }, [layoutSnapshot, containerWidth]);\n\n  useEffect(() => {\n    layoutReadyRef.current = false;\n  }, [mode]);\n\n  const resolveScrollOwner = useCallback(() => {\n    const requestedOwner = config.layout.scrollOwner;\n    if (requestedOwner && requestedOwner !== 'self' && requestedOwner !== 'parent') return requestedOwner;\n    if (requestedOwner === 'parent') return getParentScrollOwner(rootRef.current);\n    return rootRef.current;\n  }, [config.layout.scrollOwner]);\n\n  useEffect(() => {\n    const restorationKey = config.scrollRestorationKey?.trim();\n    if (!restorationKey || typeof window === 'undefined') return undefined;\n    const owner = resolveScrollOwner();\n    if (!owner) return undefined;\n    const storageKey = getScrollStorageKey(restorationKey);\n    try {\n      const stored = Number.parseFloat(window.sessionStorage.getItem(storageKey) ?? '');\n      if (Number.isFinite(stored) && stored >= 0) owner.scrollTop = stored;\n    } catch {\n      // Storage can be unavailable in sandboxed or privacy-restricted contexts.\n    }\n    const saveScrollPosition = () => {\n      try {\n        window.sessionStorage.setItem(storageKey, String(owner.scrollTop));\n      } catch {\n        // Scroll restoration is optional and must never break collection rendering.\n      }\n    };\n    owner.addEventListener('scroll', saveScrollPosition, { passive: true });\n    return () => {\n      saveScrollPosition();\n      owner.removeEventListener('scroll', saveScrollPosition);\n    };\n  }, [config.scrollRestorationKey, resolveScrollOwner]);\n\n  const canLoadMore = typeof callbacks?.onLoadMore === 'function';\n  const effectiveError = state?.error ?? virtualizationError;\n\n  useEffect(() => {\n    if (!canLoadMore || !hasMore) {\n      loadMoreIntersectionActiveRef.current = false;\n      loadMoreIntersectionConsumedRef.current = false;\n      loadMoreScrollValidationPendingRef.current = false;\n    }\n  }, [canLoadMore, hasMore]);\n\n  const requestLoadMore = useCallback(() => {\n    if (!canLoadMore || !hasMore || loadingMore || loadMoreRequestPendingRef.current) return;\n    loadMoreRequestPendingRef.current = true;\n    const releaseRequest = () => {\n      loadMoreRequestPendingRef.current = false;\n    };\n    try {\n      const result = callbacksRef.current?.onLoadMore?.();\n      if (result && typeof result.then === 'function') {\n        void result.then(releaseRequest, releaseRequest);\n      } else {\n        releaseRequest();\n      }\n    } catch (error) {\n      releaseRequest();\n      throw error;\n    }\n  }, [canLoadMore, hasMore, loadingMore]);\n\n  useEffect(() => {\n    const sentinel = loadMoreRef.current;\n    if (observedLoadMoreTargetRef.current !== sentinel) {\n      observedLoadMoreTargetRef.current = sentinel;\n      loadMoreIntersectionActiveRef.current = false;\n      loadMoreIntersectionConsumedRef.current = false;\n      loadMoreScrollValidationPendingRef.current = false;\n    }\n    if (!sentinel || !canLoadMore || !hasMore) return undefined;\n    if (typeof IntersectionObserver !== 'function') return undefined;\n    const owner = resolveScrollOwner();\n    let observerHasDelivered = false;\n    const observer = new IntersectionObserver((entries) => {\n      const isIntersecting = entries.some((entry) => entry.isIntersecting);\n      if (loadMoreScrollValidationPendingRef.current) {\n        observerHasDelivered = true;\n        loadMoreScrollValidationPendingRef.current = false;\n        loadMoreIntersectionActiveRef.current = isIntersecting;\n        if (!isIntersecting) {\n          loadMoreIntersectionConsumedRef.current = false;\n          return;\n        }\n        if (loadMoreIntersectionConsumedRef.current) return;\n        loadMoreIntersectionConsumedRef.current = true;\n        requestLoadMore();\n        return;\n      }\n      if (!observerHasDelivered) {\n        observerHasDelivered = true;\n        loadMoreIntersectionActiveRef.current = isIntersecting;\n        if (!isIntersecting) loadMoreIntersectionConsumedRef.current = false;\n        return;\n      }\n      if (!isIntersecting) {\n        loadMoreIntersectionActiveRef.current = false;\n        loadMoreIntersectionConsumedRef.current = false;\n        return;\n      }\n      if (loadMoreIntersectionActiveRef.current) return;\n      loadMoreIntersectionActiveRef.current = true;\n      loadMoreIntersectionConsumedRef.current = true;\n      requestLoadMore();\n    }, {\n      root: owner === rootRef.current ? owner : owner || null,\n      rootMargin: config.loading?.rootMargin ?? '240px',\n      threshold: normalizeThreshold(config.loading?.threshold),\n    });\n    const scrollTarget = owner ?? (typeof window === 'undefined' ? null : window);\n    const validateActiveIntersection = () => {\n      if (\n        !loadMoreIntersectionActiveRef.current\n        || loadMoreIntersectionConsumedRef.current\n        || loadMoreScrollValidationPendingRef.current\n      ) return;\n      loadMoreScrollValidationPendingRef.current = true;\n      observer.unobserve(sentinel);\n      observer.takeRecords();\n      observer.observe(sentinel);\n    };\n    observer.observe(sentinel);\n    scrollTarget?.addEventListener('scroll', validateActiveIntersection, { passive: true });\n    return () => {\n      observer.disconnect();\n      scrollTarget?.removeEventListener('scroll', validateActiveIntersection);\n    };\n  }, [canLoadMore, config.loading?.rootMargin, config.loading?.threshold, hasMore, keysSignature, loadingMore, normalizedItems.length, requestLoadMore, resolveScrollOwner]);\n\n  useEffect(() => {\n    if (!config.loading?.autoFill || !canLoadMore || !hasMore || loadingMore) return;\n    const sentinel = loadMoreRef.current;\n    if (!sentinel) return;\n    const owner = resolveScrollOwner()\n      ?? (config.layout.scrollOwner === 'parent' ? rootRef.current?.parentElement ?? null : null)\n      ?? rootRef.current;\n    if (!owner || owner.clientHeight <= 0) return;\n    if (owner.scrollHeight <= owner.clientHeight + 1) {\n      loadMoreIntersectionConsumedRef.current = true;\n      requestLoadMore();\n    }\n  }, [\n    canLoadMore,\n    config.layout.scrollOwner,\n    config.loading?.autoFill,\n    hasMore,\n    keysSignature,\n    loadingMore,\n    normalizedItems.length,\n    requestLoadMore,\n    resolveScrollOwner,\n  ]);\n\n  const groups = useMemo<NormalizedCollectionGroup<Item>[]>(() => {\n    if (!config.grouping) {\n      return [{ key: '__all__', stringKey: '__all__', items: normalizedItems }];\n    }\n    const grouped = new Map<string, NormalizedCollectionGroup<Item>>();\n    normalizedItems.forEach((entry) => {\n      const groupKey = config.grouping?.getGroupKey(entry.item, entry.index) ?? '__all__';\n      const stringKey = String(groupKey);\n      const existing = grouped.get(stringKey);\n      if (existing) {\n        existing.items.push(entry);\n        return;\n      }\n      grouped.set(stringKey, {\n        key: groupKey,\n        stringKey,\n        label: config.grouping?.getGroupLabel?.(groupKey, entry.item),\n        items: [entry],\n      });\n    });\n    return Array.from(grouped.values());\n  }, [config.grouping, normalizedItems]);\n\n  const createItemContext = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    layout: WorkbenchCollectionLayoutContext,\n  ): WorkbenchCollectionItemContext<Item> => {\n    const disabled = config.selection?.isItemDisabled?.(entry.item, entry.index) ?? false;\n    const context: WorkbenchCollectionItemContext<Item> = {\n      item: entry.item,\n      index: entry.index,\n      key: entry.key,\n      status: config.getItemStatus?.(entry.item, entry.index) ?? 'idle',\n      disabled,\n      selected: selectedKeys.has(entry.key),\n      selectionMode,\n      layout,\n      select: (behavior) => selectKey(entry.key, { behavior }),\n      selectFromEvent: (event, behavior) => selectKey(entry.key, {\n        behavior,\n        shiftKey: event.shiftKey,\n      }),\n      preview: () => callbacks?.onItemPreview?.(entry.item, context),\n      detail: () => callbacks?.onItemDetail?.(entry.item, context),\n      renderSlot: (name) => {\n        return slots?.item?.[name]?.(entry.item, context);\n      },\n      notifyMediaLoad: () => callbacks?.onMediaLoad?.(entry.item, context),\n      notifyMediaError: (error) => callbacks?.onMediaError?.(entry.item, context, error),\n    };\n    return context;\n  }, [callbacks, config.getItemStatus, config.selection, selectedKeys, selectKey, selectionMode, slots?.item]);\n\n  const getItemInteractionProps = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    context: WorkbenchCollectionItemContext<Item>,\n  ): HTMLAttributes<HTMLDivElement> & Record<`data-${string}`, string | boolean | undefined> => {\n    const handleKeyboard = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) return;\n      event.preventDefault();\n      if (selectionMode !== 'none') context.selectFromEvent(event);\n      else callbacks?.onItemClick?.(entry.item, context, event);\n    };\n    return {\n      id: `${componentId}-item-${entry.index}`,\n      'data-monkeys-collection-item': '',\n      'data-item-key': entry.stringKey,\n      'data-selected': context.selected || undefined,\n      'data-disabled': context.disabled || undefined,\n      'data-status': context.status,\n      role: selectionMode === 'none' ? 'listitem' : 'option',\n      'aria-selected': selectionMode === 'none' ? undefined : context.selected,\n      'aria-disabled': context.disabled || undefined,\n      tabIndex:\n        callbacks?.onItemClick || selectionMode !== 'none' || config.item?.title?.visibility === 'hover' ? 0 : undefined,\n      draggable: callbacks?.onItemDragStart ? true : undefined,\n      className: cn(\n        'min-w-0 group/workbench-collection-item outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n        config.appearance?.hover && config.appearance.hover !== 'none'\n          && 'transition-[transform,box-shadow,background-color] duration-200',\n        config.appearance?.hover === 'highlight' && 'hover:bg-muted/30',\n        config.appearance?.hover === 'lift' && 'hover:-translate-y-0.5 motion-reduce:transform-none',\n        config.appearance?.hover === 'scale' && 'hover:scale-[1.01] motion-reduce:transform-none',\n        config.appearance?.hover === 'shadow' && 'hover:shadow-md',\n        config.appearance?.hover === 'lift-shadow'\n          && 'hover:-translate-y-0.5 hover:shadow-md motion-reduce:transform-none',\n        config.appearance?.selection === 'ring' && context.selected && 'ring-2 ring-primary',\n        config.appearance?.selection === 'outline' && context.selected && 'outline outline-2 outline-primary',\n        classNames?.item,\n      ),\n      onClick: (event) => {\n        if (isInteractiveEventTarget(event.target, event.currentTarget)) return;\n        if (selectionMode !== 'none') context.selectFromEvent(event);\n        callbacks?.onItemClick?.(entry.item, context, event);\n      },\n      onDoubleClick: (event) => {\n        if (isInteractiveEventTarget(event.target, event.currentTarget)) return;\n        callbacks?.onItemDoubleClick?.(entry.item, context, event);\n      },\n      onMouseEnter: (event) => callbacks?.onItemHoverChange?.(entry.item, context, true, event),\n      onMouseLeave: (event) => callbacks?.onItemHoverChange?.(entry.item, context, false, event),\n      onKeyDown: handleKeyboard,\n      onDragStart: (event) => callbacks?.onItemDragStart?.(entry.item, context, event),\n      onDragOver: callbacks?.onItemDrop ? (event) => event.preventDefault() : undefined,\n      onDrop: (event) => callbacks?.onItemDrop?.(entry.item, context, event),\n    };\n  }, [callbacks, classNames?.item, componentId, config.appearance, config.item?.title?.visibility, selectionMode]);\n\n  const renderItemContent = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    context: WorkbenchCollectionItemContext<Item>,\n  ) => {\n    const content = renderItem(entry.item, context);\n    const titleConfig = config.item?.title;\n    const visibility = titleConfig?.visibility ?? 'always';\n    const title = titleConfig && visibility !== 'never'\n      ? titleConfig.getContent?.(entry.item, context) ?? context.renderSlot('title')\n      : null;\n    const hasTitle = Boolean(titleConfig && hasRenderableNode(title));\n    const placement = titleConfig?.placement ?? 'below';\n    const titleOverlay = hasTitle && placement.startsWith('overlay-');\n    const maxLines = normalizeTitleMaxLines(titleConfig?.maxLines);\n    const surface = titleConfig?.surface ?? (titleOverlay ? 'scrim' : 'none');\n    const titleNode = hasTitle ? (\n      <div\n        data-collection-item-title=\"\"\n        data-title-placement={placement}\n        data-title-visibility={visibility}\n        className={cn(\n          'min-w-0 px-1 py-2 text-sm font-medium text-foreground',\n          titleConfig?.align === 'center' && 'text-center',\n          titleConfig?.align === 'end' && 'text-right',\n          visibility === 'hover'\n            && '!opacity-0 transition-opacity group-hover/workbench-collection-item:!opacity-100 group-focus-within/workbench-collection-item:!opacity-100',\n          titleOverlay && 'pointer-events-none absolute inset-x-0 z-10 px-3 py-2',\n          placement === 'overlay-top' && 'top-0',\n          placement === 'overlay-center' && 'top-1/2 -translate-y-1/2 motion-reduce:transform-none',\n          placement === 'overlay-bottom' && 'bottom-0',\n          surface === 'surface' && 'bg-background/90 backdrop-blur-sm',\n          surface === 'scrim' && placement === 'overlay-top'\n            && 'bg-gradient-to-b from-background/90 to-transparent pb-8',\n          surface === 'scrim' && placement === 'overlay-bottom'\n            && 'bg-gradient-to-t from-background/90 to-transparent pt-8',\n          surface === 'scrim' && placement === 'overlay-center'\n            && 'bg-background/75 backdrop-blur-sm',\n          Boolean(maxLines) && 'overflow-hidden [display:-webkit-box] [-webkit-box-orient:vertical]',\n          classNames?.itemTitle,\n        )}\n        style={maxLines ? { WebkitLineClamp: maxLines } : undefined}\n      >\n        {title}\n      </div>\n    ) : null;\n\n    const actionsConfig = config.item?.actions;\n    const actionsVisibility = actionsConfig?.visibility ?? 'always';\n    const actions = actionsConfig && actionsVisibility !== 'never' ? context.renderSlot('actions') : null;\n    const hasActions = Boolean(actionsConfig && hasRenderableNode(actions));\n    const actionsPlacement = actionsConfig?.placement ?? 'overlay-bottom';\n    const actionsOverlay = hasActions && actionsPlacement.startsWith('overlay-');\n    const actionsNode = hasActions ? (\n      <div\n        data-collection-item-actions=\"\"\n        data-actions-placement={actionsPlacement}\n        data-actions-align={actionsConfig?.align ?? 'center'}\n        data-actions-visibility={actionsVisibility}\n        className={cn(\n          'flex min-w-0 items-center gap-2 px-2 py-2',\n          actionsConfig?.align === 'start' && 'justify-start',\n          (actionsConfig?.align === undefined || actionsConfig.align === 'center') && 'justify-center',\n          actionsConfig?.align === 'end' && 'justify-end',\n          actionsConfig?.wrap !== false && 'flex-wrap',\n          actionsVisibility === 'hover'\n            && '!opacity-0 transition-opacity group-hover/workbench-collection-item:!opacity-100 group-focus-within/workbench-collection-item:!opacity-100 [@media(hover:none)]:!opacity-100',\n          actionsOverlay && 'pointer-events-none absolute inset-x-0 z-20',\n          actionsPlacement === 'overlay-top' && 'top-1',\n          actionsPlacement === 'overlay-bottom' && 'bottom-1',\n          classNames?.itemActions,\n        )}\n      >\n        <div className={cn('pointer-events-auto flex items-center gap-2', actionsConfig?.wrap !== false && 'flex-wrap')}>\n          {actions}\n        </div>\n      </div>\n    ) : null;\n\n    if (!hasTitle && !hasActions) return content;\n\n    return (\n      <div\n        className={cn('min-w-0', (titleOverlay || actionsOverlay) && 'relative', classNames?.itemContent)}\n        data-collection-item-content=\"\"\n      >\n        {placement === 'above' ? titleNode : null}\n        {actionsPlacement === 'above' ? actionsNode : null}\n        {content}\n        {placement === 'below' || titleOverlay ? titleNode : null}\n        {actionsPlacement === 'below' || actionsOverlay ? actionsNode : null}\n      </div>\n    );\n  }, [classNames?.itemActions, classNames?.itemContent, classNames?.itemTitle, config.item, renderItem]);\n\n  const renderEntry = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    layout: WorkbenchCollectionLayoutContext,\n    includeShell = true,\n  ) => {\n    const context = createItemContext(entry, layout);\n    const content = renderItemContent(entry, context);\n    if (!includeShell) return content;\n    return (\n      <div {...getItemInteractionProps(entry, context)}>\n        {content}\n      </div>\n    );\n  }, [createItemContext, getItemInteractionProps, renderItemContent]);\n\n  const baseLayoutContext = useMemo<WorkbenchCollectionLayoutContext>(() => ({\n    mode,\n    columnCount,\n    columnWidth,\n    containerWidth,\n    gap,\n    placementStrategy,\n    rowHeight,\n  }), [columnCount, columnWidth, containerWidth, gap, mode, placementStrategy, rowHeight]);\n\n  const renderGroupItems = (group: NormalizedCollectionGroup<Item>) => {\n    const virtualization = config.virtualization;\n    const adapter = virtualization?.adapter;\n    const virtualizationRequested = virtualization?.enabled === true;\n    if (virtualizationRequested && (!adapter || adapter.supports?.(mode) === false)) {\n      if (virtualization?.fallback === 'error') {\n        return null;\n      }\n    }\n    if (virtualizationRequested && adapter && adapter.supports?.(mode) !== false) {\n      return adapter.render({\n        items: group.items.map(({ item }) => item),\n        keys: group.items.map(({ key }) => key),\n        layout: config.layout,\n        scrollOwner: resolveScrollOwner(),\n        renderItem: (item, localIndex, layout) => {\n          const entry = group.items[localIndex];\n          return entry\n            ? <Fragment key={entry.stringKey}>{renderEntry(entry, layout)}</Fragment>\n            : null;\n        },\n      });\n    }\n\n    if (mode === 'masonry' || mode === 'dense') {\n      return (\n        <WorkbenchMasonryLayout\n          items={group.items}\n          columnCount={columnCount}\n          columnWidth={config.layout.cardWidth ?? config.layout.columnWidth ?? config.layout.idealCardWidth}\n          gap={gap}\n          rowHeight={rowHeight}\n          placementStrategy={mode === 'dense' ? 'dense' : placementStrategy}\n          className={classNames?.layout}\n          containerProps={{\n            role: selectionMode === 'none' ? 'list' : 'listbox',\n            'aria-label': ariaLabel ?? labels.collection,\n            'aria-multiselectable': selectionMode === 'multiple' || undefined,\n          }}\n          getItemProps={(entry, masonryLayout) => {\n            const context = createItemContext(entry, { ...masonryLayout, mode });\n            return getItemInteractionProps(entry, context);\n          }}\n          getItemKey={(entry) => entry.key}\n          getItemSize={(entry, masonryLayout) => {\n            const layout: WorkbenchCollectionLayoutContext = {\n              ...masonryLayout,\n              mode,\n            };\n            const customSize = config.layout.getItemSize?.(entry.item, layout);\n            const aspectRatio = config.layout.getItemAspectRatio?.(entry.item, entry.index);\n            return normalizeItemSize(customSize, aspectRatio, masonryLayout.columnWidth);\n          }}\n          renderItem={(entry, masonryLayout: WorkbenchMasonryLayoutContext) => renderEntry(entry, {\n            ...masonryLayout,\n            mode,\n          }, false)}\n        />\n      );\n    }\n\n    if (mode === 'rail') {\n      const cardWidth = config.layout.cardWidth ?? config.layout.idealCardWidth ?? DEFAULT_CARD_WIDTH_PX;\n      return (\n        <div\n          role={selectionMode === 'none' ? 'list' : 'listbox'}\n          aria-label={ariaLabel ?? labels.collection}\n          aria-multiselectable={selectionMode === 'multiple' || undefined}\n          className={cn('grid min-w-0 grid-flow-col items-start overflow-x-auto', classNames?.layout)}\n          style={{ gap, gridAutoColumns: typeof cardWidth === 'number' ? `${cardWidth}px` : cardWidth }}\n        >\n          {group.items.map((entry) => (\n            <Fragment key={entry.stringKey}>{renderEntry(entry, baseLayoutContext)}</Fragment>\n          ))}\n        </div>\n      );\n    }\n\n    return (\n      <div\n        role={selectionMode === 'none' ? 'list' : 'listbox'}\n        aria-label={ariaLabel ?? labels.collection}\n        aria-multiselectable={selectionMode === 'multiple' || undefined}\n        className={cn('grid min-w-0 items-start', classNames?.layout)}\n        style={{\n          gap,\n          gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n        }}\n      >\n        {group.items.map((entry) => {\n          const customSize = config.layout.getItemSize?.(entry.item, baseLayoutContext);\n          const span = clamp(Math.round(Number(customSize?.columnSpan) || 1), 1, columnCount);\n          const aspectRatio = config.layout.getItemAspectRatio?.(entry.item, entry.index);\n          return (\n            <div\n              key={entry.stringKey}\n              {...getItemInteractionProps(\n                entry,\n                createItemContext(entry, { ...baseLayoutContext, columnSpan: span, size: customSize }),\n              )}\n              style={{\n                gridColumn: span > 1 ? `span ${span}` : undefined,\n                aspectRatio: Number.isFinite(aspectRatio) && Number(aspectRatio) > 0\n                  ? String(aspectRatio)\n                  : undefined,\n              }}\n            >\n              {renderEntry(entry, { ...baseLayoutContext, columnSpan: span, size: customSize }, false)}\n            </div>\n          );\n        })}\n      </div>\n    );\n  };\n\n  const slotContext: WorkbenchCollectionSlotContext<Item> = {\n    items,\n    error: effectiveError,\n    loading,\n    loadingMore,\n    selectedKeys,\n    retry: () => callbacks?.onRetry?.(),\n  };\n  const header = resolveRenderableSlot(slots?.header, slotContext);\n  const toolbar = resolveRenderableSlot(slots?.toolbar, slotContext);\n  const selectionToolbar = selectedKeys.size > 0\n    ? resolveRenderableSlot(slots?.selectionToolbar, slotContext)\n    : null;\n  const beforeItems = resolveRenderableSlot(slots?.beforeItems, slotContext);\n  const footer = resolveRenderableSlot(slots?.footer, slotContext);\n  const showPermission = state?.permission === true;\n  const showOffline = state?.offline === true && !showPermission;\n  const showInitialLoading = loading && items.length === 0 && !showPermission && !showOffline;\n  const showInitialError = Boolean(effectiveError) && items.length === 0 && !showPermission && !showOffline && !showInitialLoading;\n  const showEmpty = !showPermission && !showOffline && !showInitialLoading && !showInitialError && (state?.empty === true || items.length === 0);\n  const loadingSlot = resolveRenderableSlot(slots?.loading, slotContext);\n  const errorSlot = resolveRenderableSlot(slots?.error, slotContext);\n  const permissionSlot = resolveRenderableSlot(slots?.permission, slotContext);\n  const offlineSlot = resolveRenderableSlot(slots?.offline, slotContext);\n  const emptySlot = resolveRenderableSlot(slots?.empty, slotContext);\n  const loadMoreSlot = resolveRenderableSlot(slots?.loadMore, slotContext);\n  const selfScrollable = config.layout.scrollOwner === 'self'\n    || (config.layout.scrollOwner === undefined && (config.layout.fillHeight || config.layout.maxHeight));\n  const rootStyle: CSSProperties = {\n    ...style,\n    padding: config.layout.padding ?? style?.padding,\n    height: config.layout.fillHeight ? '100%' : style?.height,\n    maxHeight: config.layout.maxHeight ?? style?.maxHeight,\n    overflow: selfScrollable ? 'auto' : style?.overflow,\n  };\n\n  return (\n    <section\n      ref={rootRef}\n      {...componentAttributes}\n      data-monkeys-component=\"workbench-collection\"\n      data-layout-mode={mode}\n      data-density={config.appearance?.density}\n      data-radius={config.appearance?.radius}\n      data-media-fit={config.appearance?.mediaFit}\n      data-hover-effect={config.appearance?.hover}\n      aria-label={ariaLabel ?? labels.collection}\n      aria-busy={loading || loadingMore || undefined}\n      className={cn('min-h-0 min-w-0', config.layout.fillHeight && 'h-full', classNames?.root, className)}\n      style={rootStyle}\n    >\n      {hasRenderableNode(header) ? <div className={classNames?.header}>{header}</div> : null}\n      {hasRenderableNode(toolbar) ? <div className={classNames?.toolbar}>{toolbar}</div> : null}\n      {hasRenderableNode(selectionToolbar) ? (\n        <div className={classNames?.selectionToolbar}>{selectionToolbar}</div>\n      ) : null}\n      {hasRenderableNode(beforeItems) ? <div className={classNames?.beforeItems}>{beforeItems}</div> : null}\n\n      {showPermission ? (\n        hasRenderableNode(permissionSlot) ? permissionSlot : (\n          <BaseSystemState\n            kind=\"permission\"\n            title={labels.permission}\n            actions={statusStates.permission?.showRequestAccess !== false && callbacks?.onRequestAccess\n              ? <BaseButton size=\"sm\" label={labels.requestAccess} onClick={callbacks.onRequestAccess} />\n              : undefined}\n          />\n        )\n      ) : showOffline ? (\n        hasRenderableNode(offlineSlot) ? offlineSlot : (\n          <BaseSystemState\n            kind=\"offline\"\n            title={labels.offline}\n            actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n              ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n              : undefined}\n          />\n        )\n      ) : showInitialLoading ? (\n        hasRenderableNode(loadingSlot) ? loadingSlot : loadingVariant === 'spinner' ? (\n          <BaseLoadingState title={labels.loading} variant=\"spinner\" />\n        ) : (\n          <div\n            ref={registerItemsNode}\n            className={cn('min-w-0', classNames?.items)}\n          >\n            <WorkbenchCollectionSkeleton\n              mode={mode}\n              phase=\"initial\"\n              columnCount={columnCount}\n              columnWidth={columnWidth}\n              cardWidth={config.layout.cardWidth ?? config.layout.idealCardWidth}\n              gap={gap}\n              rowHeight={rowHeight}\n              config={config.loading?.skeleton}\n              ariaLabel={labels.loading}\n              className={classNames?.layout}\n            />\n          </div>\n        )\n      ) : showInitialError ? (\n        hasRenderableNode(errorSlot) ? errorSlot : (\n          <BaseSystemState\n            kind=\"error\"\n            title={labels.loadError}\n            actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n              ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n              : undefined}\n          />\n        )\n      ) : showEmpty ? (\n        hasRenderableNode(emptySlot) ? emptySlot : <BaseEmptyState title={labels.empty} />\n      ) : (\n        <div\n          ref={registerItemsNode}\n          className={cn('min-w-0', classNames?.items)}\n        >\n          {groups.map((group, groupIndex) => {\n            const groupContext: WorkbenchCollectionGroupContext<Item> = {\n              key: group.key,\n              label: group.label,\n              items: group.items.map(({ item }) => item),\n              groupIndex,\n            };\n            const heading = config.grouping\n              ? slots?.groupHeading?.(groupContext, slotContext) ?? group.label\n              : null;\n            const headingId = `${componentId}-group-${groupIndex}`;\n            return (\n              <div\n                key={group.stringKey}\n                data-collection-group={group.stringKey}\n                className={classNames?.group}\n              >\n                {hasRenderableNode(heading) ? (\n                  <div id={headingId} role=\"heading\" aria-level={2} className={classNames?.groupHeading}>\n                    {heading}\n                  </div>\n                ) : null}\n                {renderGroupItems(group)}\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      {items.length > 0 && effectiveError ? (\n        <div className={classNames?.status}>\n          {hasRenderableNode(errorSlot) ? errorSlot : (\n            <BaseSystemState\n              kind=\"error\"\n              title={labels.refreshError}\n              actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n                ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n                : undefined}\n            />\n          )}\n        </div>\n      ) : null}\n\n      {items.length > 0 && (hasMore || loadingMore) ? (\n        <div ref={loadMoreRef} className={classNames?.loadMore} data-collection-load-more=\"\">\n          {hasRenderableNode(loadMoreSlot)\n            ? loadMoreSlot\n            : loadingMore\n              ? loadingVariant === 'spinner'\n                ? <BaseLoadingState title={labels.loadingMore} variant=\"spinner\" />\n                : (\n                    <WorkbenchCollectionSkeleton\n                      mode={mode}\n                      phase=\"load-more\"\n                      columnCount={columnCount}\n                      columnWidth={columnWidth}\n                      cardWidth={config.layout.cardWidth ?? config.layout.idealCardWidth}\n                      gap={gap}\n                      rowHeight={rowHeight}\n                      config={config.loading?.skeleton}\n                      ariaLabel={labels.loadingMore}\n                      className={classNames?.layout}\n                    />\n                  )\n              : null}\n        </div>\n      ) : null}\n      {hasRenderableNode(footer) ? <div className={classNames?.footer}>{footer}</div> : null}\n    </section>\n  );\n}\n","import {\n  WorkbenchGalleryCard,\n  type WorkbenchGalleryCardProps,\n} from './WorkbenchGalleryCard';\nimport {\n  type WorkbenchMasonryItemSize,\n} from './WorkbenchMasonryLayout';\nimport { WorkbenchCollection } from './WorkbenchCollection';\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 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 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  cardInteraction = 'button',\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  galleryDetailPresentation,\n  renderPreview,\n  renderMeta,\n  renderLeadingVisual,\n  resolveRecordVisual,\n  hiddenDetailFieldKeys = [],\n  labels,\n  formatLabel,\n  getMasonryItemSize,\n}: WorkbenchGalleryViewProps<Row>) {\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  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      cardInteraction={cardInteraction}\n      onClick={onRowClick ? () => onRowClick(row, rowIndex) : undefined}\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      galleryDetailPresentation={galleryDetailPresentation}\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  const collectionMode = isMasonry\n    ? masonryPlacementStrategy === 'dense' ? 'dense' : 'masonry'\n    : isRailLayout ? 'rail' : 'grid';\n\n  return (\n    <WorkbenchCollection\n      items={rows}\n      classNames={{ layout: className }}\n      config={{\n        getItemKey: (row: Row, rowIndex: number) => (row as any)?.id || (row as any)?.linkKey || rowIndex,\n        layout: {\n          mode: collectionMode,\n          gap: GALLERY_GRID_GAP_PX,\n          columns: isMasonry\n            ? 'auto'\n            : resolvedGridColumnCount\n              ? {\n                  mobile: 1,\n                  tablet: Math.min(2, resolvedGridColumnCount),\n                  desktop: resolvedGridColumnCount,\n                }\n              : 'auto',\n          cardWidth: isRailLayout ? resolvedRailCardWidth : undefined,\n          minCardWidth: resolvedGridCardWidth ?? resolvedMinCardWidth,\n          idealCardWidth: isMasonry\n            ? resolvedMasonryColumnWidth\n            : resolvedGridCardWidth ?? resolvedIdealCardWidth,\n          maxCardWidth: resolvedGridCardWidth ?? resolvedMaxCardWidth,\n          placementStrategy: masonryPlacementStrategy,\n          getItemSize: isMasonry\n            ? (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, {\n                ...layout,\n                placementStrategy: layout.placementStrategy === 'dense' ? 'dense' : 'shelf',\n                defaultSize,\n              }) || {};\n              return {\n                ...defaultSize,\n                ...customSize,\n              };\n            }\n            : undefined,\n        },\n      }}\n      renderItem={(row, context) => renderGalleryCard(row, context.index)}\n    />\n  );\n}\n","import type { HTMLAttributes } from \"react\";\n\nimport { BaseSkeleton } from \"../base/BaseSkeleton\";\nimport { cn } from \"../base/utils\";\nimport { SkeletonScope, SkeletonItem, type SkeletonGroupAnimation } from \"../skeleton/motion\";\n\nexport type WorkbenchGallerySkeletonLayout = \"grid\" | \"rail\";\n\nexport interface WorkbenchGallerySkeletonSection {\n  id: string;\n  layout?: WorkbenchGallerySkeletonLayout;\n  filterCount?: number;\n  cardCount?: number;\n  aspectRatios?: readonly number[];\n}\n\nexport interface WorkbenchGallerySkeletonProps extends HTMLAttributes<HTMLDivElement> {\n  sections?: readonly WorkbenchGallerySkeletonSection[];\n  animated?: boolean;\n  animation?: SkeletonGroupAnimation;\n}\n\nconst DEFAULT_SECTIONS: readonly WorkbenchGallerySkeletonSection[] = [\n  {\n    id: \"primary\",\n    layout: \"rail\",\n    filterCount: 2,\n    cardCount: 4,\n    aspectRatios: [16 / 11],\n  },\n  {\n    id: \"secondary\",\n    layout: \"grid\",\n    filterCount: 3,\n    cardCount: 5,\n    aspectRatios: [4 / 5, 1, 3 / 4, 5 / 4, 1],\n  },\n];\n\nfunction normalizeCount(value: number | undefined, fallback: number, maximum: number) {\n  if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) return fallback;\n  return Math.min(Math.round(value), maximum);\n}\n\nfunction normalizeAspectRatio(value: number | undefined) {\n  if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) return 1;\n  return Math.min(Math.max(value, 0.5), 2);\n}\n\nfunction WorkbenchGallerySkeletonHeading({\n  animated,\n  filterCount,\n}: {\n  animated: boolean;\n  filterCount: number;\n}) {\n  return (\n    <div className=\"flex min-h-10 flex-wrap items-center justify-between gap-4\">\n      <div className=\"space-y-2\">\n        <BaseSkeleton variant=\"line\" animated={animated} className=\"h-6 w-36 rounded-md\" />\n        <BaseSkeleton variant=\"line\" animated={animated} className=\"h-3 w-12\" />\n      </div>\n      <div className=\"flex flex-wrap justify-end gap-2\">\n        {Array.from({ length: filterCount }, (_, index) => (\n          <BaseSkeleton\n            key={index}\n            variant=\"block\"\n            animated={animated}\n            className=\"h-9 w-28 rounded-lg\"\n          />\n        ))}\n      </div>\n    </div>\n  );\n}\n\nexport function WorkbenchGallerySkeleton({\n  sections = DEFAULT_SECTIONS,\n  animated = true,\n  animation,\n  className,\n  ...props\n}: WorkbenchGallerySkeletonProps) {\n  return (\n    <SkeletonScope animation={animation} animated={animated}>\n      <div\n        {...props}\n        role=\"status\"\n        aria-busy=\"true\"\n        aria-label=\"Loading gallery\"\n        data-monkeys-component=\"workbench-gallery-skeleton\"\n        className={cn(\"grid w-full gap-4\", className)}\n      >\n        {sections.map((section, sectionIndex) => {\n          const layout = section.layout ?? \"grid\";\n          const filterCount = normalizeCount(section.filterCount, 2, 8);\n          const cardCount = normalizeCount(section.cardCount, layout === \"rail\" ? 4 : 5, 24);\n          const ratios = section.aspectRatios?.length\n            ? section.aspectRatios\n            : [layout === \"rail\" ? 16 / 11 : 1];\n\n          return (\n            <SkeletonItem key={section.id || sectionIndex} index={sectionIndex}>\n              <section className=\"grid gap-4\" data-skeleton-section={section.id}>\n                <WorkbenchGallerySkeletonHeading animated={animated} filterCount={filterCount} />\n                <div\n                  className={cn(\n                    \"grid items-start gap-4\",\n                    layout === \"rail\"\n                      ? \"grid-cols-1 sm:grid-cols-2 xl:grid-cols-4\"\n                      : \"grid-cols-2 md:grid-cols-3 xl:grid-cols-5\",\n                  )}\n                  data-skeleton-layout={layout}\n                >\n                  {Array.from({ length: cardCount }, (_, index) => (\n                    <div\n                      key={index}\n                      className=\"overflow-hidden rounded-lg border border-border bg-card\"\n                    >\n                      <BaseSkeleton\n                        variant=\"block\"\n                        animated={animated}\n                        className=\"h-auto w-full rounded-none\"\n                        style={{\n                          aspectRatio: String(normalizeAspectRatio(ratios[index % ratios.length])),\n                        }}\n                      />\n                    </div>\n                  ))}\n                </div>\n              </section>\n            </SkeletonItem>\n          );\n        })}\n      </div>\n    </SkeletonScope>\n  );\n}\n","import type { HTMLAttributes } from \"react\";\nimport { useMonkeysLocaleMessages } from \"../../provider/context\";\n\nimport { BaseSkeleton } from \"../base/BaseSkeleton\";\nimport { cn } from \"../base/utils\";\nimport { SkeletonScope, SkeletonItem, type SkeletonGroupAnimation } from \"../skeleton/motion\";\n\nexport interface WorkbenchPageSkeletonProps extends HTMLAttributes<HTMLDivElement> {\n  animated?: boolean;\n  animation?: SkeletonGroupAnimation;\n}\n\nexport function WorkbenchPageSkeleton({\n  animated = true,\n  animation,\n  className,\n  'aria-label': ariaLabel,\n  ...props\n}: WorkbenchPageSkeletonProps) {\n  const loadingLabel = useMonkeysLocaleMessages().loading.spinner;\n  const skeleton = (classNames: string) => (\n    <BaseSkeleton variant=\"block\" animated={animated} className={classNames} />\n  );\n\n  return (\n    <SkeletonScope animation={animation} animated={animated}>\n      <div\n        {...props}\n        role=\"status\"\n        aria-busy=\"true\"\n        aria-label={ariaLabel ?? loadingLabel}\n        data-monkeys-component=\"workbench-page-skeleton\"\n        className={cn(\"flex size-full min-h-0 flex-col gap-4 overflow-hidden\", className)}\n      >\n        <div className=\"flex h-10 shrink-0 items-center justify-between gap-4 rounded-lg border border-border bg-card px-4\">\n          <div className=\"flex items-center gap-2\">\n            {skeleton(\"h-5 w-20\")}\n            {skeleton(\"h-5 w-16\")}\n            {skeleton(\"h-5 w-24\")}\n          </div>\n          <div className=\"flex items-center gap-2\">\n            {skeleton(\"h-7 w-20\")}\n            {skeleton(\"size-7\")}\n          </div>\n        </div>\n\n        <div className=\"grid shrink-0 grid-cols-1 gap-4 md:grid-cols-3\">\n          {skeleton(\"h-40 md:col-span-2\")}\n          {skeleton(\"h-40\")}\n        </div>\n\n        <div className=\"grid min-h-0 flex-1 grid-cols-1 gap-4 lg:grid-cols-[minmax(0,2fr)_minmax(14rem,1fr)]\">\n          <div className=\"flex min-h-0 flex-col gap-4 rounded-lg border border-border bg-card p-4\">\n            {skeleton(\"h-6 w-40\")}\n            <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n              {Array.from({ length: 6 }, (_, index) => (\n                <SkeletonItem key={index} index={index}>\n                  <div className=\"space-y-2\">\n                    {skeleton(\"h-4 w-20\")}\n                    {skeleton(\"h-9 w-full\")}\n                  </div>\n                </SkeletonItem>\n              ))}\n            </div>\n            {skeleton(\"min-h-32 flex-1\")}\n          </div>\n\n          <div className=\"flex min-h-40 flex-col gap-4 rounded-lg border border-border bg-card p-4\">\n            {skeleton(\"h-6 w-28\")}\n            {skeleton(\"min-h-28 flex-1\")}\n            {skeleton(\"h-9 w-full\")}\n          </div>\n        </div>\n      </div>\n    </SkeletonScope>\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';\nimport { BaseButton } from '../base/BaseButton';\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  onSelectRow?: (intent: { rowId: string }) => 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,\n  renderOverlayCard,\n  onMoveRow,\n  onSelectRow,\n  emptyColumn,\n  activationDistance = 5,\n  columnWidth = 280,\n  columnMinHeight,\n  className,\n  classNames,\n  style,\n}: WorkbenchLaneViewProps<Row, ColumnId>) {\n  const cardRenderer = renderCard ?? ((row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => onSelectRow\n    ? <BaseButton className=\"w-full justify-start whitespace-normal text-left\" onClick={() => onSelectRow({ rowId: getRowId(row, context.rowIndex) })}>{String((row as any)?.title ?? (row as any)?.name ?? getRowId(row, context.rowIndex))}</BaseButton>\n    : defaultRenderCard(row));\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={cardRenderer}\n          />\n        ))}\n      </div>\n      <DragOverlay>\n        {activeEntry && activeColumn ? (\n          <div className={cn(classNames?.overlayWrapper)}>\n            {(renderOverlayCard || cardRenderer)(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","/** Browser-local display only; numeric units are explicit, never inferred from magnitude. */\nexport function renderDateTimeValue(value: unknown, numericUnit: 'milliseconds' | 'seconds' = 'milliseconds', locale?: string): string {\n  if (numericUnit !== 'milliseconds' && numericUnit !== 'seconds') return '—';\n  let instant: number;\n  if (typeof value === 'number') {\n    instant = numericUnit === 'seconds' ? value * 1000 : value;\n  } else if (typeof value === 'string') {\n    // Require a timezone so a server-produced value cannot silently become local wall time.\n    const match = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?(Z|[+-]\\d{2}:\\d{2})$/.exec(value);\n    if (!match) return '—';\n    const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);\n    const hour = Number(match[4]), minute = Number(match[5]), second = Number(match[6]);\n    const calendar = new Date(0);\n    calendar.setUTCFullYear(year, month - 1, day);\n    if (calendar.getUTCFullYear() !== year || calendar.getUTCMonth() !== month - 1 || calendar.getUTCDate() !== day || hour > 23 || minute > 59 || second > 59) return '—';\n    instant = Date.parse(value);\n  } else return '—';\n  if (!Number.isFinite(instant)) return '—';\n  const date = new Date(instant);\n  if (!Number.isFinite(date.getTime())) return '—';\n  try { return date.toLocaleString(locale); } catch { return '—'; }\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { useMonkeysLocale } from '../../provider/context';\nimport { renderDateTimeValue } from '../capabilities/dateTimeValue';\n\nexport interface WorkbenchEvidenceItem {\n  id: string;\n  title?: ReactNode;\n  titleKey?: string;\n  description?: ReactNode;\n  descriptionKey?: string;\n  source?: ReactNode;\n  sourceKey?: string;\n  timestamp?: ReactNode;\n  timestampValue?: string | number;\n  marker?: ReactNode;\n  action?: ReactNode;\n}\n\nexport interface WorkbenchEvidenceListProps {\n  items: WorkbenchEvidenceItem[];\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  translate?: (key: string) => string;\n}\n\nexport function WorkbenchEvidenceList({\n  items,\n  emptyState = null,\n  ariaLabel = \"Evidence\",\n  className,\n  translate = key => key,\n}: WorkbenchEvidenceListProps) {\n  const { locale } = useMonkeysLocale();\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.titleKey ? translate(item.titleKey) : item.title}\n            </span>\n            {hasRenderableNode(item.description) || item.descriptionKey ? (\n              <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n                {item.descriptionKey ? translate(item.descriptionKey) : item.description}\n              </span>\n            ) : null}\n            {hasRenderableNode(item.source) || item.sourceKey ||\n            hasRenderableNode(item.timestamp) || item.timestampValue !== undefined ? (\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) || item.sourceKey ? (\n                  <span>{item.sourceKey ? translate(item.sourceKey) : item.source}</span>\n                ) : null}\n                {hasRenderableNode(item.timestamp) || item.timestampValue !== undefined ? (\n                  <time>{item.timestampValue !== undefined ? renderDateTimeValue(item.timestampValue, 'milliseconds', locale) : 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 { forwardRef, type CSSProperties } from 'react';\nimport { safeDisplayUrl } from '../safeDisplayUrl';\nimport { cn } from '../base/utils';\n\nexport interface WebPreviewFrameProps {\n  src: string;\n  title: string;\n  className?: string;\n  style?: CSSProperties;\n}\n\nexport const WebPreviewFrame = forwardRef<HTMLIFrameElement, WebPreviewFrameProps>(function WebPreviewFrame({ src, title, className, style, ...attributes }, ref) {\n  const safe = safeDisplayUrl(src, 'media');\n  const source = safe && !safe.startsWith('blob:') ? safe : undefined;\n  return <iframe {...attributes} ref={ref} src={source} title={title} data-monkeys-component=\"web-preview-frame\" data-invalid-source={!source || undefined}\n    sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-presentation\" referrerPolicy=\"no-referrer\"\n    className={cn('h-full min-h-80 w-full border-0 bg-background', className)} style={style} />;\n});\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { WorkbenchCollection } from \"./WorkbenchCollection\";\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    <div data-monkeys-component=\"workbench-asset-gallery\">\n      <WorkbenchCollection<WorkbenchAssetGalleryItem>\n        items={items}\n        config={{\n          getItemKey: (item) => item.id,\n          layout: {\n            mode: \"grid\",\n            columns: \"auto\",\n            minCardWidth: \"12rem\",\n            idealCardWidth: \"16rem\",\n            gap: 12,\n          },\n          appearance: { hover: \"none\" },\n        }}\n        ariaLabel={ariaLabel}\n        className={className}\n        renderItem={(item) => {\n          const selected = selectedItemId === item.id;\n          return (\n            <button\n              type=\"button\"\n              aria-pressed={onItemSelect ? selected : undefined}\n              onClick={onItemSelect ? () => onItemSelect(item) : undefined}\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          );\n        }}\n      />\n    </div>\n  );\n}\n","import type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\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\nexport const workbenchVisualizationToneColor = (tone: WorkbenchVisualizationTone) =>\n  `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;\n\nexport const workbenchVisualizationToneColorWithAlpha = (\n  tone: WorkbenchVisualizationTone,\n  alpha: number,\n) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;\n","import type { CSSProperties, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { NavigationSidebar } from \"../navigation-sidebar\";\nimport type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\nimport {\n  workbenchVisualizationToneColor,\n  workbenchVisualizationToneColorWithAlpha,\n} from \"./workbenchVisualizationTone\";\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?: (\n    child: WorkbenchRadarNavigationChild,\n    parent: WorkbenchRadarNavigationItem,\n  ) => 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    <NavigationSidebar\n      kind=\"route\"\n      routeItems={items.map((item) => ({\n        ...item,\n        children: item.children?.map((child) => ({\n          ...child,\n          domProps: { \"data-radar-navigation-child-id\": child.id },\n        })),\n      }))}\n      activeItemId={activeItemId}\n      activeChildId={activeChildId}\n      onItemSelect={\n        onItemSelect\n          ? (item) => onItemSelect(item as WorkbenchRadarNavigationItem)\n          : undefined\n      }\n      onChildSelect={\n        onChildSelect\n          ? (child, parent) =>\n              onChildSelect(\n                child as WorkbenchRadarNavigationChild,\n                parent as WorkbenchRadarNavigationItem,\n              )\n          : undefined\n      }\n      footer={footer}\n      ariaLabel={ariaLabel}\n      dataComponent=\"workbench-radar-navigation\"\n      widthMode=\"fill\"\n      resizable={false}\n      collapsible={false}\n      appearance={{\n        density: \"default\",\n        surface: \"outlined\",\n        activeVariant: \"solid\",\n      }}\n      className=\"min-w-0 self-stretch rounded-lg\"\n      classNames={{\n        content: \"p-3\",\n        list: \"gap-2\",\n        item: \"min-h-11 px-3 py-2 text-sm font-semibold\",\n        itemActive:\n          \"bg-primary text-primary-foreground shadow-[0_0_1.25rem_hsl(var(--primary)/0.28)]\",\n        childList: \"ml-5 gap-0.5 border-l border-border/70 py-1 pl-3\",\n        childItem: \"min-h-9 px-2 text-xs font-medium\",\n        childItemActive: \"border-primary/40 bg-primary/15 text-primary\",\n        footer: \"p-3\",\n      }}\n      style={radarPanelStyle}\n    />\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) ? (\n        navigation\n      ) : (\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-lg 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:\n            \"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-lg 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) ? (\n          <span aria-hidden=\"true\">{icon}</span>\n        ) : null}\n        <h2>{title}</h2>\n      </div>\n      {hasRenderableNode(description) ? (\n        <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n          {description}\n        </p>\n      ) : null}\n      {hasRenderableNode(children) ? (\n        <div className=\"mt-3\">{children}</div>\n      ) : null}\n    </section>\n  );\n}\n\nexport interface WorkbenchRadarFilterRowDisclosureBase {\n  expanded: boolean;\n  controls: string;\n  expandLabel: string;\n  collapseLabel: string;\n  onToggle: () => void;\n}\n\nexport interface WorkbenchRadarFilterRowIntegratedDisclosure extends WorkbenchRadarFilterRowDisclosureBase {\n  mode: \"integrated\";\n}\n\nexport interface WorkbenchRadarFilterRowSeparateDisclosure extends WorkbenchRadarFilterRowDisclosureBase {\n  mode: \"separate\";\n}\n\ninterface WorkbenchRadarFilterRowBaseProps {\n  label: ReactNode;\n  value?: ReactNode;\n  icon?: ReactNode;\n  disabled?: boolean;\n  tone?: WorkbenchVisualizationTone;\n  className?: string;\n}\n\nexport type WorkbenchRadarFilterRowProps = WorkbenchRadarFilterRowBaseProps &\n  (\n    | {\n        onSelect: () => void;\n        selected?: boolean;\n        disclosure?: never;\n      }\n    | {\n        onSelect?: never;\n        selected?: never;\n        disclosure: WorkbenchRadarFilterRowIntegratedDisclosure;\n      }\n    | {\n        onSelect: () => void;\n        selected?: boolean;\n        disclosure: WorkbenchRadarFilterRowSeparateDisclosure;\n      }\n  );\n\nexport interface WorkbenchRadarFilterChipProps {\n  label: ReactNode;\n  value?: ReactNode;\n  icon?: ReactNode;\n  selected?: boolean;\n  disabled?: boolean;\n  onSelect?: () => void;\n  className?: string;\n}\n\ntype WorkbenchRadarFilterStyle = CSSProperties & {\n  \"--workbench-radar-filter-tone\"?: string;\n  \"--tw-ring-color\"?: string;\n};\n\nfunction assertValidRadarFilterRowProps(props: WorkbenchRadarFilterRowProps) {\n  const { disclosure, onSelect } = props;\n  const invalid =\n    (!disclosure && !onSelect) ||\n    (disclosure?.mode === \"integrated\" &&\n      (Boolean(onSelect) || props.selected !== undefined)) ||\n    (disclosure?.mode === \"separate\" && !onSelect);\n\n  if (invalid) {\n    throw new Error(\"Invalid WorkbenchRadarFilterRow props.\");\n  }\n}\n\nexport function WorkbenchRadarFilterRow(props: WorkbenchRadarFilterRowProps) {\n  assertValidRadarFilterRowProps(props);\n\n  const {\n    label,\n    value,\n    icon,\n    selected,\n    disabled = false,\n    tone,\n    onSelect,\n    disclosure,\n    className,\n  } = props;\n  const isSelected = selected ?? false;\n  const selectedClasses = isSelected\n    ? undefined\n    : \"monkeys-workbench-radar-filter-row--idle\";\n  const disabledClasses = disabled\n    ? \"monkeys-workbench-radar-filter-disabled\"\n    : undefined;\n  const resolvedTone = tone ?? \"primary\";\n  const toneColor = workbenchVisualizationToneColor(resolvedTone);\n  const style: WorkbenchRadarFilterStyle = {\n    \"--workbench-radar-filter-tone\": toneColor,\n    \"--tw-ring-color\": tone ? toneColor : \"hsl(var(--ring))\",\n    ...(isSelected || tone\n      ? {\n          backgroundColor: workbenchVisualizationToneColorWithAlpha(\n            resolvedTone,\n            isSelected ? 0.14 : 0.08,\n          ),\n          borderColor: toneColor,\n        }\n      : {}),\n  };\n  const content = (\n    <>\n      {hasRenderableNode(icon) ? (\n        <span\n          className={cn(\n            \"flex size-4 shrink-0 items-center justify-center\",\n            tone\n              ? \"text-[var(--workbench-radar-filter-tone)]\"\n              : \"text-muted-foreground\",\n          )}\n          aria-hidden=\"true\"\n        >\n          {icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{label}</span>\n      {hasRenderableNode(value) ? (\n        <span className=\"ml-auto shrink-0 tabular-nums text-muted-foreground\">\n          {value}\n        </span>\n      ) : null}\n    </>\n  );\n  const disclosureIcon = disclosure ? (\n    <span\n      aria-hidden=\"true\"\n      className={cn(\n        \"text-lg leading-none transition-transform motion-reduce:transition-none\",\n        disclosure.expanded && \"rotate-90\",\n      )}\n    >\n      ›\n    </span>\n  ) : null;\n\n  if (disclosure?.mode === \"separate\") {\n    const disclosureLabel = disclosure.expanded\n      ? disclosure.collapseLabel\n      : disclosure.expandLabel;\n\n    return (\n      <div\n        data-monkeys-component=\"workbench-radar-filter-row\"\n        className={cn(\n          \"monkeys-workbench-radar-filter-row monkeys-workbench-radar-filter-row--separate\",\n          selectedClasses,\n          disabledClasses,\n          className,\n        )}\n        style={style}\n      >\n        <button\n          type=\"button\"\n          aria-pressed={selected}\n          disabled={disabled}\n          onClick={onSelect}\n          className={cn(\n            \"monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row__action\",\n            disabledClasses,\n          )}\n        >\n          {content}\n        </button>\n        <button\n          type=\"button\"\n          aria-expanded={disclosure.expanded}\n          aria-controls={disclosure.controls}\n          aria-label={disclosureLabel}\n          disabled={disabled}\n          onClick={disclosure.onToggle}\n          className={cn(\n            \"monkeys-workbench-radar-filter-row__disclosure\",\n            disabledClasses,\n          )}\n        >\n          {disclosureIcon}\n        </button>\n      </div>\n    );\n  }\n\n  const integratedDisclosure =\n    disclosure?.mode === \"integrated\" ? disclosure : undefined;\n  const disclosureLabel = integratedDisclosure\n    ? integratedDisclosure.expanded\n      ? integratedDisclosure.collapseLabel\n      : integratedDisclosure.expandLabel\n    : undefined;\n\n  return (\n    <button\n      type=\"button\"\n      data-monkeys-component=\"workbench-radar-filter-row\"\n      aria-label={disclosureLabel}\n      aria-pressed={integratedDisclosure ? undefined : selected}\n      aria-expanded={integratedDisclosure?.expanded}\n      aria-controls={integratedDisclosure?.controls}\n      disabled={disabled}\n      onClick={integratedDisclosure?.onToggle ?? onSelect}\n      className={cn(\n        \"monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row\",\n        selectedClasses,\n        disabledClasses,\n        className,\n      )}\n      style={style}\n    >\n      {content}\n      {integratedDisclosure ? (\n        <span className=\"ml-auto shrink-0 text-muted-foreground\">\n          {disclosureIcon}\n        </span>\n      ) : null}\n    </button>\n  );\n}\n\nexport function WorkbenchRadarFilterChip({\n  label,\n  value,\n  icon,\n  selected = false,\n  disabled = false,\n  onSelect,\n  className,\n}: WorkbenchRadarFilterChipProps) {\n  const interactive = Boolean(onSelect) || disabled;\n  const Comp = interactive ? \"button\" : \"div\";\n  return (\n    <Comp\n      type={interactive ? \"button\" : undefined}\n      aria-pressed={onSelect && !disabled ? selected : undefined}\n      disabled={interactive ? disabled : undefined}\n      onClick={onSelect}\n      className={cn(\n        \"flex min-w-0 items-center border text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        \"monkeys-workbench-radar-filter-control rounded-full\",\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        disabled && \"cursor-not-allowed opacity-50\",\n        className,\n      )}\n    >\n      {hasRenderableNode(icon) ? (\n        <span className=\"shrink-0\" aria-hidden=\"true\">\n          {icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{label}</span>\n      {hasRenderableNode(value) ? (\n        <span className=\"ml-auto shrink-0 text-muted-foreground\">{value}</span>\n      ) : 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\";\nimport {\n  workbenchVisualizationToneColor as toneColor,\n  workbenchVisualizationToneColorWithAlpha as toneColorWithAlpha,\n} from \"./workbenchVisualizationTone\";\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 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","import { safeDisplayUrl } from '../safeDisplayUrl';\nimport { useEffect, useRef, type CSSProperties } from 'react';\nimport type { Terminal } from '@xterm/xterm';\n\nexport interface RuntimeTerminalOutputFrame { sequence: number; data: string }\nexport type RuntimeTerminalOutputErrorCode = 'invalid-frame' | 'duplicate-sequence' | 'sequence-gap' | 'sequence-conflict' | 'history-expired' | 'output-budget-exceeded' | 'load-failed';\nexport interface RuntimeTerminalViewProps {\n  sessionKey: string;\n  output: readonly RuntimeTerminalOutputFrame[];\n  statusLabel: string;\n  disabled?: boolean;\n  className?: string;\n  style?: CSSProperties;\n  onInput?: (event: { sessionKey: string; data: string }) => void;\n  onResize?: (event: { sessionKey: string; columns: number; rows: number }) => void;\n  onOutputError?: (event: { sessionKey: string; code: RuntimeTerminalOutputErrorCode; expectedSequence: number; receivedSequence?: number }) => void;\n}\nexport const RUNTIME_TERMINAL_MAX_RETAINED_FRAMES = 2048;\nexport const RUNTIME_TERMINAL_MAX_RETAINED_BYTES = 2 * 1024 * 1024;\ninterface RetainedFrame extends RuntimeTerminalOutputFrame { bytes: number }\nexport interface RuntimeTerminalOutputHistory { highWater: number; bytes: number; frames: readonly RetainedFrame[] }\nexport class RuntimeTerminalOutputError extends Error {\n  constructor(readonly code: RuntimeTerminalOutputErrorCode, readonly expectedSequence: number, readonly receivedSequence?: number) { super(code); this.name = 'RuntimeTerminalOutputError'; }\n}\n/** Validate the entire batch before any write. Old replay beyond the bounded window fails closed. */\nexport function prepareRuntimeTerminalOutput(history: RuntimeTerminalOutputHistory, output: readonly RuntimeTerminalOutputFrame[]): { history: RuntimeTerminalOutputHistory; append: readonly RuntimeTerminalOutputFrame[] } {\n  const fail = (code: RuntimeTerminalOutputErrorCode, received?: number): never => { throw new RuntimeTerminalOutputError(code, history.highWater + 1, received); };\n  if (!Array.isArray(output)) return fail('invalid-frame');\n  if (output.length > RUNTIME_TERMINAL_MAX_RETAINED_FRAMES) return fail('output-budget-exceeded');\n  const known = new Map(history.frames.map(frame => [frame.sequence, frame]));\n  const append: RetainedFrame[] = [];\n  let highWater = history.highWater, previous: number | undefined, batchBytes = 0;\n  for (const frame of output) {\n    if (!frame || !Number.isSafeInteger(frame.sequence) || frame.sequence < 1 || typeof frame.data !== 'string') return fail('invalid-frame');\n    if (previous !== undefined && frame.sequence === previous) return fail('duplicate-sequence', frame.sequence);\n    if (previous !== undefined && frame.sequence !== previous + 1) return fail('sequence-gap', frame.sequence);\n    previous = frame.sequence;\n    if (frame.data.length > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) return fail('output-budget-exceeded', frame.sequence);\n    const bytes = new TextEncoder().encode(frame.data).byteLength;\n    batchBytes += bytes;\n    if (batchBytes > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) return fail('output-budget-exceeded', frame.sequence);\n    if (frame.sequence <= highWater) {\n      const seen = known.get(frame.sequence);\n      if (!seen) return fail('history-expired', frame.sequence);\n      if (seen.data !== frame.data) return fail('sequence-conflict', frame.sequence);\n    } else {\n      if (frame.sequence !== highWater + 1) return fail('sequence-gap', frame.sequence);\n      highWater = frame.sequence;\n      append.push({ sequence: frame.sequence, data: frame.data, bytes });\n    }\n  }\n  const frames = [...history.frames, ...append];\n  let bytes = history.bytes + append.reduce((sum, frame) => sum + frame.bytes, 0), remove = 0;\n  while (frames.length - remove > RUNTIME_TERMINAL_MAX_RETAINED_FRAMES || bytes > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) bytes -= frames[remove++]!.bytes;\n  return { history: { highWater, bytes, frames: frames.slice(remove) }, append: append.map(({ sequence, data }) => ({ sequence, data })) };\n}\n\n/** Rendering only. Authentication, network transport and authoritative retained frames belong to the host. */\nexport function RuntimeTerminalView(props: RuntimeTerminalViewProps) {\n  const element = useRef<HTMLDivElement>(null);\n  const latest = useRef(props); latest.current = props;\n  const running = useRef<{ sessionKey: string; terminal: Terminal; write(output: readonly RuntimeTerminalOutputFrame[]): void }>();\n  useEffect(() => {\n    const sessionKey = props.sessionKey;\n    const container = element.current;\n    if (!container || !sessionKey) return;\n    let active = true, terminal: Terminal | undefined, observer: ResizeObserver | undefined;\n    const subscriptions: { dispose(): void }[] = [];\n    let cleaned = false;\n    const cleanup = () => { if (cleaned) return; cleaned = true; observer?.disconnect(); subscriptions.forEach(subscription => subscription.dispose()); terminal?.dispose(); };\n    let history: RuntimeTerminalOutputHistory = { highWater: 0, bytes: 0, frames: [] };\n    const current = () => active && latest.current.sessionKey === sessionKey;\n    const report = (error: unknown) => {\n      if (!current()) return;\n      const fault = error instanceof RuntimeTerminalOutputError ? error : new RuntimeTerminalOutputError('load-failed', history.highWater + 1);\n      latest.current.onOutputError?.({ sessionKey, code: fault.code, expectedSequence: fault.expectedSequence, ...(fault.receivedSequence === undefined ? {} : { receivedSequence: fault.receivedSequence }) });\n    };\n    void Promise.all([import('@xterm/xterm'), import('@xterm/addon-fit'), import('@xterm/addon-web-links')]).then(([{ Terminal }, { FitAddon }, { WebLinksAddon }]) => {\n      if (!current()) return;\n      const openLink = (_event: MouseEvent, uri: string) => { const safe = safeDisplayUrl(uri, 'link'); if (current() && safe && /^https?:\\/\\//i.test(safe)) window.open(safe, '_blank', 'noopener,noreferrer'); };\n      const term = new Terminal({ linkHandler: { activate: openLink }, cursorBlink: true, disableStdin: latest.current.disabled === true, fontSize: 13, fontFamily: '\"JetBrains Mono\", Menlo, Monaco, \"Courier New\", monospace' });\n      terminal = term;\n      const fit = new FitAddon(); term.loadAddon(fit); term.loadAddon(new WebLinksAddon(openLink)); term.open(container);\n      const resize = () => {\n        if (!current()) return;\n        fit.fit();\n        const dimensions = fit.proposeDimensions();\n        if (dimensions && Number.isInteger(dimensions.cols) && Number.isInteger(dimensions.rows) && dimensions.cols > 0 && dimensions.rows > 0) latest.current.onResize?.({ sessionKey, columns: dimensions.cols, rows: dimensions.rows });\n      };\n      subscriptions.push(term.onData(data => { if (current() && !latest.current.disabled) latest.current.onInput?.({ sessionKey, data }); }));\n      const write = (output: readonly RuntimeTerminalOutputFrame[]) => {\n        if (!current()) return;\n        try {\n          const prepared = prepareRuntimeTerminalOutput(history, output);\n          if (prepared.append.length) term.write(prepared.append.map(frame => frame.data).join(''));\n          history = prepared.history;\n        } catch (error) { report(error); }\n      };\n      running.current = { sessionKey, terminal: term, write };\n      resize();\n      if (typeof ResizeObserver !== 'undefined') { observer = new ResizeObserver(resize); observer.observe(container); }\n      write(latest.current.output);\n    }).catch(error => {\n      cleanup();\n      if (terminal && running.current?.terminal === terminal) running.current = undefined;\n      report(error);\n    });\n    return () => {\n      active = false;\n      cleanup();\n      if (terminal && running.current?.terminal === terminal) running.current = undefined;\n    };\n  }, [props.sessionKey]);\n  useEffect(() => {\n    const state = running.current;\n    if (state?.sessionKey === props.sessionKey) { state.terminal.options.disableStdin = props.disabled === true; state.write(props.output); }\n  }, [props.sessionKey, props.output, props.disabled]);\n  return <div className={props.className} style={props.style}>\n    <div role=\"status\">{props.statusLabel}</div>\n    <div ref={element} className=\"h-full min-h-48 w-full rounded-2xl\" />\n  </div>;\n}\n","import { useMonkeysLocale } from '../../provider/context';\n\nconst messages = {\n  \"operationFailed\": { \"en\": \"The file operation failed. Review the input and try again.\", \"zh\": \"文件操作失败，请检查输入后重试。\" },\n  \"apply\": {\n    \"en\": \"Apply\",\n    \"zh\": \"应用\"\n  },\n  \"cancel\": {\n    \"en\": \"Cancel\",\n    \"zh\": \"取消\"\n  },\n  \"compact\": {\n    \"en\": \"Compact\",\n    \"zh\": \"紧凑\"\n  },\n  \"confirm\": {\n    \"en\": \"Confirm\",\n    \"zh\": \"确认\"\n  },\n  \"confirmAction\": {\n    \"en\": \"Confirm file action\",\n    \"zh\": \"确认文件操作\"\n  },\n  \"create\": {\n    \"en\": \"Create\",\n    \"zh\": \"新建\"\n  },\n  \"delete\": {\n    \"en\": \"Delete\",\n    \"zh\": \"删除\"\n  },\n  \"detailed\": {\n    \"en\": \"Detailed\",\n    \"zh\": \"详细\"\n  },\n  \"diff\": {\n    \"en\": \"Diff\",\n    \"zh\": \"差异\"\n  },\n  \"directory\": {\n    \"en\": \"Directory\",\n    \"zh\": \"文件夹\"\n  },\n  \"discardReload\": {\n    \"en\": \"Discard draft and reload\",\n    \"zh\": \"放弃修改并重新加载\"\n  },\n  \"download\": {\n    \"en\": \"Download\",\n    \"zh\": \"下载\"\n  },\n  \"file\": {\n    \"en\": \"File\",\n    \"zh\": \"文件\"\n  },\n  \"actions\": {\n    \"en\": \"File actions\",\n    \"zh\": \"文件操作\"\n  },\n  \"files\": {\n    \"en\": \"Files\",\n    \"zh\": \"文件\"\n  },\n  \"kind\": {\n    \"en\": \"Kind\",\n    \"zh\": \"类型\"\n  },\n  \"loadingDiff\": {\n    \"en\": \"Loading diff\",\n    \"zh\": \"正在加载差异\"\n  },\n  \"path\": {\n    \"en\": \"Path\",\n    \"zh\": \"路径\"\n  },\n  \"refresh\": {\n    \"en\": \"Refresh\",\n    \"zh\": \"刷新\"\n  },\n  \"rename\": {\n    \"en\": \"Rename\",\n    \"zh\": \"重命名\"\n  },\n  \"save\": {\n    \"en\": \"Save\",\n    \"zh\": \"保存\"\n  },\n  \"search\": {\n    \"en\": \"Search\",\n    \"zh\": \"搜索\"\n  },\n  \"searchFiles\": {\n    \"en\": \"Search files\",\n    \"zh\": \"搜索文件\"\n  },\n  \"simple\": {\n    \"en\": \"Simple\",\n    \"zh\": \"简洁\"\n  },\n  \"sourceControl\": {\n    \"en\": \"Source control\",\n    \"zh\": \"源代码管理\"\n  },\n  \"viewMode\": {\n    \"en\": \"View mode\",\n    \"zh\": \"显示方式\"\n  },\n  \"binaryUnavailable\": {\n    \"en\": \"Binary file cannot be previewed.\",\n    \"zh\": \"无法预览二进制文件。\"\n  },\n  \"diffTooLarge\": {\n    \"en\": \"Diff exceeds text editor limit.\",\n    \"zh\": \"差异内容超过编辑器大小限制。\"\n  },\n  \"diffUnavailable\": {\n    \"en\": \"Diff is unavailable.\",\n    \"zh\": \"暂时无法查看差异。\"\n  },\n  \"changedExternally\": {\n    \"en\": \"File changed externally; your draft is preserved.\",\n    \"zh\": \"文件已被外部修改；你的草稿已保留。\"\n  },\n  \"tooLarge\": {\n    \"en\": \"File exceeds text editor limit.\",\n    \"zh\": \"文件超过编辑器大小限制。\"\n  },\n  \"imageUnavailable\": {\n    \"en\": \"Image preview is unavailable.\",\n    \"zh\": \"暂时无法预览图片。\"\n  },\n  \"tooManyExpanded\": {\n    \"en\": \"Too many expanded paths.\",\n    \"zh\": \"展开的路径数量过多。\"\n  },\n  \"deleteConfirm\": {\n    \"en\": \"Delete the selected item?\",\n    \"zh\": \"删除所选项目？\"\n  },\n  \"discardConfirm\": {\n    \"en\": \"Discard unsaved changes?\",\n    \"zh\": \"放弃未保存的修改？\"\n  },\n  \"name\": {\n    \"en\": \"Name\",\n    \"zh\": \"名称\"\n  },\n  \"size\": {\n    \"en\": \"Size\",\n    \"zh\": \"大小\"\n  },\n  \"modified\": {\n    \"en\": \"Modified\",\n    \"zh\": \"修改时间\"\n  },\n  \"permissions\": {\n    \"en\": \"Permissions\",\n    \"zh\": \"权限\"\n  },\n  \"type\": {\n    \"en\": \"Type\",\n    \"zh\": \"类型\"\n  },\n  \"empty\": {\n    \"en\": \"Select a file to view or edit its contents.\",\n    \"zh\": \"选择文件以查看或编辑内容。\"\n  },\n  \"emptyTree\": {\n    \"en\": \"No matching files.\",\n    \"zh\": \"没有匹配的文件。\"\n  },\n  \"renameItem\": {\n    \"en\": \"Rename {name}\",\n    \"zh\": \"重命名 {name}\"\n  },\n  \"deleteItem\": {\n    \"en\": \"Delete {name}\",\n    \"zh\": \"删除 {name}\"\n  },\n  \"downloadItem\": {\n    \"en\": \"Download {name}\",\n    \"zh\": \"下载 {name}\"\n  }\n} as const;\nexport type RuntimeFileCopyKey = keyof typeof messages;\nexport function useRuntimeFileCopy(translate?: (key: string) => string) {\n  const { locale } = useMonkeysLocale();\n  return (name: RuntimeFileCopyKey, values?: Readonly<Record<string, string>>) => {\n    const key = `monkeys.design.runtimeFiles.${name}`;\n    const translated = translate?.(key);\n    const template = translated && translated !== key ? translated : messages[name][locale.toLowerCase().startsWith('zh') ? 'zh' : 'en'];\n    return template.replace(/\\{([A-Za-z]+)\\}/g, (placeholder, variable: string) => values?.[variable] ?? placeholder);\n  };\n}\n","import { useRuntimeFileCopy, type RuntimeFileCopyKey } from './runtimeFileCopy';\nimport { ChevronDown, ChevronRight, FileText, Download, Pencil, Trash2 } from 'lucide-react';\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from '../primitives';\nimport { BaseButton, BaseInput, BaseSelect, BaseTextarea } from '../base';\nimport { DataExplorerMediaPreview } from '../data-explorer/DataExplorerMediaPreview';\nimport { renderDateTimeValue } from '../capabilities/dateTimeValue';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\n\nexport interface RuntimeFileNode { path: string; name: string; type: 'file' | 'directory'; children?: RuntimeFileNode[]; expanded?: boolean; loading?: boolean; size?: number; modified?: string; permissionsRwx?: string; mimeType?: string }\nexport interface RuntimeOpenFile { path: string; revision: string; content: string; language?: string; readOnly?: boolean }\nexport type RuntimeFilePreview =\n  | { kind: 'image'; path: string; mimeType: string; size?: number; alt?: string; src: string; contentBase64?: never }\n  | { kind: 'image'; path: string; mimeType: string; size?: number; alt?: string; src?: never; contentBase64: string }\n  | { kind: 'binary' | 'too-large'; path: string; size?: number; mimeType?: string };\nexport interface RuntimeFileDiff { identity: string; path: string; language?: string; original: string; modified: string; readOnly: true; isBinary?: boolean }\nexport interface RuntimeFileExplorerModel {\n  scopeId?: string;\n  nodes: RuntimeFileNode[]; selectedPath?: string; openFile?: RuntimeOpenFile | null;\n  preview?: RuntimeFilePreview | null; diff?: RuntimeFileDiff | null; activeView?: 'file' | 'diff'; diffStatus?: 'loading' | 'ready' | 'error'; diffErrorCode?: string;\n  viewMode?: 'simple' | 'compact' | 'detailed'; search?: string; expandedPaths?: string[];\n  saving?: boolean; disabled?: boolean; errorCode?: string; maxTextBytes?: number;\n}\nexport type RuntimeFileExplorerIntent =\n  | { type: 'select'; path: string }\n  | { type: 'delete'; path: string; kind: 'file' | 'directory' }\n  | { type: 'download'; path: string; kind: 'file' | 'directory' }\n  | { type: 'open-diff'; path: string }\n  | { type: 'expand'; path: string; expandedPaths: string[]; expanded?: boolean }\n  | { type: 'view-mode'; value: 'simple' | 'compact' | 'detailed' }\n  | { type: 'search'; value: string }\n  | { type: 'edit'; path: string; expectedRevision: string; content: string }\n  | { type: 'save'; path: string; expectedRevision: string; content: string }\n  | { type: 'create'; path: string; kind: 'file' | 'directory' }\n  | { type: 'rename'; path: string; newPath: string }\n  | { type: 'refresh' }\n  | { type: 'sourcecontrol' };\nexport interface RuntimeFileEditorContext { path: string; value: string; language?: string; readOnly: boolean; onChange(value: string): void; onSave(): void }\nexport interface RuntimeFileDraftState { path: string | null; revision: string | null; dirty: boolean }\nexport interface RuntimeFileExplorerProps {\n  model: RuntimeFileExplorerModel; onIntent?(intent: RuntimeFileExplorerIntent): void;\n  onSelect?(intent: { type: 'select'; path: string }): void;\n  onExpand?(intent: { type: 'expand'; path: string; expandedPaths: string[]; expanded?: boolean }): void;\n  onViewMode?(intent: { type: 'view-mode'; value: 'simple' | 'compact' | 'detailed' }): void;\n  onSearch?(intent: { type: 'search'; value: string }): void;\n  onEdit?(intent: { type: 'edit'; path: string; expectedRevision: string; content: string }): void;\n  onSave?(intent: { type: 'save'; path: string; expectedRevision: string; content: string }): void;\n  onCreate?(intent: { type: 'create'; path: string; kind: 'file' | 'directory' }): void | Promise<void>;\n  onRename?(intent: { type: 'rename'; path: string; newPath: string }): void | Promise<void>;\n  onDelete?(intent: { type: 'delete'; path: string; kind: 'file' | 'directory' }): void | Promise<void>;\n  onDownload?(intent: { type: 'download'; path: string; kind: 'file' | 'directory' }): void;\n  onOpenDiff?(intent: { type: 'open-diff'; path: string }): void;\n  onRefresh?(intent: { type: 'refresh';  }): void;\n  onSourceControl?(intent: { type: 'sourcecontrol';  }): void;\n  renderEditor?(context: RuntimeFileEditorContext): ReactNode;\n  renderPreview?(context: RuntimeFilePreview): ReactNode;\n  renderDiff?(context: RuntimeFileDiff): ReactNode;\n  onDraftStateChange?(state: RuntimeFileDraftState): void;\n  translate?(key: string): string;\n}\ntype Draft = RuntimeOpenFile & { value: string };\nconst bytes = (value: string) => new TextEncoder().encode(value).byteLength;\nconst fromFile = (file: RuntimeOpenFile): Draft => ({ ...file, value: file.content });\n\n/** Controlled filesystem presentation. The host owns IO, authorization and revision acceptance. */\nexport function RuntimeFileExplorer(props: RuntimeFileExplorerProps) {\n  return <RuntimeFileExplorerSession key={JSON.stringify([props.model.scopeId])} {...props} />;\n}\n\nfunction RuntimeFileExplorerSession(props: RuntimeFileExplorerProps) {\n  const { model, onIntent, renderEditor, renderPreview, renderDiff, onDraftStateChange, translate } = props;\n  const { locale } = useMonkeysLocale();\n  const copy = useRuntimeFileCopy(translate);\n  if (model.openFile && model.preview) throw new TypeError('openFile and preview are mutually exclusive.');\n  if (model.preview?.kind === 'image' && (model.preview.src !== undefined) === (model.preview.contentBase64 !== undefined)) throw new TypeError('Image requires exactly one of src and contentBase64.');\n  const active = useRef(true);\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const [narrow, setNarrow] = useState(false);\n  const [searchDraft, setSearchDraft] = useState(model.search ?? '');\n  const [treeError, setTreeError] = useState(false);\n  useEffect(() => setSearchDraft(model.search ?? ''), [model.search]);\n  useEffect(() => {\n    if (typeof window.matchMedia !== 'function') return;\n    const media = window.matchMedia('(max-width: 767px)');\n    const update = () => setNarrow(media.matches); update(); media.addEventListener('change', update);\n    return () => media.removeEventListener('change', update);\n  }, []);\n  const [draft, setDraft] = useState<Draft | null>(() => model.openFile ? fromFile(model.openFile) : null);\n  const [confirmation, setConfirmation] = useState<RuntimeFileExplorerIntent | null>(null);\n  const [conflict, setConflict] = useState(false);\n  const [entry, setEntry] = useState('');\n  const [entryMode, setEntryMode] = useState<'create' | 'rename' | null>(null);\n  const [entryTarget, setEntryTarget] = useState('');\n  const [entryKind, setEntryKind] = useState<'file' | 'directory'>('file');\n  const submitted = useRef<{ path: string; revision: string; content: string } | null>(null);\n  const allowedSwitch = useRef<string | null>(null);\n  const dirty = draft !== null && draft.value !== draft.content;\n  const limit = Number.isSafeInteger(model.maxTextBytes) && model.maxTextBytes! > 0 ? Math.min(model.maxTextBytes!, 1024 * 1024) : 1024 * 1024;\n  const tooLarge = draft !== null && bytes(draft.value) > limit;\n  const blocked = model.disabled === true || model.saving === true;\n  const readOnly = draft?.readOnly === true || (model.openFile?.path === draft?.path && model.openFile?.readOnly === true);\n  const latest = useRef({ blocked, draft, readOnly, conflict, tooLarge }); latest.current = { blocked, draft, readOnly, conflict, tooLarge };\n  const previewPath = model.preview?.path;\n  const diffRequested = model.activeView === 'diff';\n  const diffPath = model.diff?.path ?? draft?.path ?? model.selectedPath ?? '';\n  useEffect(() => {\n    if (diffRequested || model.preview) {\n      const target = diffRequested ? `diff:${diffPath}` : previewPath;\n      if (dirty && allowedSwitch.current !== target) { setConflict(true); return; }\n      if (draft) setDraft(null);\n      submitted.current = null; allowedSwitch.current = null; setConflict(false); return;\n    }\n    const file = model.openFile;\n    if (!file) { if (dirty) setConflict(true); else { setDraft(null); setConflict(false); } return; }\n    if (!draft || file.path !== draft.path) {\n      if (dirty && allowedSwitch.current !== file.path) { setConflict(true); return; }\n      allowedSwitch.current = null; submitted.current = null; setDraft(fromFile(file)); setConflict(false); return;\n    }\n    if (file.revision === draft.revision && file.content === draft.content) return;\n    const save = submitted.current;\n    if (save && save.path === file.path && file.revision !== save.revision && file.content === save.content) {\n      setDraft({ ...file, value: draft.value }); submitted.current = null; setConflict(false); return;\n    }\n    if (dirty) { setConflict(true); return; }\n    setDraft(fromFile(file)); setConflict(false);\n  }, [model.openFile?.path, model.openFile?.revision, model.openFile?.content, model.preview, diffRequested, model.diff?.identity]);\n  useEffect(() => {\n    if (!dirty) return;\n    const beforeUnload = (event: BeforeUnloadEvent) => { event.preventDefault(); event.returnValue = ''; };\n    window.addEventListener('beforeunload', beforeUnload);\n    return () => window.removeEventListener('beforeunload', beforeUnload);\n  }, [dirty]);\n  const draftCallback = useRef(onDraftStateChange); draftCallback.current = onDraftStateChange;\n  useEffect(() => { draftCallback.current?.({ path: draft?.path ?? null, revision: draft?.revision ?? null, dirty }); }, [draft?.path, draft?.revision, dirty]);\n  const route = (intent: RuntimeFileExplorerIntent) => {\n    if (!active.current) return;\n    switch (intent.type) {\n      case 'select': if (props.onSelect) return props.onSelect(intent); break;\n      case 'expand': if (props.onExpand) return props.onExpand(intent); break;\n      case 'view-mode': if (props.onViewMode) return props.onViewMode(intent); break;\n      case 'search': if (props.onSearch) return props.onSearch(intent); break;\n      case 'edit': if (props.onEdit) return props.onEdit(intent); break;\n      case 'save': if (props.onSave) return props.onSave(intent); break;\n      case 'create': if (props.onCreate) return props.onCreate(intent); break;\n      case 'rename': if (props.onRename) return props.onRename(intent); break;\n      case 'delete': if (props.onDelete) return props.onDelete(intent); break;\n      case 'download': if (props.onDownload) return props.onDownload(intent); break;\n      case 'open-diff': if (props.onOpenDiff) return props.onOpenDiff(intent); break;\n      case 'refresh': if (props.onRefresh) return props.onRefresh(intent); break;\n      case 'sourcecontrol': if (props.onSourceControl) return props.onSourceControl(intent); break;\n    }\n    onIntent?.(intent);\n  };\n  const send = (intent: RuntimeFileExplorerIntent) => {\n    if (blocked || !active.current) return;\n    if (intent.type === 'delete' || (dirty && (intent.type === 'sourcecontrol' || intent.type === 'open-diff' || intent.type === 'select' && intent.path !== draft?.path))) { setConfirmation(intent); return; }\n    route(intent);\n  };\n  const change = (value: string) => {\n    if (!active.current || latest.current.draft !== draft || !draft || blocked || latest.current.blocked || latest.current.readOnly || latest.current.conflict || readOnly || conflict || bytes(value) > limit) return;\n    setDraft({ ...draft, value }); route({ type: 'edit', path: draft.path, expectedRevision: draft.revision, content: value });\n  };\n  const save = () => {\n    if (!active.current || latest.current.draft !== draft || !draft || blocked || latest.current.blocked || latest.current.readOnly || latest.current.conflict || latest.current.tooLarge || readOnly || conflict || tooLarge || !dirty) return;\n    submitted.current = { path: draft.path, revision: draft.revision, content: draft.value };\n    route({ type: 'save', path: draft.path, expectedRevision: draft.revision, content: draft.value });\n  };\n  const effectiveView = model.viewMode === 'detailed' && narrow ? 'compact' : model.viewMode ?? 'simple';\n  const expanded = new Set(model.expandedPaths ?? (() => { const found: string[] = []; const visit = (nodes: RuntimeFileNode[]) => { for (const node of nodes) { if (node.expanded) found.push(node.path); if (node.children) visit(node.children); } }; visit(model.nodes); return found; })());\n  const query = (model.search ?? '').trim().toLocaleLowerCase(locale);\n  const filterTree = (nodes: RuntimeFileNode[]): RuntimeFileNode[] => nodes.flatMap(node => {\n    const children = node.children ? filterTree(node.children) : undefined;\n    return !query || node.name.toLocaleLowerCase(locale).includes(query) || node.path.toLocaleLowerCase(locale).includes(query) || children?.length ? [{ ...node, children }] : [];\n  });\n  const visibleNodes = filterTree(model.nodes);\n  const toggle = (node: RuntimeFileNode) => {\n    const next = new Set(expanded); if (next.has(node.path)) next.delete(node.path); else next.add(node.path);\n    if (next.size > 10000 || bytes(JSON.stringify([...next])) > 1024 * 1024) { setTreeError(true); return; }\n    setTreeError(false); send({ type: 'expand', path: node.path, expandedPaths: [...next] });\n  };\n  const metadata = (node: RuntimeFileNode) => <>\n    <span>{Number.isSafeInteger(node.size) && node.size! >= 0 ? new Intl.NumberFormat(locale).format(node.size!) : '—'}</span>\n    <span>{node.modified ? renderDateTimeValue(node.modified, 'milliseconds', locale) : '—'}</span>\n    <span>{node.permissionsRwx ?? '—'}</span><span>{node.mimeType ?? '—'}</span>\n  </>;\n  const tree = (nodes: RuntimeFileNode[]): ReactNode => <ul className=\"space-y-1\">{nodes.map(node => <li key={node.path}>\n    <div className={effectiveView === 'detailed' ? 'grid min-w-[44rem] grid-cols-[minmax(10rem,1fr)_6rem_10rem_6rem_8rem_auto] items-center gap-2' : 'flex min-w-0 items-center gap-2'}>\n      <BaseButton className=\"min-w-0 flex-1 justify-start truncate border-transparent\" classNames={{ label: 'min-w-0 truncate' }} icon={node.type === 'directory' ? expanded.has(node.path) ? <ChevronDown size={14} /> : <ChevronRight size={14} /> : <FileText size={14} />} tone={model.selectedPath === node.path ? 'primary' : 'muted'} size=\"sm\" type=\"button\" disabled={blocked || node.loading} aria-current={model.selectedPath === node.path ? 'true' : undefined} aria-expanded={node.type === 'directory' ? expanded.has(node.path) : undefined} onClick={() => node.type === 'directory' ? toggle(node) : send({ type: 'select', path: node.path })}>\n        {node.name}{node.loading ? '…' : ''}\n      </BaseButton>\n      {effectiveView === 'detailed' ? metadata(node) : effectiveView === 'compact' && node.type === 'file' ? <span className=\"text-xs text-muted-foreground\">{node.mimeType ?? ''}</span> : null}\n      <div className=\"flex shrink-0 items-center gap-1\">\n        <BaseButton size=\"sm\" tone=\"muted\" aria-label={copy('renameItem', { name: node.name })} disabled={blocked || dirty} onClick={() => { setEntryTarget(node.path); setEntry(node.path); setEntryMode('rename'); }}><Pencil size={12} /></BaseButton>\n        <BaseButton size=\"sm\" tone=\"muted\" aria-label={copy('downloadItem', { name: node.name })} disabled={blocked} onClick={() => send({ type: 'download', path: node.path, kind: node.type })}><Download size={12} /></BaseButton>\n        <BaseButton size=\"sm\" tone=\"muted\" aria-label={copy('deleteItem', { name: node.name })} disabled={blocked || readOnly} onClick={() => send({ type: 'delete', path: node.path, kind: node.type })}><Trash2 size={12} /></BaseButton>\n      </div>\n    </div>\n    {(expanded.has(node.path) || Boolean(query)) && node.children ? <div className=\"ml-3 border-l border-border pl-2\">{tree(node.children)}</div> : null}\n  </li>)}</ul>;\n  const filePath = draft?.path ?? model.preview?.path ?? model.openFile?.path;\n  const showDiff = diffRequested && !draft;\n  const preview = !draft && !showDiff ? model.preview : null;\n  const diff = model.diff;\n  const diffTooLarge = diff ? bytes(diff.original) > 1024 * 1024 || bytes(diff.modified) > 1024 * 1024 : false;\n  const renderContent = () => {\n    if (showDiff) {\n      if (model.diffStatus === 'loading') return <p role=\"status\">{copy('loadingDiff')}</p>;\n      if (model.diffStatus === 'error') return <p role=\"alert\">{copy(model.diffErrorCode === 'declarative.runtimeFiles.diffTooLarge' ? 'diffTooLarge' : 'diffUnavailable')}</p>;\n      if (diffTooLarge) return <p role=\"status\">{copy('diffTooLarge')}</p>;\n      if (!diff || diff.isBinary || !renderDiff) return <p role=\"status\">{copy('diffUnavailable')}</p>;\n      return renderDiff({ ...diff, readOnly: true });\n    }\n    if (preview) {\n      if (preview.kind === 'binary') return <p role=\"status\">{copy('binaryUnavailable')}</p>;\n      if (preview.kind === 'too-large') return <p role=\"status\">{copy('tooLarge')}</p>;\n      if (preview.kind === 'image') {\n        if (renderPreview) return renderPreview(preview);\n        return <DataExplorerMediaPreview kind=\"image\" src={preview.src} alt={preview.alt ?? preview.path} empty={copy('imageUnavailable')} error={copy('imageUnavailable')} />;\n      }\n      return null;\n    }\n    if (tooLarge) return <div role=\"status\">{copy('tooLarge')}</div>;\n    if (!draft) return <div className=\"flex min-h-64 items-center justify-center p-6 text-sm text-muted-foreground\">{copy('empty')}</div>;\n    return renderEditor ? renderEditor({ path: draft.path, value: draft.value, language: draft.language, readOnly: blocked || readOnly || conflict, onChange: change, onSave: save }) : <BaseTextarea aria-label={draft.path} value={draft.value} readOnly={blocked || readOnly || conflict} onChange={event => change(event.currentTarget.value)} onKeyDown={event => { if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 's') { event.preventDefault(); save(); } }} />;\n  };\n  return <section className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border border-border bg-background\" data-monkeys-component=\"runtime-file-explorer\" data-view-mode={effectiveView}>\n    <div className=\"flex flex-wrap items-center gap-2 border-b border-border p-3\">\n    {model.viewMode !== undefined ? <BaseSelect aria-label={copy('viewMode')} value={model.viewMode} disabled={blocked} onChange={event => { const value = event.currentTarget.value; if (value === 'simple' || value === 'compact' || value === 'detailed') send({ type: 'view-mode', value }); }}><option value=\"simple\">{copy('simple')}</option><option value=\"compact\">{copy('compact')}</option><option value=\"detailed\">{copy('detailed')}</option></BaseSelect> : null}\n    {model.search !== undefined ? <form className=\"flex min-w-0 flex-1 items-center gap-2\" onSubmit={event => { event.preventDefault(); send({ type: 'search', value: searchDraft }); }}><BaseInput className=\"min-w-0 flex-1\" aria-label={copy('searchFiles')} value={searchDraft} disabled={blocked} onChange={event => setSearchDraft(event.currentTarget.value)} /><BaseButton type=\"submit\" disabled={blocked}>{copy('search')}</BaseButton></form> : null}\n    </div>\n{treeError ? <p className=\"p-3 text-sm text-destructive-text\" role=\"alert\">{copy('tooManyExpanded')}</p> : null}\n{model.errorCode ? <p className=\"p-3 text-sm text-destructive-text\" role=\"alert\">{copy('operationFailed')}</p> : null}\n    <div className={effectiveView === 'detailed' ? 'grid min-h-0 flex-1 grid-cols-1' : 'grid min-h-0 flex-1 grid-cols-1 md:grid-cols-[minmax(16rem,24rem)_minmax(0,1fr)]'}>\n    <nav className={effectiveView === 'detailed' ? 'max-h-80 min-w-0 overflow-auto border-b border-border p-2' : 'max-h-80 min-w-0 overflow-auto border-b border-border p-2 md:max-h-none md:border-b-0 md:border-r'} aria-label={copy('files')}>{effectiveView === 'detailed' ? <div className=\"grid min-w-[44rem] grid-cols-[minmax(10rem,1fr)_6rem_10rem_6rem_8rem_auto] gap-2 text-xs text-muted-foreground\">{(['name', 'size', 'modified', 'permissions', 'type', 'actions'] as RuntimeFileCopyKey[]).map(label => <span key={label}>{copy(label)}</span>)}</div> : null}{visibleNodes.length ? tree(visibleNodes) : <p className=\"p-3 text-sm text-muted-foreground\">{copy('emptyTree')}</p>}</nav>\n    <div className=\"flex min-h-0 min-w-0 flex-col\">\n    <div className=\"flex flex-wrap items-center gap-1 border-b border-border p-2\" role=\"toolbar\" aria-label={copy('actions')}>\n      <BaseButton disabled={blocked} onClick={() => send({ type: 'refresh' })}>{copy('refresh')}</BaseButton>\n      <BaseButton disabled={blocked} onClick={() => send({ type: 'sourcecontrol' })}>{copy('sourceControl')}</BaseButton>\n      <BaseButton disabled={blocked} onClick={() => { setEntryMode('create'); setEntry(''); }}>{copy('create')}</BaseButton>\n      <BaseButton disabled={blocked || !draft || readOnly || dirty} onClick={() => { setEntryTarget(draft?.path ?? ''); setEntryMode('rename'); setEntry(draft?.path ?? ''); }}>{copy('rename')}</BaseButton>\n      <BaseButton disabled={blocked || !draft || readOnly} onClick={() => draft && send({ type: 'delete', path: draft.path, kind: 'file' })}>{copy('delete')}</BaseButton>\n      <BaseButton disabled={blocked || !filePath} onClick={() => filePath && send({ type: 'download', path: filePath, kind: 'file' })}>{copy('download')}</BaseButton>\n      <BaseButton disabled={blocked || !filePath} onClick={() => filePath && send({ type: 'open-diff', path: filePath })}>{copy('diff')}</BaseButton>\n      <BaseButton disabled={blocked || !dirty || !draft || readOnly || conflict || tooLarge} onClick={save}>{copy('save')}</BaseButton>\n    </div>\n    {entryMode ? <form className=\"flex flex-wrap items-center gap-2 border-b border-border p-3\" onSubmit={async event => { event.preventDefault(); if (blocked || !entry.trim() || (entryMode === 'rename' && (readOnly || dirty))) return; try { if (entryMode === 'rename') await route({ type: 'rename', path: entryTarget, newPath: entry.trim() }); else await route({ type: 'create', path: entry.trim(), kind: entryKind }); setEntryMode(null); } catch { /* The host exposes command errors while the entry remains editable. */ } }}>\n      {entryMode === 'create' ? <BaseSelect aria-label={copy('kind')} value={entryKind} disabled={blocked} onChange={event => setEntryKind(event.currentTarget.value === 'directory' ? 'directory' : 'file')}><option value=\"file\">{copy('file')}</option><option value=\"directory\">{copy('directory')}</option></BaseSelect> : null}\n      <BaseInput aria-label={copy('path')} value={entry} disabled={blocked} onChange={event => setEntry(event.currentTarget.value)} /><BaseButton type=\"submit\" disabled={blocked || !entry.trim()}>{copy('apply')}</BaseButton><BaseButton type=\"button\" onClick={() => setEntryMode(null)}>{copy('cancel')}</BaseButton>\n    </form> : null}\n    {conflict ? <div role=\"alert\">{copy('changedExternally')}<BaseButton disabled={blocked} onClick={() => setConfirmation(diffRequested ? { type: 'open-diff', path: diffPath } : { type: 'select', path: model.preview?.path ?? model.openFile?.path ?? draft?.path ?? '' })}>{copy('discardReload')}</BaseButton></div> : null}\n    <div className=\"min-h-80 min-w-0 flex-1 overflow-auto\">{renderContent()}</div>\n    </div></div>\n    {confirmation ? <Dialog open onOpenChange={open => { if (!open && !blocked) setConfirmation(null); }}><DialogContent onEscapeKeyDown={event => { if (blocked) event.preventDefault(); }} onPointerDownOutside={event => { if (blocked) event.preventDefault(); }}><DialogTitle>{copy('confirmAction')}</DialogTitle>{model.errorCode ? <p role=\"alert\">{copy('operationFailed')}</p> : null}<DialogDescription>{copy(confirmation.type === 'delete' ? 'deleteConfirm' : 'discardConfirm')}</DialogDescription>\n      <BaseButton disabled={blocked || (confirmation.type === 'delete' && readOnly)} onClick={async () => { if (blocked || (confirmation.type === 'delete' && readOnly)) return; if (confirmation.type === 'open-diff') { allowedSwitch.current = `diff:${confirmation.path}`; if (diffRequested && confirmation.path === diffPath) { setDraft(null); setConflict(false); allowedSwitch.current = null; } } if (confirmation.type === 'select') { allowedSwitch.current = confirmation.path; if (model.preview?.path === confirmation.path) { setDraft(null); setConflict(false); allowedSwitch.current = null; } else if (model.openFile?.path === confirmation.path) { setDraft(fromFile(model.openFile)); setConflict(false); allowedSwitch.current = null; } } try { await route(confirmation); setConfirmation(null); } catch { /* The host keeps the failure visible for retry. */ } }}>{copy('confirm')}</BaseButton>\n      <BaseButton disabled={blocked} onClick={() => setConfirmation(null)}>{copy('cancel')}</BaseButton>\n    </DialogContent></Dialog> : null}\n  </section>;\n}\n","export const DESIGN_CAPABILITY_I18N_KEYS = Object.freeze({\n  numericSeries: Object.freeze({\n    inspect: \"monkeys.design.capability.numericSeries.inspect\",\n    noPoints: \"monkeys.design.capability.numericSeries.noPoints\",\n    point: \"monkeys.design.capability.numericSeries.point\",\n    label: \"monkeys.design.capability.numericSeries.label\",\n    description: \"monkeys.design.capability.numericSeries.description\",\n    start: \"monkeys.design.capability.numericSeries.start\",\n    end: \"monkeys.design.capability.numericSeries.end\",\n    reset: \"monkeys.design.capability.numericSeries.reset\",\n    expand: \"monkeys.design.capability.numericSeries.expand\",\n    close: \"monkeys.design.capability.numericSeries.close\",\n  }),\n\n  catalog: Object.freeze({\n    shellLayout: Object.freeze({\n      label: \"monkeys.design.catalog.shellLayout.label\",\n      description: \"monkeys.design.catalog.shellLayout.description\",\n    }),\n    sidebarFilter: Object.freeze({\n      label: \"monkeys.design.catalog.sidebarFilter.label\",\n      description: \"monkeys.design.catalog.sidebarFilter.description\",\n    }),\n    ontologyNavigator: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyNavigator.label\",\n      description: \"monkeys.design.catalog.ontologyNavigator.description\",\n    }),\n    dataToolbar: Object.freeze({\n      label: \"monkeys.design.catalog.dataToolbar.label\",\n      description: \"monkeys.design.catalog.dataToolbar.description\",\n    }),\n    ontologyTable: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyTable.label\",\n      description: \"monkeys.design.catalog.ontologyTable.description\",\n    }),\n    cardGrid: Object.freeze({\n      label: \"monkeys.design.catalog.cardGrid.label\",\n      description: \"monkeys.design.catalog.cardGrid.description\",\n    }),\n    pagination: Object.freeze({\n      label: \"monkeys.design.catalog.pagination.label\",\n      description: \"monkeys.design.catalog.pagination.description\",\n    }),\n    recordDetail: Object.freeze({\n      label: \"monkeys.design.catalog.recordDetail.label\",\n      description: \"monkeys.design.catalog.recordDetail.description\",\n    }),\n    recordEditor: Object.freeze({\n      label: \"monkeys.design.catalog.recordEditor.label\",\n      description: \"monkeys.design.catalog.recordEditor.description\",\n    }),\n    recordHistory: Object.freeze({\n      label: \"monkeys.design.catalog.recordHistory.label\",\n      description: \"monkeys.design.catalog.recordHistory.description\",\n    }),\n    ontologyManagement: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyManagement.label\",\n      description: \"monkeys.design.catalog.ontologyManagement.description\",\n    }),\n    featureColumnManager: Object.freeze({\n      label: \"monkeys.design.catalog.featureColumnManager.label\",\n      description: \"monkeys.design.catalog.featureColumnManager.description\",\n    }),\n    ontologyTrendMatrix: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyTrendMatrix.label\",\n      description: \"monkeys.design.catalog.ontologyTrendMatrix.description\",\n    }),\n    dataContextBar: Object.freeze({\n      label: \"monkeys.design.catalog.dataContextBar.label\",\n      description: \"monkeys.design.catalog.dataContextBar.description\",\n    }),\n    gallery: Object.freeze({\n      label: \"monkeys.design.catalog.gallery.label\",\n      description: \"monkeys.design.catalog.gallery.description\",\n    }),\n    sectionHeader: Object.freeze({\n      label: \"monkeys.design.catalog.sectionHeader.label\",\n      description: \"monkeys.design.catalog.sectionHeader.description\",\n    }),\n    notice: Object.freeze({\n      label: \"monkeys.design.catalog.notice.label\",\n      description: \"monkeys.design.catalog.notice.description\",\n    }),\n    descriptionList: Object.freeze({\n      label: \"monkeys.design.catalog.descriptionList.label\",\n      description: \"monkeys.design.catalog.descriptionList.description\",\n    }),\n    contentPanel: Object.freeze({\n      label: \"monkeys.design.catalog.contentPanel.label\",\n      description: \"monkeys.design.catalog.contentPanel.description\",\n    }),\n    toolbar: Object.freeze({\n      label: \"monkeys.design.catalog.toolbar.label\",\n      description: \"monkeys.design.catalog.toolbar.description\",\n    }),\n    status: Object.freeze({\n      label: \"monkeys.design.catalog.status.label\",\n      description: \"monkeys.design.catalog.status.description\",\n    }),\n    professionalLeaf: Object.freeze({\n      label: \"monkeys.design.catalog.professionalLeaf.label\",\n      description: \"monkeys.design.catalog.professionalLeaf.description\",\n    }),\n  }),\n  status: Object.freeze({\n    loading: Object.freeze({\n      title: \"monkeys.design.capability.status.loading.title\",\n      description: \"monkeys.design.capability.status.loading.description\",\n    }),\n    empty: Object.freeze({\n      title: \"monkeys.design.capability.status.empty.title\",\n      description: \"monkeys.design.capability.status.empty.description\",\n    }),\n    error: Object.freeze({\n      title: \"monkeys.design.capability.status.error.title\",\n      description: \"monkeys.design.capability.status.error.description\",\n    }),\n    forbidden: Object.freeze({\n      title: \"monkeys.design.capability.status.forbidden.title\",\n      description: \"monkeys.design.capability.status.forbidden.description\",\n    }),\n    retry: \"monkeys.design.capability.status.retry.label\",\n  }),\n  shellLayout: Object.freeze({\n    resizeSidebar: \"monkeys.design.capability.shellLayout.resizeSidebar\",\n    collapseSidebar: \"monkeys.design.capability.shellLayout.collapseSidebar\",\n    expandSidebar: \"monkeys.design.capability.shellLayout.expandSidebar\",\n    resizeAside: \"monkeys.design.capability.shellLayout.resizeAside\",\n  }),\n  sidebarFilter: Object.freeze({\n    title: \"monkeys.design.capability.sidebarFilter.title\",\n    searchLabel: \"monkeys.design.capability.sidebarFilter.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.sidebarFilter.search.placeholder\",\n    groupLabel: \"monkeys.design.capability.sidebarFilter.group.label\",\n    optionLabel: \"monkeys.design.capability.sidebarFilter.option.label\",\n  }),\n  gallery: Object.freeze({\n    itemTitle: \"monkeys.design.capability.gallery.item.title\",\n    itemActivate: \"monkeys.design.capability.gallery.item.activate\",\n    loadMore: \"monkeys.design.capability.gallery.pagination.loadMore\",\n    loadingMore: \"monkeys.design.capability.gallery.pagination.loadingMore\",\n  }),\n  ontologyNavigator: Object.freeze({\n    empty: \"monkeys.design.capability.ontologyNavigator.empty\",\n    moreActions: \"monkeys.design.capability.ontologyNavigator.moreActions\",\n    searchLabel: \"monkeys.design.capability.ontologyNavigator.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.ontologyNavigator.search.placeholder\",\n    loadMore: \"monkeys.design.capability.ontologyNavigator.loadMore\",\n    loadingMore: \"monkeys.design.capability.ontologyNavigator.loadingMore\",\n  }),\n  dataToolbar: Object.freeze({\n    addRow: \"monkeys.design.capability.dataToolbar.addRow\",\n    blankRowName: \"monkeys.design.capability.dataToolbar.blankRowName\",\n    searchPlaceholder:\n      \"monkeys.design.capability.dataToolbar.search.placeholder\",\n    selection: \"monkeys.design.capability.dataToolbar.selection\",\n    gallerySettings: \"monkeys.design.capability.dataToolbar.gallerySettings\",\n    galleryPresentation: {\n      visibleColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.visibleColumns\",\n      coverField: \"monkeys.design.capability.dataToolbar.galleryPresentation.coverField\",\n      autoDetect: \"monkeys.design.capability.dataToolbar.galleryPresentation.autoDetect\",\n      cardDensity: \"monkeys.design.capability.dataToolbar.galleryPresentation.cardDensity\",\n      cardColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.cardColumns\",\n      detailColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.detailColumns\",\n      fieldVisibility: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldVisibility\",\n      fieldLimit: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldLimit\",\n      fieldLimitHint: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldLimitHint\",\n      layout: \"monkeys.design.capability.dataToolbar.galleryPresentation.layout\",\n      compact: \"monkeys.design.capability.dataToolbar.galleryPresentation.compact\",\n      comfortable: \"monkeys.design.capability.dataToolbar.galleryPresentation.comfortable\",\n      detailed: \"monkeys.design.capability.dataToolbar.galleryPresentation.detailed\",\n      autoColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.autoColumns\",\n      columns: \"monkeys.design.capability.dataToolbar.galleryPresentation.columns\",\n      bentoColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.bentoColumns\",\n      topLimit: \"monkeys.design.capability.dataToolbar.galleryPresentation.topLimit\",\n      allFields: \"monkeys.design.capability.dataToolbar.galleryPresentation.allFields\",\n      adaptiveGrid: \"monkeys.design.capability.dataToolbar.galleryPresentation.adaptiveGrid\",\n      masonry: \"monkeys.design.capability.dataToolbar.galleryPresentation.masonry\",\n    },\n  }),\n  ontologyTable: Object.freeze({\n    label: \"monkeys.design.capability.ontologyTable.label\",\n    empty: \"monkeys.design.capability.ontologyTable.empty\",\n    activate: \"monkeys.design.capability.ontologyTable.activate\",\n    select: \"monkeys.design.capability.ontologyTable.select\",\n    sort: \"monkeys.design.capability.ontologyTable.sort\",\n    loadMore: \"monkeys.design.capability.ontologyTable.loadMore\",\n    loadingMore: \"monkeys.design.capability.ontologyTable.loadingMore\",\n  }),\n  cardGrid: Object.freeze({\n    empty: \"monkeys.design.capability.cardGrid.empty\",\n    activate: \"monkeys.design.capability.cardGrid.activate\",\n    select: \"monkeys.design.capability.cardGrid.select\",\n    loadMore: \"monkeys.design.capability.cardGrid.loadMore\",\n    loadingMore: \"monkeys.design.capability.cardGrid.loadingMore\",\n  }),\n  pagination: Object.freeze({\n    label: \"monkeys.design.capability.pagination.label\",\n    loadMore: \"monkeys.design.capability.pagination.loadMore\",\n    loadingMore: \"monkeys.design.capability.pagination.loadingMore\",\n  }),\n  recordDetail: Object.freeze({\n    edit: \"monkeys.design.capability.recordDetail.edit\",\n    close: \"monkeys.design.capability.recordDetail.close\",\n    attachments: \"monkeys.design.capability.recordDetail.attachments\",\n    previous: \"monkeys.design.capability.recordDetail.previous\",\n    next: \"monkeys.design.capability.recordDetail.next\",\n  }),\n  recordEditor: Object.freeze({\n    submit: \"monkeys.design.capability.recordEditor.submit\",\n    cancel: \"monkeys.design.capability.recordEditor.cancel\",\n    optionsEmpty: \"monkeys.design.capability.recordEditor.options.empty\",\n    optionsLoadMore: \"monkeys.design.capability.recordEditor.options.loadMore\",\n    optionsLoadingMore:\n      \"monkeys.design.capability.recordEditor.options.loadingMore\",\n    jsonInvalid: \"monkeys.design.capability.recordEditor.json.invalid\",\n  }),\n  recordHistory: Object.freeze({\n    title: \"monkeys.design.capability.recordHistory.title\",\n    close: \"monkeys.design.capability.recordHistory.close\",\n    commits: \"monkeys.design.capability.recordHistory.commits\",\n    loadMore: \"monkeys.design.capability.recordHistory.loadMore\",\n    loadingMore: \"monkeys.design.capability.recordHistory.loadingMore\",\n    selected: \"monkeys.design.capability.recordHistory.selected\",\n    diff: \"monkeys.design.capability.recordHistory.diff\",\n    field: \"monkeys.design.capability.recordHistory.diff.field\",\n    before: \"monkeys.design.capability.recordHistory.diff.before\",\n    after: \"monkeys.design.capability.recordHistory.diff.after\",\n    noDiff: \"monkeys.design.capability.recordHistory.diff.empty\",\n    reason: \"monkeys.design.capability.recordHistory.reason\",\n    reasonDescription:\n      \"monkeys.design.capability.recordHistory.reason.description\",\n    rollback: \"monkeys.design.capability.recordHistory.rollback\",\n    delete: \"monkeys.design.capability.recordHistory.delete\",\n  }),\n  ontologyManagement: Object.freeze({\n    title: \"monkeys.design.capability.ontologyManagement.title\",\n    markerDescription: \"monkeys.design.capability.ontologyManagement.markerDescription\",\n    create: \"monkeys.design.capability.ontologyManagement.create\",\n    edit: \"monkeys.design.capability.ontologyManagement.edit\",\n    delete: \"monkeys.design.capability.ontologyManagement.delete\",\n    import: \"monkeys.design.capability.ontologyManagement.import\",\n    description: \"monkeys.design.capability.ontologyManagement.description\",\n    submit: \"monkeys.design.capability.ontologyManagement.submit\",\n    cancel: \"monkeys.design.capability.ontologyManagement.cancel\",\n    displayName:\n      \"monkeys.design.capability.ontologyManagement.field.displayName\",\n    label: \"monkeys.design.capability.ontologyManagement.field.label\",\n    templateKey:\n      \"monkeys.design.capability.ontologyManagement.field.templateKey\",\n    templateName:\n      \"monkeys.design.capability.ontologyManagement.field.templateName\",\n    templateDescription:\n      \"monkeys.design.capability.ontologyManagement.field.templateDescription\",\n    templateTags:\n      \"monkeys.design.capability.ontologyManagement.field.templateTags\",\n    templateTagsDescription:\n      \"monkeys.design.capability.ontologyManagement.field.templateTagsDescription\",\n    creatorCurrentUser:\n      \"monkeys.design.capability.ontologyManagement.field.creatorCurrentUser\",\n    creatorCurrentUserShort:\n      \"monkeys.design.capability.ontologyManagement.field.creatorCurrentUserShort\",\n    defaultViewTemplatesDescription:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplatesDescription\",\n    defaultViewTemplate:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplate\",\n    defaultSelectedView:\n      \"monkeys.design.capability.ontologyManagement.field.defaultSelectedView\",\n    tagFilterEnabled:\n      \"monkeys.design.capability.ontologyManagement.field.tagFilterEnabled\",\n    tagFilterEmpty:\n      \"monkeys.design.capability.ontologyManagement.field.tagFilterEmpty\",\n    tableColumnsSummary:\n      \"monkeys.design.capability.ontologyManagement.field.tableColumnsSummary\",\n    editTemplateDetails:\n      \"monkeys.design.capability.ontologyManagement.field.editTemplateDetails\",\n    editTemplateDetailsDescription:\n      \"monkeys.design.capability.ontologyManagement.field.editTemplateDetailsDescription\",\n    filterInclude:\n      \"monkeys.design.capability.ontologyManagement.filter.include\",\n    filterAny: \"monkeys.design.capability.ontologyManagement.filter.any\",\n    filterExclude:\n      \"monkeys.design.capability.ontologyManagement.filter.exclude\",\n    filterNoTags: \"monkeys.design.capability.ontologyManagement.filter.noTags\",\n    filterSearch: \"monkeys.design.capability.ontologyManagement.filter.search\",\n    filterTagGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.tagGroup\",\n    filterAllGroups:\n      \"monkeys.design.capability.ontologyManagement.filter.allGroups\",\n    filterAddOrGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.addOrGroup\",\n    filterNoOrGroups:\n      \"monkeys.design.capability.ontologyManagement.filter.noOrGroups\",\n    filterOrGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.orGroup\",\n    filterDeleteGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.deleteGroup\",\n    filterSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.supplement\",\n    filterConfigureSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.configureSupplement\",\n    filterClearSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.clearSupplement\",\n    filterSupplementMode:\n      \"monkeys.design.capability.ontologyManagement.filter.supplementMode\",\n    filterModeOr: \"monkeys.design.capability.ontologyManagement.filter.modeOr\",\n    filterModeAnd:\n      \"monkeys.design.capability.ontologyManagement.filter.modeAnd\",\n    filterModeCombination:\n      \"monkeys.design.capability.ontologyManagement.filter.modeCombination\",\n    filterRequiredAll:\n      \"monkeys.design.capability.ontologyManagement.filter.requiredAll\",\n    filterRequiredAny:\n      \"monkeys.design.capability.ontologyManagement.filter.requiredAny\",\n    filterAdvancedRules:\n      \"monkeys.design.capability.ontologyManagement.filter.advancedRules\",\n    filterAdvancedRulesDescription:\n      \"monkeys.design.capability.ontologyManagement.filter.advancedRulesDescription\",\n    filterRemoveAdvancedRules:\n      \"monkeys.design.capability.ontologyManagement.filter.removeAdvancedRules\",\n    defaultViewTemplates:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplates\",\n    markerExists:\n      \"monkeys.design.capability.ontologyManagement.field.markerExists\",\n    targetOntology:\n      \"monkeys.design.capability.ontologyManagement.field.targetOntology\",\n    deleteTemplate:\n      \"monkeys.design.capability.ontologyManagement.action.deleteTemplate\",\n    deleteMarker:\n      \"monkeys.design.capability.ontologyManagement.action.deleteMarker\",\n    createDefaultViews:\n      \"monkeys.design.capability.ontologyManagement.action.createDefaultViews\",\n    techpackPreset:\n      \"monkeys.design.capability.ontologyManagement.action.techpackPreset\",\n    trendPreset:\n      \"monkeys.design.capability.ontologyManagement.action.trendPreset\",\n    addTemplate:\n      \"monkeys.design.capability.ontologyManagement.action.addTemplate\",\n    noTemplates:\n      \"monkeys.design.capability.ontologyManagement.empty.noTemplates\",\n    descriptionField:\n      \"monkeys.design.capability.ontologyManagement.field.description\",\n    bodyKind: \"monkeys.design.capability.ontologyManagement.field.bodyKind\",\n    visible: \"monkeys.design.capability.ontologyManagement.field.visible\",\n    kernelReadAllTeams:\n      \"monkeys.design.capability.ontologyManagement.field.kernelReadAllTeams\",\n    publicRead: \"monkeys.design.capability.ontologyManagement.field.publicRead\",\n    publicWrite:\n      \"monkeys.design.capability.ontologyManagement.field.publicWrite\",\n    customizeViewModes:\n      \"monkeys.design.capability.ontologyManagement.field.customizeViewModes\",\n    availableViewModes:\n      \"monkeys.design.capability.ontologyManagement.field.availableViewModes\",\n    defaultViewMode:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewMode\",\n    viewModeTable:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.table\",\n    viewModeCard:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.card\",\n    viewModeGallery:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.gallery\",\n    viewModeTrendMatrix:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.trendMatrix\",\n    selectAtLeastOneViewMode:\n      \"monkeys.design.capability.ontologyManagement.field.validation.selectAtLeastOneViewMode\",\n    profile: \"monkeys.design.capability.ontologyManagement.field.profile\",\n    sourceOntologyId:\n      \"monkeys.design.capability.ontologyManagement.field.sourceOntologyId\",\n    viewId: \"monkeys.design.capability.ontologyManagement.field.viewId\",\n    name: \"monkeys.design.capability.ontologyManagement.field.name\",\n    indexMode: \"monkeys.design.capability.ontologyManagement.field.indexMode\",\n    parentId: \"monkeys.design.capability.ontologyManagement.field.parentId\",\n    viewType:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.label\",\n    viewTypeFilter:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.filter\",\n    viewTypeContainer:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.container\",\n    sourceContainerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.sourceContainerViewId\",\n    displayConfig:\n      \"monkeys.design.capability.ontologyManagement.field.displayConfig\",\n    sort: \"monkeys.design.capability.ontologyManagement.field.sort\",\n    managedFileId:\n      \"monkeys.design.capability.ontologyManagement.field.managedFileId\",\n    mode: \"monkeys.design.capability.ontologyManagement.field.mode\",\n    columnId: \"monkeys.design.capability.ontologyManagement.field.columnId\",\n    containerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.containerViewId\",\n    type: \"monkeys.design.capability.ontologyManagement.field.type\",\n    config: \"monkeys.design.capability.ontologyManagement.field.config\",\n    scopeContainerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.scopeContainerViewId\",\n    attached:\n      \"monkeys.design.capability.ontologyManagement.field.attached.label\",\n    attachedTrue:\n      \"monkeys.design.capability.ontologyManagement.field.attached.true\",\n    attachedFalse:\n      \"monkeys.design.capability.ontologyManagement.field.attached.false\",\n    pageSize: \"monkeys.design.capability.ontologyManagement.field.pageSize\",\n    tagGroupIds:\n      \"monkeys.design.capability.ontologyManagement.field.tagGroupIds\",\n    featureColumnIds:\n      \"monkeys.design.capability.ontologyManagement.field.featureColumnIds\",\n    basicFieldIds:\n      \"monkeys.design.capability.ontologyManagement.field.basicFieldIds\",\n    columnType:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.label\",\n    columnTypeFeature:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.feature\",\n    columnTypePreview:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.preview\",\n    featureColumnId:\n      \"monkeys.design.capability.ontologyManagement.field.featureColumnId\",\n    itemLimit: \"monkeys.design.capability.ontologyManagement.field.itemLimit\",\n    shareOperation:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.label\",\n    shareOperationUpsert:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.upsert\",\n    shareOperationRevoke:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.revoke\",\n    targetType:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.label\",\n    targetTypeUser:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.user\",\n    targetTypeTeam:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.team\",\n    targetId: \"monkeys.design.capability.ontologyManagement.field.targetId\",\n    permissions:\n      \"monkeys.design.capability.ontologyManagement.field.permissions\",\n    expiresAt: \"monkeys.design.capability.ontologyManagement.field.expiresAt\",\n    actions: Object.freeze({\n      \"ontology-create\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyCreate\",\n      \"ontology-update\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyUpdate\",\n      \"ontology-delete\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyDelete\",\n      \"ontology-marker\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyMarker\",\n      \"ontology-default-views\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyDefaultViews\",\n      \"ontology-snapshot\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologySnapshot\",\n      \"ontology-import-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportJsonl\",\n      \"ontology-import-records-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportRecordsJsonl\",\n      \"ontology-import-tag-relations-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportTagRelationsJsonl\",\n      \"ontology-import-text-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportTextColumnJsonl\",\n      \"ontology-import-json-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportJsonColumnJsonl\",\n      \"ontology-import-relation-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportRelationColumnJsonl\",\n      \"feature-column-create\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnCreate\",\n      \"feature-column-update\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnUpdate\",\n      \"feature-column-attachment-set\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnAttachmentSet\",\n      \"view-export-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.viewExportJsonl\",\n      \"feature-column-images-export\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnImagesExport\",\n      \"view-create\":\n        \"monkeys.design.capability.ontologyManagement.action.viewCreate\",\n      \"view-update\":\n        \"monkeys.design.capability.ontologyManagement.action.viewUpdate\",\n      \"view-delete\":\n        \"monkeys.design.capability.ontologyManagement.action.viewDelete\",\n      \"view-share\":\n        \"monkeys.design.capability.ontologyManagement.action.viewShare\",\n    }),\n  }),\n  ontologyTrendMatrix: Object.freeze({\n    label: \"monkeys.design.capability.ontologyTrendMatrix.label\",\n    row: \"monkeys.design.capability.ontologyTrendMatrix.row\",\n    window: \"monkeys.design.capability.ontologyTrendMatrix.window\",\n    select: \"monkeys.design.capability.ontologyTrendMatrix.select\",\n  }),\n  dataContextBar: Object.freeze({\n    label: \"monkeys.design.capability.dataContextBar.label\",\n    filter: \"monkeys.design.capability.dataContextBar.filter\",\n    searchLabel: \"monkeys.design.capability.dataContextBar.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.dataContextBar.search.placeholder\",\n    clear: \"monkeys.design.capability.dataContextBar.clear\",\n    clearAll: \"monkeys.design.capability.dataContextBar.clearAll\",\n    tagFilterClear: \"monkeys.design.capability.dataContextBar.tagFilterClear\",\n    filterDescription:\n      \"monkeys.design.capability.dataContextBar.filterDescription\",\n    tagScope: \"monkeys.design.capability.dataContextBar.tagScope\",\n    currentViewTags: \"monkeys.design.capability.dataContextBar.currentViewTags\",\n    allTags: \"monkeys.design.capability.dataContextBar.allTags\",\n    panelFilter: \"monkeys.design.capability.dataContextBar.panelFilter\",\n    searchTags: \"monkeys.design.capability.dataContextBar.searchTags\",\n    noAvailableTags: \"monkeys.design.capability.dataContextBar.noAvailableTags\",\n    loadedAll: \"monkeys.design.capability.dataContextBar.loadedAll\",\n    refreshTags: \"monkeys.design.capability.dataContextBar.refreshTags\",\n    confirm: \"monkeys.design.capability.dataContextBar.confirm\",\n    tagPanel: \"monkeys.design.capability.dataContextBar.tagPanel\",\n    selectPanel: \"monkeys.design.capability.dataContextBar.selectPanel\",\n    noPanels: \"monkeys.design.capability.dataContextBar.noPanels\",\n    noPanelGroups: \"monkeys.design.capability.dataContextBar.noPanelGroups\",\n    singleSelect: \"monkeys.design.capability.dataContextBar.singleSelect\",\n    multiSelect: \"monkeys.design.capability.dataContextBar.multiSelect\",\n    defaultGroup: \"monkeys.design.capability.dataContextBar.defaultGroup\",\n    more: \"monkeys.design.capability.dataContextBar.more\",\n    dashboardContext:\n      \"monkeys.design.capability.dataContextBar.dashboardContext\",\n    contextCount: \"monkeys.design.capability.dataContextBar.contextCount\",\n    fields: Object.freeze({\n      search: \"monkeys.design.capability.dataContextBar.field.search\",\n      tagIds: \"monkeys.design.capability.dataContextBar.field.tagIds\",\n      tagGroupIds: \"monkeys.design.capability.dataContextBar.field.tagGroupIds\",\n      timeFrom: \"monkeys.design.capability.dataContextBar.field.timeFrom\",\n      timeTo: \"monkeys.design.capability.dataContextBar.field.timeTo\",\n      clickedField:\n        \"monkeys.design.capability.dataContextBar.field.clickedField\",\n      clickedValue:\n        \"monkeys.design.capability.dataContextBar.field.clickedValue\",\n      dashboardDrilldown:\n        \"monkeys.design.capability.dataContextBar.field.dashboardDrilldown\",\n    }),\n  }),\n});\n\nexport const DESIGN_CAPABILITY_NATIVE_ANALYTICS_MESSAGES = Object.freeze({\n  \"en-US\": Object.freeze({\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerDescription]: \"Configure the ontology marker and default views.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.label]: \"Marker name\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.targetOntology]: \"Target ontology\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateKey]: \"Template key\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateName]: \"View name\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateDescription]: \"View description\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTags]: \"Tag filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTagsDescription]: \"Choose the tags included, matched, or excluded by this view.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUser]: \"Only show records created by the current user\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUserShort]: \"Current user\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplatesDescription]: \"Configure default views and their filters for this ontology.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplate]: \"Default view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultSelectedView]: \"Open by default\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEnabled]: \"Tag filters configured\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEmpty]: \"No tag filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tableColumnsSummary]: \"{count} table columns configured\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetails]: \"Edit view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetailsDescription]: \"Configure the name, order, and filters.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplates]: \"Default view templates\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerExists]: \"Ontology marker exists\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterInclude]: \"Include all\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAny]: \"Match any\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterExclude]: \"Exclude\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoTags]: \"No matching tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSearch]: \"Search tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterTagGroup]: \"Tag group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAllGroups]: \"All tag groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAddOrGroup]: \"Add OR group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoOrGroups]: \"No OR groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterOrGroup]: \"OR group {n}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterDeleteGroup]: \"Delete group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplement]: \"Supplement rules for {name}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterConfigureSupplement]: \"Configure supplement rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterClearSupplement]: \"Clear supplement rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplementMode]: \"Match mode\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeOr]: \"Any condition (OR)\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeAnd]: \"All conditions (AND)\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeCombination]: \"Combined conditions\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAll]: \"Require all tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAny]: \"Require at least one tag\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRules]: \"{count} advanced rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRulesDescription]: \"Existing rules are preserved unless explicitly removed.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRemoveAdvancedRules]: \"Remove advanced rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteTemplate]: \"Delete template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteMarker]: \"Delete marker\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.createDefaultViews]: \"Create default views\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.addTemplate]: \"Add view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.noTemplates]: \"No default view templates\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.actions[\"ontology-marker\"]]: \"Set ontology marker\",\n    \"monkeys.design.capability.pagination.previous\": \"Previous page\",\n    \"monkeys.design.capability.pagination.next\": \"Next page\",\n    \"monkeys.design.iconPicker.confirm\": \"Confirm\",\n    \"monkeys.design.iconPicker.categories\": \"Categories\",\n    \"monkeys.design.iconPicker.icon\": \"Icon\",\n    \"monkeys.design.iconPicker.choose\": \"Choose an icon\",\n    \"monkeys.design.iconPicker.current\": \"Current icon\",\n    \"monkeys.design.iconPicker.reset\": \"Reset\",\n    \"monkeys.design.iconPicker.search\": \"Search icons\",\n    \"monkeys.design.iconPicker.category\": \"Category\",\n    \"monkeys.design.iconPicker.background\": \"Background color\",\n    \"monkeys.design.iconPicker.upload\": \"Upload icon\",\n    \"monkeys.design.iconPicker.uploadFailed\": \"Icon upload failed\",\n    \"monkeys.design.iconPicker.loading\": \"Loading icons\",\n    \"monkeys.design.iconPicker.retry\": \"Retry\",\n    \"monkeys.design.iconPicker.empty\": \"No matching icons\",\n    \"monkeys.design.iconPicker.close\": \"Close\",\n    \"monkeys.design.iconPicker.emoji\": \"Emoji\",\n    \"monkeys.design.iconPicker.catalogFailed\": \"Unable to load icons\",\n\n    \"monkeys.design.capability.choicePicker.label\": \"Choice picker\",\n    \"monkeys.design.capability.choicePicker.description\": \"Search and select a paginated collection.\",\n    \"monkeys.design.capability.runtimeTerminal.status\": \"Terminal\",\n    \"monkeys.design.capability.runtimeTerminal.waiting\": \"Connecting to terminal…\",\n    \"monkeys.design.capability.recordEditor.add\": \"Add item\",\n    \"monkeys.design.capability.recordEditor.remove\": \"Remove item\",\n    \"monkeys.design.capability.recordEditor.moveUp\": \"Move up\",\n    \"monkeys.design.capability.recordEditor.moveDown\": \"Move down\",\n    \"monkeys.design.capability.recordEditor.reset\": \"Reset\",\n    \"monkeys.design.capability.filePicker.label\": \"Choose file\",\n    \"monkeys.design.capability.filePicker.description\": \"Select a local file for a governed action.\",\n    \"monkeys.design.capability.filePicker.cancel\": \"Clear file\",\n    \"monkeys.design.capability.filePicker.tooLarge\": \"The file exceeds the allowed size.\",\n    \"monkeys.design.capability.filePicker.invalidType\": \"Choose a supported file type.\",\n    \"monkeys.design.capability.filePicker.registrationFailed\": \"The file could not be selected. Try again.\",\n    \"monkeys.design.capability.recordEditor.date.invalid\": \"Enter a valid date and time within the allowed range.\",\n    \"monkeys.design.capability.recordEditor.pick\": \"Choose\",\n    \"monkeys.design.capability.recordEditor.selectionSummary\": \"Selected: {{count}}\",\n    \"monkeys.design.capability.recordEditor.secretKeep\": \"Keep existing\",\n    \"monkeys.design.capability.recordEditor.secretMode\": \"{field} update mode\",\n    \"monkeys.design.capability.recordEditor.secretReplace\": \"Replace\",\n    \"monkeys.design.capability.recordEditor.secretClear\": \"Clear\",\n\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.inspect]: \"Inspect observation\",\n    \"monkeys.design.capability.summaryChart.label\": \"Summary chart\",\n    \"monkeys.design.capability.dataToolbar.moreActions\": \"More actions\",\n    \"monkeys.design.capability.summaryChart.description\": \"Compare numeric series and category totals.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.noPoints]: \"No observations in this range\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.point]: \"{xLabel} {x}, {yLabel} {y}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.label]: \"Numeric series\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.description]: \"Inspect numeric observations with range zoom and expansion.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.start]: \"Range start\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.end]: \"Range end\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.reset]: \"Reset range\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.expand]: \"Expand chart\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.close]: \"Close chart\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeSidebar]: \"Resize sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.collapseSidebar]:\n      \"Collapse sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar]: \"Expand sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeAside]:\n      \"Resize detail panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.moreActions]: \"More actions\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow]: \"Add row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.blankRowName]: \"Blank Row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.label]:\n      \"Ontology trend matrix\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.row]: \"Row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.window]:\n      \"Visible rows {start}-{end} of {total}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.select]:\n      \"Select {row}, {column}, {value}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label]:\n      \"Data filters and drilldown context\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filter]: \"Filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchLabel]: \"Search data\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchPlaceholder]: \"Search\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear]: \"Clear\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clearAll]: \"Clear all\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagFilterClear]: \"Clear\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filterDescription]:\n      \"Filter assets by selecting tags via tag panel or manual search.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope]: \"Tag scope\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.currentViewTags]:\n      \"Current view\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags]: \"All tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.panelFilter]: \"Panel filter\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchTags]: \"Search tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noAvailableTags]:\n      \"No available tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.loadedAll]: \"All loaded\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.refreshTags]: \"Refresh tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.confirm]: \"Confirm\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagPanel]: \"Tag panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.selectPanel]: \"Select a panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanels]:\n      \"No available panels\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanelGroups]:\n      \"No tag groups in this panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.singleSelect]: \"Single select\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.multiSelect]: \"Multi select\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.defaultGroup]: \"Default group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.more]: \"+{count} more\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.dashboardContext]:\n      \"Dashboard context\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.contextCount]:\n      \"{count} context values\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.search]: \"Search\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagIds]: \"Tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagGroupIds]:\n      \"Tag groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeFrom]: \"From\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeTo]: \"To\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedField]:\n      \"Drilldown field\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedValue]:\n      \"Drilldown value\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.dashboardDrilldown]:\n      \"Dashboard drilldown\",\n  }),\n  \"zh-CN\": Object.freeze({\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerDescription]: \"配置仓库标记和默认视图。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.label]: \"标记名称\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.targetOntology]: \"目标仓库\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateKey]: \"模板标识\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateName]: \"视图名称\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateDescription]: \"视图描述\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTags]: \"标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTagsDescription]: \"设置该视图包含、匹配或排除的标签。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUser]: \"仅显示当前用户创建的数据\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUserShort]: \"当前用户\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplatesDescription]: \"为仓库配置默认视图及其筛选条件。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplate]: \"默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultSelectedView]: \"默认打开\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEnabled]: \"已配置标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEmpty]: \"未配置标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tableColumnsSummary]: \"已配置 {count} 个表格列\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetails]: \"编辑视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetailsDescription]: \"配置名称、排序和筛选条件。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplates]: \"默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerExists]: \"已有仓库标记\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterInclude]: \"全部包含\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAny]: \"匹配任意\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterExclude]: \"排除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoTags]: \"没有匹配的标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSearch]: \"搜索标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterTagGroup]: \"标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAllGroups]: \"全部标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAddOrGroup]: \"添加或条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoOrGroups]: \"暂无或条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterOrGroup]: \"或条件组 {n}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterDeleteGroup]: \"删除条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplement]: \"{name} 的补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterConfigureSupplement]: \"配置补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterClearSupplement]: \"清除补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplementMode]: \"匹配方式\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeOr]: \"任意条件（OR）\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeAnd]: \"全部条件（AND）\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeCombination]: \"组合条件\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAll]: \"必须包含全部标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAny]: \"至少包含一个标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRules]: \"{count} 项高级规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRulesDescription]: \"已有规则将保留，除非明确移除。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRemoveAdvancedRules]: \"移除高级规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteTemplate]: \"删除模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteMarker]: \"删除仓库标记\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.createDefaultViews]: \"创建默认视图\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.addTemplate]: \"添加视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.noTemplates]: \"暂无默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.actions[\"ontology-marker\"]]: \"设置仓库标记\",\n    \"monkeys.design.capability.pagination.previous\": \"上一页\",\n    \"monkeys.design.capability.pagination.next\": \"下一页\",\n    \"monkeys.design.iconPicker.confirm\": \"确认\",\n    \"monkeys.design.iconPicker.categories\": \"分类\",\n    \"monkeys.design.iconPicker.icon\": \"图标\",\n    \"monkeys.design.iconPicker.choose\": \"选择图标\",\n    \"monkeys.design.iconPicker.current\": \"当前图标\",\n    \"monkeys.design.iconPicker.reset\": \"重置\",\n    \"monkeys.design.iconPicker.search\": \"搜索图标\",\n    \"monkeys.design.iconPicker.category\": \"分类\",\n    \"monkeys.design.iconPicker.background\": \"背景颜色\",\n    \"monkeys.design.iconPicker.upload\": \"上传图标\",\n    \"monkeys.design.iconPicker.uploadFailed\": \"图标上传失败\",\n    \"monkeys.design.iconPicker.loading\": \"正在加载图标\",\n    \"monkeys.design.iconPicker.retry\": \"重试\",\n    \"monkeys.design.iconPicker.empty\": \"没有匹配的图标\",\n    \"monkeys.design.iconPicker.close\": \"关闭\",\n    \"monkeys.design.iconPicker.emoji\": \"表情\",\n    \"monkeys.design.iconPicker.catalogFailed\": \"无法加载图标\",\n\n    \"monkeys.design.capability.choicePicker.label\": \"选项选择器\",\n    \"monkeys.design.capability.choicePicker.description\": \"搜索并选择分页集合中的选项。\",\n    \"monkeys.design.capability.summaryChart.label\": \"汇总图表\",\n    \"monkeys.design.capability.dataToolbar.moreActions\": \"更多操作\",\n    \"monkeys.design.capability.summaryChart.description\": \"比较数值序列与分类汇总。\",\n    \"monkeys.design.capability.runtimeTerminal.status\": \"终端\",\n    \"monkeys.design.capability.runtimeTerminal.waiting\": \"正在连接终端…\",\n    \"monkeys.design.capability.recordEditor.add\": \"添加条目\",\n    \"monkeys.design.capability.recordEditor.remove\": \"删除条目\",\n    \"monkeys.design.capability.recordEditor.moveUp\": \"上移\",\n    \"monkeys.design.capability.recordEditor.moveDown\": \"下移\",\n    \"monkeys.design.capability.recordEditor.reset\": \"重置\",\n    \"monkeys.design.capability.filePicker.label\": \"选择文件\",\n    \"monkeys.design.capability.filePicker.description\": \"选择本地文件以执行受治理操作。\",\n    \"monkeys.design.capability.filePicker.cancel\": \"清除文件\",\n    \"monkeys.design.capability.filePicker.tooLarge\": \"文件大小超过允许范围。\",\n    \"monkeys.design.capability.filePicker.invalidType\": \"请选择支持的文件类型。\",\n    \"monkeys.design.capability.filePicker.registrationFailed\": \"无法选择该文件，请重试。\",\n    \"monkeys.design.capability.recordEditor.date.invalid\": \"请输入允许范围内的有效日期和时间。\",\n    \"monkeys.design.capability.recordEditor.pick\": \"选择\",\n    \"monkeys.design.capability.recordEditor.selectionSummary\": \"已选 {{count}} 项\",\n    \"monkeys.design.capability.recordEditor.secretKeep\": \"保留现有值\",\n    \"monkeys.design.capability.recordEditor.secretMode\": \"{field} 更新方式\",\n    \"monkeys.design.capability.recordEditor.secretReplace\": \"替换\",\n    \"monkeys.design.capability.recordEditor.secretClear\": \"清除\",\n\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.inspect]: \"查看观测点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.noPoints]: \"此范围内没有观测点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.point]: \"{xLabel} {x}, {yLabel} {y}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.label]: \"数值序列\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.description]: \"查看数值观测，缩放范围并放大图表。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.start]: \"范围起点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.end]: \"范围终点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.reset]: \"重置范围\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.expand]: \"放大图表\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.close]: \"关闭图表\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeSidebar]: \"调整侧边栏宽度\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.collapseSidebar]: \"收起侧边栏\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar]: \"展开侧边栏\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeAside]: \"调整详情侧边栏宽度\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.moreActions]: \"更多操作\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow]: \"添加一行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.blankRowName]: \"空白行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.label]: \"本体趋势矩阵\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.row]: \"行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.window]:\n      \"当前显示第 {start}-{end} 行，共 {total} 行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.select]:\n      \"选择 {row}、{column}、{value}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label]: \"数据筛选与钻取上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filter]: \"筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchLabel]: \"搜索数据\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchPlaceholder]: \"搜索\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear]: \"清除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clearAll]: \"全部清除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagFilterClear]: \"清空\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filterDescription]:\n      \"通过标签面板或手动搜索，选择用于过滤资产的 Tag。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope]: \"标签范围\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.currentViewTags]: \"当前视图\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags]: \"全部标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.panelFilter]: \"面板筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchTags]: \"搜索标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noAvailableTags]:\n      \"暂无可用标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.loadedAll]: \"已加载全部\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.refreshTags]: \"刷新标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.confirm]: \"确定\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagPanel]: \"标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.selectPanel]: \"选择标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanels]: \"暂无可用标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanelGroups]:\n      \"当前面板没有标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.singleSelect]: \"单选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.multiSelect]: \"多选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.defaultGroup]: \"默认标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.more]: \"另有 {count} 项\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.dashboardContext]:\n      \"仪表盘上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.contextCount]:\n      \"{count} 项上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.search]: \"搜索\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagIds]: \"标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagGroupIds]: \"标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeFrom]: \"开始时间\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeTo]: \"结束时间\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedField]:\n      \"钻取字段\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedValue]: \"钻取值\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.dashboardDrilldown]:\n      \"仪表盘钻取\",\n  }),\n});\n","import { I18nTextSchema, type JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysLocale } from '../../provider/context';\nimport type { CapabilityTranslate, CapabilityTranslateValues } from './contracts';\n\nconst localePattern = '^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2}|-\\\\d{3})?$';\n/** Structural schema; SDK I18nTextSchema also enforces that values contains defaultLocale. */\nexport const I18N_DISPLAY_TEXT_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: false, required: ['defaultLocale', 'values'],\n  properties: {\n    defaultLocale: { type: 'string', pattern: localePattern },\n    values: { type: 'object', minProperties: 1, propertyNames: { pattern: localePattern }, additionalProperties: { type: 'string', minLength: 1, pattern: '\\\\S' } },\n  },\n};\nexport const LOCALIZED_DISPLAY_PARAMETERS_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: { oneOf: [{ type: ['string', 'number', 'boolean'] }, I18N_DISPLAY_TEXT_SCHEMA] },\n};\n\n/** I18nText only: LocalizedText locale maps and plain strings are deliberately distinct. */\nexport function resolveI18nDisplayText(value: unknown, locale: string): string {\n  const parsed = I18nTextSchema.safeParse(value);\n  if (!parsed.success) throw new TypeError('Invalid I18n display text');\n  let canonical: string;\n  try { canonical = Intl.getCanonicalLocales(locale)[0] ?? ''; } catch { canonical = ''; }\n  const language = canonical.split('-')[0] ?? '';\n  return parsed.data.values[canonical] ?? parsed.data.values[language] ?? parsed.data.values[parsed.data.defaultLocale]!;\n}\n\nexport function LocalizedDisplayText({ value }: { value: unknown }) {\n  const { locale } = useMonkeysLocale();\n  return <>{resolveI18nDisplayText(value, locale)}</>;\n}\n\nexport function resolveLocalizedDisplayParameters(value: unknown, locale: string): CapabilityTranslateValues | undefined {\n  if (value === undefined) return undefined;\n  if (typeof value !== 'object' || value === null || Array.isArray(value) ||\n      ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new TypeError('Invalid localized interpolation parameters');\n  return Object.fromEntries(Object.entries(value).map(([key, item]) => {\n    if (typeof item === 'string' || typeof item === 'boolean' || (typeof item === 'number' && Number.isFinite(item))) return [key, item];\n    return [key, resolveI18nDisplayText(item, locale)];\n  }));\n}\n\nexport function LocalizedMessageText({ messageKey, values, translate }: { messageKey: string; values?: unknown; translate: CapabilityTranslate }) {\n  const { locale } = useMonkeysLocale();\n  return <>{translate(messageKey, resolveLocalizedDisplayParameters(values, locale))}</>;\n}\n","import { useEffect, useId, useRef, useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport type { DesignCapabilityRendererContext } from './contracts';\n\nexport interface TransientFileMetadata { handleId: string; fileName: string; size: number; mimeType: string }\nexport interface TransientFileRegistry {\n  register(file: File, options?: { maxBytes: number }): TransientFileMetadata;\n  discard(handleId: string): void;\n}\nexport interface FilePickerContext extends DesignCapabilityRendererContext { transientFiles?: TransientFileRegistry }\nexport const FILE_PICKER_MAX_BYTES = 5 * 1024 * 1024 * 1024;\nexport const FILE_PICKER_SCHEMA = 'monkeys-design://render-model/file-picker/v1';\nconst metadataProperties: JsonObject = {\n  handleId: { type: 'string', minLength: 1, maxLength: 256 },\n  fileName: { type: 'string', minLength: 1, maxLength: 1024 },\n  size: { type: 'integer', minimum: 0, maximum: FILE_PICKER_MAX_BYTES },\n  mimeType: { type: 'string', maxLength: 256 },\n};\nconst metadataSchema: JsonObject = { type: 'object', additionalProperties: false, required: ['handleId', 'fileName', 'size', 'mimeType'], properties: metadataProperties };\nexport const FILE_PICKER_RENDER_MODEL_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: FILE_PICKER_SCHEMA,\n  type: 'object', additionalProperties: false, required: ['labelKey', 'maxBytes'],\n  properties: {\n    labelKey: { type: 'string', minLength: 1, maxLength: 256 },\n    accept: { type: 'string', maxLength: 1024 },\n    maxBytes: { type: 'integer', minimum: 1, maximum: FILE_PICKER_MAX_BYTES },\n    disabled: { type: 'boolean' }, submitting: { type: 'boolean' }, selected: { anyOf: [{ type: 'null' }, metadataSchema] },\n  },\n};\nexport const FILE_PICKER_SELECT_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: 'monkeys-design://intent/file-picker-select/v1', ...metadataSchema,\n};\nexport const FILE_PICKER_CANCEL_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: 'monkeys-design://intent/file-picker-cancel/v1', type: 'object', additionalProperties: false, maxProperties: 0,\n};\nexport function filePickerAccepts(file: Pick<File, 'name' | 'type'>, accept: string | undefined): boolean {\n  if (!accept?.trim()) return true;\n  const name = file.name.toLowerCase(), type = file.type.toLowerCase();\n  return accept.split(',').some(raw => {\n    const rule = raw.trim().toLowerCase();\n    if (/^\\.[a-z0-9][a-z0-9._-]*$/.test(rule)) return name.endsWith(rule);\n    if (/^[a-z0-9!#$&^_.+-]+\\/\\*$/.test(rule)) return type.startsWith(rule.slice(0, -1));\n    return /^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/.test(rule) && type === rule;\n  });\n}\nexport function readTransientFileMetadata(value: unknown): TransientFileMetadata | undefined {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n  const object = value as Record<string, unknown>;\n  if (Object.keys(object).length !== 4 || typeof object.handleId !== 'string' || object.handleId.length < 1 || object.handleId.length > 256 ||\n      typeof object.fileName !== 'string' || object.fileName.length < 1 || object.fileName.length > 1024 ||\n      typeof object.mimeType !== 'string' || object.mimeType.length > 256 ||\n      typeof object.size !== 'number' || !Number.isInteger(object.size) || object.size < 0 || object.size > FILE_PICKER_MAX_BYTES) return undefined;\n  return { handleId: object.handleId, fileName: object.fileName, size: object.size, mimeType: object.mimeType };\n}\nfunction FilePickerView({ model, translate, emitIntent, transientFiles }: FilePickerContext) {\n  const id = useId(), input = useRef<HTMLInputElement>(null);\n  const current = useRef<TransientFileMetadata>();\n  const [selected, setSelected] = useState<TransientFileMetadata>();\n  const [error, setError] = useState<string>();\n  const configured = typeof model.labelKey === 'string' && typeof model.maxBytes === 'number' && Number.isInteger(model.maxBytes) && model.maxBytes >= 1 && model.maxBytes <= FILE_PICKER_MAX_BYTES;\n  const disabled = !configured || !transientFiles || model.disabled === true || model.submitting === true;\n  const authoritative = readTransientFileMetadata(model.selected);\n  const authoritativeKey = authoritative ? JSON.stringify(authoritative) : '';\n  useEffect(() => () => {\n    if (current.current) transientFiles?.discard(current.current.handleId);\n    current.current = undefined;\n  }, [transientFiles]);\n  useEffect(() => {\n    const next = transientFiles ? authoritative : undefined;\n    if (current.current && current.current.handleId !== next?.handleId) transientFiles?.discard(current.current.handleId);\n    current.current = next; setSelected(next); setError(undefined);\n    if (input.current) input.current.value = '';\n    // Scalar identity avoids clearing a local selection when the same model is re-rendered.\n  }, [transientFiles, authoritativeKey]);\n  const clear = () => {\n    if (disabled) return;\n    if (current.current) transientFiles?.discard(current.current.handleId);\n    current.current = undefined; setSelected(undefined); setError(undefined);\n    if (input.current) input.current.value = '';\n    emitIntent('capability.file-picker.cancel', {});\n  };\n  const label = typeof model.labelKey === 'string' ? model.labelKey : 'monkeys.design.capability.filePicker.label';\n  return <div className=\"grid gap-2\">\n    <label htmlFor={id}>{translate(label)}</label>\n    <input ref={input} id={id} type=\"file\" accept={typeof model.accept === 'string' ? model.accept : undefined} disabled={disabled} aria-invalid={Boolean(error)} onChange={event => {\n      if (disabled || !transientFiles) return;\n      const file = event.currentTarget.files?.[0];\n      // Clear the native selection so retries of the same file produce another change event.\n      event.currentTarget.value = '';\n      if (!file) return;\n      if (file.size > Number(model.maxBytes)) { setError('monkeys.design.capability.filePicker.tooLarge'); return; }\n      if (!filePickerAccepts(file, typeof model.accept === 'string' ? model.accept : undefined)) { setError('monkeys.design.capability.filePicker.invalidType'); return; }\n      let registered: TransientFileMetadata;\n      try { registered = transientFiles.register(file, { maxBytes: Number(model.maxBytes) }); }\n      catch { setError('monkeys.design.capability.filePicker.registrationFailed'); return; }\n      // Select named scalar fields; host objects and file contents never enter an intent.\n      const metadata = { handleId: registered.handleId, fileName: registered.fileName, size: registered.size, mimeType: registered.mimeType };\n      const previous = current.current;\n      current.current = metadata; setSelected(metadata); setError(undefined);\n      if (previous && previous.handleId !== metadata.handleId) transientFiles.discard(previous.handleId);\n      emitIntent('capability.file-picker.select', metadata);\n    }} />\n    {selected ? <span>{selected.fileName}</span> : null}\n    {error ? <span role=\"alert\">{translate(error)}</span> : null}\n    <button type=\"button\" disabled={disabled} onClick={clear}>{translate('monkeys.design.capability.filePicker.cancel')}</button>\n  </div>;\n}\nexport const FilePickerCapabilityRenderer = (context: FilePickerContext) => <FilePickerView {...context} />;\n","import { BaseButton, BaseInput } from '../base';\nimport { DESIGN_CAPABILITY_NATIVE_ANALYTICS_MESSAGES } from '../capabilities/i18n';\nimport { Dialog, DialogContent, DialogTitle } from '../primitives';\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\nimport type { I18nText } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { BaseAssetIcon, type BaseAssetIconDescriptor } from '../base/BaseAssetIcon';\nimport { resolveI18nDisplayText } from '../capabilities/localizedDisplayValue';\nimport { filePickerAccepts, FILE_PICKER_MAX_BYTES, readTransientFileMetadata, type TransientFileMetadata, type TransientFileRegistry } from '../capabilities/filePicker';\n\nexport interface IconPickerItem { id: string; icon: BaseAssetIconDescriptor; tags?: string[]; categoryIds?: string[] }\nexport interface IconPickerCatalog {\n  icons: IconPickerItem[];\n  categories: { id: string; labelI18n: I18nText }[];\n}\nexport interface IconPickerCatalogSource {\n  load(signal: AbortSignal): Promise<IconPickerCatalog>;\n}\nexport interface IconPickerModel {\n  value: BaseAssetIconDescriptor; mode: 'emoji' | 'icon'; open: boolean; search: string; categoryId: string;\n  categories: { id: string; labelI18n: I18nText }[]; icons: IconPickerItem[]; customIcons: IconPickerItem[];\n  backgroundColors: string[]; defaultValue: BaseAssetIconDescriptor;\n  loading?: boolean; uploading?: boolean; disabled?: boolean; errorCode?: string; maxUploadBytes?: number;\n}\nexport type IconPickerIntent =\n  | { type: 'open-change'; open: boolean; mode: 'emoji' | 'icon' }\n  | { type: 'search'; value: string }\n  | { type: 'category-change'; categoryId: string }\n  | { type: 'change'; value: BaseAssetIconDescriptor }\n  | { type: 'reset' | 'retry' }\n  | ({ type: 'upload' } & TransientFileMetadata);\nexport interface IconPickerProps {\n  model: IconPickerModel;\n  onIntent(intent: IconPickerIntent): void;\n  renderEmojiPicker(context: { locale: string; disabled: boolean; onSelect(nativeEmoji: string): void }): ReactNode;\n  transientFiles?: TransientFileRegistry;\n  translate?(key: string): string;\n  catalogSource?: IconPickerCatalogSource;\n}\nconst ACCEPT = '.png,.jpg,.jpeg,.webp,.svg';\n\n/** Catalog and selection UI only. File ownership is scoped to this mounted picker. */\nexport function IconPicker({ model: declaredModel, onIntent, renderEmojiPicker, transientFiles, translate: suppliedTranslate, catalogSource }: IconPickerProps) {\n  const { locale } = useMonkeysLocale();\n  const translate = (key: string) => {\n    const supplied = suppliedTranslate?.(key);\n    if (supplied && supplied !== key) return supplied;\n    const messages = DESIGN_CAPABILITY_NATIVE_ANALYTICS_MESSAGES[locale.toLowerCase().startsWith('zh') ? 'zh-CN' : 'en-US'] as Readonly<Record<string, string>>;\n    return messages[key] ?? key;\n  };\n  const [catalog, setCatalog] = useState<{ source: IconPickerCatalogSource; value: IconPickerCatalog }>();\n  const [catalogState, setCatalogState] = useState<'idle' | 'loading' | 'error'>('idle');\n  const [catalogAttempt, setCatalogAttempt] = useState(0);\n  useEffect(() => {\n    if (!catalogSource || !declaredModel.open || declaredModel.mode !== 'icon' || catalog?.source === catalogSource) return;\n    const controller = new AbortController();\n    setCatalogState('loading');\n    void catalogSource.load(controller.signal).then(value => {\n      if (controller.signal.aborted) return;\n      setCatalog({ source: catalogSource, value }); setCatalogState('idle');\n    }).catch(() => { if (!controller.signal.aborted) setCatalogState('error'); });\n    return () => controller.abort();\n  }, [catalogSource, declaredModel.open, declaredModel.mode, catalogAttempt]);\n  const model = catalogSource ? { ...declaredModel,\n    ...(catalog?.source === catalogSource ? catalog.value : {}),\n    loading: declaredModel.loading || catalogState === 'loading',\n    errorCode: declaredModel.errorCode ?? (catalogState === 'error' ? 'monkeys.design.iconPicker.catalogFailed' : undefined),\n  } : declaredModel;\n  const owner = useRef<{ registry: TransientFileRegistry; handleId: string } | null>(null);\n  const [uploadError, setUploadError] = useState(false);\n  const release = () => { const current = owner.current; owner.current = null; current?.registry.discard(current.handleId); };\n  useEffect(() => () => release(), [transientFiles]);\n  useEffect(() => { if (!model.open) release(); }, [model.open]);\n  const blocked = model.disabled === true || model.uploading === true;\n  const emit = (intent: IconPickerIntent) => { if (!blocked) onIntent(intent); };\n  const close = () => { if (blocked) return; release(); onIntent({ type: 'open-change', open: false, mode: model.mode }); };\n  const emoji = model.value.kind === 'emoji' ? model.value.value : model.defaultValue.kind === 'emoji' ? model.defaultValue.value : '🍀';\n  const background = model.value.kind === 'emoji' ? model.value.backgroundColor : model.backgroundColors[0];\n  const chooseEmoji = (value: string, color = background) => { if (!value || value.length > 64) return; emit({ type: 'change', value: { kind: 'emoji', value, ...(color ? { backgroundColor: color } : {}) } }); };\n  const history = [...new Map(model.customIcons.map(item => [item.id, item])).values()].slice(0, 50);\n  const keyword = model.search.trim().toLowerCase();\n  const custom = model.categoryId === 'custom-upload';\n  const items = (custom ? history : model.icons).filter(item => (custom || model.categoryId === 'all' || item.categoryIds?.includes(model.categoryId)) && (!keyword || item.id.toLowerCase().includes(keyword) || item.tags?.some(tag => tag.toLowerCase().includes(keyword))));\n  const changeMode = (mode: 'emoji' | 'icon') => {\n    if (blocked) return;\n    onIntent({ type: 'open-change', open: model.open, mode });\n    if (mode === 'emoji' && model.value.kind !== 'emoji') chooseEmoji(emoji);\n    if (mode === 'icon' && model.value.kind === 'emoji') onIntent({ type: 'change', value: { kind: 'lucide', name: 'sparkles' } });\n  };\n  return <section data-monkeys-component=\"icon-picker\" className=\"flex flex-wrap items-center gap-2\">\n    <BaseButton type=\"button\" disabled={blocked} aria-pressed={model.mode === 'emoji'} onClick={() => changeMode('emoji')}>{translate('monkeys.design.iconPicker.emoji')}</BaseButton>\n    <BaseButton type=\"button\" disabled={blocked} aria-pressed={model.mode === 'icon'} onClick={() => changeMode('icon')}>{translate('monkeys.design.iconPicker.icon')}</BaseButton>\n    <BaseButton type=\"button\" aria-label={translate('monkeys.design.iconPicker.choose')} disabled={blocked} onClick={() => emit({ type: 'open-change', open: true, mode: model.mode })}><BaseAssetIcon icon={model.value} alt={translate('monkeys.design.iconPicker.current')} /></BaseButton>\n    <BaseButton type=\"button\" disabled={blocked} onClick={() => { if (!blocked) { onIntent({ type: 'change', value: model.defaultValue }); onIntent({ type: 'reset' }); } }}>{translate('monkeys.design.iconPicker.reset')}</BaseButton>\n    {model.open ? <Dialog open onOpenChange={open => { if (!open) close(); }}><DialogContent aria-describedby={undefined} onEscapeKeyDown={event => { if (blocked) event.preventDefault(); }} onPointerDownOutside={event => { if (blocked) event.preventDefault(); }}><DialogTitle>{translate('monkeys.design.iconPicker.choose')}</DialogTitle>\n      {model.mode === 'emoji' ? <>\n        {renderEmojiPicker({ locale, disabled: blocked, onSelect: value => chooseEmoji(value) })}\n        <div className=\"flex flex-wrap gap-2\" aria-label={translate('monkeys.design.iconPicker.background')}>{model.backgroundColors.map(color => <BaseButton key={color} className=\"h-7 w-7 rounded-full border p-0\" type=\"button\" disabled={blocked} aria-label={color} aria-pressed={color === background} style={{ backgroundColor: color }} onClick={() => chooseEmoji(emoji, color)}><span className=\"sr-only\">{translate('monkeys.design.iconPicker.background')}</span></BaseButton>)}</div>\n        <BaseButton type=\"button\" disabled={blocked} onClick={close}>{translate('monkeys.design.iconPicker.confirm')}</BaseButton>\n      </> : <>\n        <BaseInput aria-label={translate('monkeys.design.iconPicker.search')} disabled={blocked} value={model.search} onChange={event => emit({ type: 'search', value: event.currentTarget.value })} />\n        <div className=\"flex overflow-x-auto\" aria-label={translate('monkeys.design.iconPicker.categories')}>{model.categories.map(category => <BaseButton type=\"button\" key={category.id} disabled={blocked} aria-pressed={category.id === model.categoryId} onClick={() => emit({ type: 'category-change', categoryId: category.id })}>{resolveI18nDisplayText(category.labelI18n, locale)}</BaseButton>)}</div>\n        {custom ? <label>{translate('monkeys.design.iconPicker.upload')}<BaseInput type=\"file\" accept={ACCEPT} disabled={blocked || !transientFiles} onChange={event => {\n          const file = event.currentTarget.files?.[0]; event.currentTarget.value = ''; if (!file || blocked || !transientFiles) return;\n          const limit = model.maxUploadBytes ?? FILE_PICKER_MAX_BYTES;\n          if (!Number.isInteger(limit) || limit < 1 || limit > FILE_PICKER_MAX_BYTES || file.size > limit || !filePickerAccepts(file, ACCEPT)) { setUploadError(true); return; }\n          release(); setUploadError(false);\n          try { const registered = transientFiles.register(file); const metadata = readTransientFileMetadata(registered); if (!metadata) { if (typeof registered?.handleId === 'string') transientFiles.discard(registered.handleId); setUploadError(true); return; } owner.current = { registry: transientFiles, handleId: metadata.handleId }; onIntent({ type: 'upload', ...metadata }); } catch { release(); setUploadError(true); }\n        }} /></label> : null}\n        {uploadError ? <div role=\"alert\">{translate('monkeys.design.iconPicker.uploadFailed')}</div> : null}\n        {model.loading ? <div role=\"status\">{translate('monkeys.design.iconPicker.loading')}</div> : model.errorCode ? <div role=\"alert\">{translate(model.errorCode)}<BaseButton disabled={blocked} onClick={() => { setCatalogAttempt(value => value + 1); emit({ type: 'retry' }); }}>{translate('monkeys.design.iconPicker.retry')}</BaseButton></div> : <div className=\"grid max-h-96 grid-cols-[repeat(auto-fill,minmax(72px,1fr))] overflow-auto\">{items.map(item => <BaseButton key={item.id} className=\"h-auto min-w-0 flex-col gap-1 p-2\" type=\"button\" title={item.id} aria-label={item.id} disabled={blocked} onClick={() => { if (blocked) return; onIntent({ type: 'change', value: item.icon }); close(); }}><BaseAssetIcon icon={item.icon} alt={item.id} /><span className=\"max-w-full truncate text-xs\">{item.id}</span></BaseButton>)}{!items.length ? <p>{translate('monkeys.design.iconPicker.empty')}</p> : null}</div>}\n      </>}\n      <BaseButton type=\"button\" disabled={blocked} onClick={close}>{translate('monkeys.design.iconPicker.close')}</BaseButton>\n    </DialogContent></Dialog> : null}\n  </section>;\n}\n","export const LAYOUT_CANVAS_MOUNT_PREFETCH_PX = 720;\nexport const LAYOUT_CANVAS_INITIAL_MOUNT_LIMIT = 12;\nexport interface LayoutCanvasMountingItem { id: string; layout: { x: number; y: number } }\nexport function initialLayoutCanvasMountedIds(items: readonly LayoutCanvasMountingItem[]): string[] {\n  return [...items].sort((a, b) => a.layout.y - b.layout.y || a.layout.x - b.layout.x).slice(0, LAYOUT_CANVAS_INITIAL_MOUNT_LIMIT).map(item => item.id);\n}\nexport function layoutCanvasRetainedMountLimit(total: number, visible: number, initial: number): number {\n  if (![total, visible, initial].every(Number.isFinite)) throw new TypeError('Invalid layout mount count.');\n  total = Math.max(0, Math.floor(total)); if (!total) return 0;\n  visible = Math.min(total, Math.max(0, Math.floor(visible))); initial = Math.min(total, Math.max(0, Math.floor(initial)));\n  const cap = total >= 120 ? 24 : total >= 80 ? 32 : total >= 48 ? 40 : 48;\n  const base = Math.max(initial, Math.min(visible, cap));\n  const headroom = Math.max(8, Math.ceil(base * 0.75));\n  return Math.min(total, Math.max(Math.min(total, 18), Math.min(cap, base + headroom)));\n}\n/** Visible order comes from the observer's insertion order, not DOM sorting. */\nexport function projectLayoutCanvasMounting(input: {\n  items: readonly LayoutCanvasMountingItem[];\n  visibleIds: readonly string[];\n  retainedOrder: readonly string[];\n  mode: 'edit' | 'run';\n  selectedWidgetId?: string;\n  draggingWidgetId?: string;\n  resizingWidgetId?: string;\n}): { retainedOrder: string[]; mountedIds: string[]; limit: number } {\n  const valid = new Set(input.items.map(item => item.id));\n  if (valid.size !== input.items.length) throw new TypeError('Layout widget IDs must be unique.');\n  const visible = new Set(input.visibleIds.filter(id => valid.has(id)));\n  const initial = initialLayoutCanvasMountedIds(input.items);\n  const limit = layoutCanvasRetainedMountLimit(valid.size, visible.size, initial.length);\n  if (input.mode === 'run') return { retainedOrder: [], mountedIds: [...visible], limit };\n  const order = [...new Set(input.retainedOrder.filter(id => valid.has(id)))];\n  if (!order.length) order.push(...initial);\n  for (const id of [...visible, input.selectedWidgetId, input.draggingWidgetId, input.resizingWidgetId]) {\n    if (!id || !valid.has(id)) continue;\n    const index = order.indexOf(id); if (index >= 0) order.splice(index, 1); order.push(id);\n  }\n  // The legacy policy never evicts visible items, even if they exceed the soft limit.\n  while (order.length > limit) { const index = order.findIndex(id => !visible.has(id)); if (index < 0) break; order.splice(index, 1); }\n  return { retainedOrder: order, mountedIds: [...new Set([...order, ...visible])], limit };\n}\n","import { useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport { initialLayoutCanvasMountedIds, LAYOUT_CANVAS_MOUNT_PREFETCH_PX, projectLayoutCanvasMounting, type LayoutCanvasMountingItem } from './layoutCanvasMounting';\nexport interface LayoutCanvasGridItem extends LayoutCanvasMountingItem { layout: { x: number; y: number; w: number; h: number } }\nexport interface LayoutCanvasGridProps<T extends LayoutCanvasGridItem> {\n items: readonly T[]; mode: 'edit' | 'run'; selectedWidgetId?: string; draggingWidgetId?: string; resizingWidgetId?: string;\n renderItem(item: T, mounted: boolean): ReactNode;\n}\n/** Each contiguous grid run owns its observer and retained mount budget. */\nexport function LayoutCanvasGrid<T extends LayoutCanvasGridItem>({ items, mode, selectedWidgetId, draggingWidgetId, resizingWidgetId, renderItem }: LayoutCanvasGridProps<T>) {\n const root = useRef<HTMLDivElement>(null);\n const signature = JSON.stringify(items.map(item => [item.id, item.layout.x, item.layout.y]));\n const [visible, setVisible] = useState<string[]>(() => initialLayoutCanvasMountedIds(items));\n const [retained, setRetained] = useState<string[]>([]);\n const projection = useMemo(() => projectLayoutCanvasMounting({ items, mode, visibleIds: visible, retainedOrder: retained, selectedWidgetId, draggingWidgetId, resizingWidgetId }), [signature, mode, visible, retained, selectedWidgetId, draggingWidgetId, resizingWidgetId]);\n const orderKey = JSON.stringify(projection.retainedOrder);\n useEffect(() => { setRetained(previous => JSON.stringify(previous) === orderKey ? previous : projection.retainedOrder); }, [orderKey]);\n useEffect(() => {\n  const container = root.current; if (!container) return;\n  if (typeof IntersectionObserver === 'undefined') { setVisible(items.map(item => item.id)); return; }\n  let active = true; const visibility = new Map<string, boolean>(); setVisible([]);\n  const observer = new IntersectionObserver(entries => {\n   if (!active) return;\n   for (const entry of entries) { const id = (entry.target as HTMLElement).dataset.layoutMountId; if (id) visibility.set(id, entry.isIntersecting); }\n   const next = [...visibility].filter(([,shown]) => shown).map(([id]) => id);\n   setVisible(previous => JSON.stringify(previous) === JSON.stringify(next) ? previous : next);\n  }, { root: null, rootMargin: `${LAYOUT_CANVAS_MOUNT_PREFETCH_PX}px 0px ${LAYOUT_CANVAS_MOUNT_PREFETCH_PX}px 0px`, threshold: 0 });\n  for (const shell of container.children) observer.observe(shell);\n  return () => { active = false; observer.disconnect(); };\n }, [signature]);\n const mounted = new Set(projection.mountedIds);\n return <div ref={root} data-layout-grid className=\"grid\" style={{gridTemplateColumns:'repeat(24,minmax(0,1fr))',gridAutoRows:28,gap:12}}>{items.map(item => <div key={item.id} data-layout-mount-id={item.id} style={{gridColumn:`${item.layout.x+1} / span ${item.layout.w}`,gridRow:`${item.layout.y+1} / span ${item.layout.h}`,minWidth:0,minHeight:0}}>{renderItem(item,mounted.has(item.id))}</div>)}</div>;\n}\n","export const LAYOUT_CATALOG_DRAG_MIME = 'application/x-monkeys-layout-catalog-item';\n","import { z } from 'zod';\nexport const LAYOUT_CANVAS_GRID = { columns: 24, rowHeight: 28, gap: 12, maxRows: 100, minimum: 4 } as const;\nexport interface LayoutCanvasRect { x: number; y: number; w: number; h: number; minW: number; minH: number }\nexport type LayoutCanvasTarget = { type: 'widget' | 'section' | 'tabs'; id: string } | { type: 'tab'; id: string; tabsId: string };\nexport type LayoutCanvasNode = { type: 'widget'; id: string; widgetId: string } | { type: 'section'; id: string; title?: string; description?: string; children: LayoutCanvasNode[] } | { type: 'tabs'; id: string; title?: string; size?: 'large' | 'small'; behavior?: 'switch' | 'anchor'; tabs: { id: string; label?: string; target?: LayoutCanvasTarget; children: LayoutCanvasNode[] }[] };\nexport interface LayoutCanvasModel { version: 1; revision: string; root: LayoutCanvasNode[]; widgets: Record<string, { layout: LayoutCanvasRect }> }\nexport type LayoutCanvasOperation = { type: 'move'; widgetId: string; x: number; y: number } | { type: 'resize'; widgetId: string; w: number; h: number } | { type: 'remove'; nodeId: string };\nconst overlap = (a: LayoutCanvasRect, b: LayoutCanvasRect) => a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y;\nfunction runs(nodes: LayoutCanvasNode[], result: string[][] = []): string[][] {\n let current: string[] = []; const flush = () => { if (current.length) result.push(current); current = []; };\n for (const node of nodes) { if (node.type === 'widget') current.push(node.widgetId); else { flush(); if (node.type === 'section') runs(node.children, result); else node.tabs.forEach(tab => runs(tab.children, result)); } } flush(); return result;\n}\nconst identifier = z.string().min(1).max(256).refine(v => !['__proto__', 'constructor', 'prototype'].includes(v));\nconst caption = z.string().max(8192);\nconst targetSchema = z.union([z.object({ type: z.enum(['widget', 'section', 'tabs']), id: identifier }).strict(), z.object({ type: z.literal('tab'), id: identifier, tabsId: identifier }).strict()]);\nconst nodeSchema: z.ZodType<LayoutCanvasNode> = z.lazy(() => z.union([\n z.object({ type: z.literal('widget'), id: identifier, widgetId: identifier }).strict(),\n z.object({ type: z.literal('section'), id: identifier, title: caption.optional(), description: caption.optional(), children: z.array(nodeSchema) }).strict(),\n z.object({ type: z.literal('tabs'), id: identifier, title: caption.optional(), size: z.enum(['large','small']).optional(), behavior: z.enum(['switch','anchor']).optional(), tabs: z.array(z.object({ id: identifier, label: caption.optional(), target: targetSchema.optional(), children: z.array(nodeSchema) }).strict()) }).strict(),\n]));\nconst rectSchema = z.object({ x:z.number().int().min(0), y:z.number().int().min(0), w:z.number().int().min(4).max(24), h:z.number().int().min(4).max(100), minW:z.number().int().min(4).max(24), minH:z.number().int().min(4).max(100) }).strict().refine(r => r.w >= r.minW && r.h >= r.minH && r.x+r.w <= 24 && r.y+r.h <= 100);\nconst modelSchema = z.object({version:z.literal(1),revision:identifier,root:z.array(nodeSchema),widgets:z.record(identifier,z.object({layout:rectSchema}).strict())}).strict();\nexport function validateLayoutCanvasModel(value: unknown): asserts value is LayoutCanvasModel {\n // Bound traversal before recursive schema parsing, including cyclic objects.\n let budget=0; const ancestors=new Set<object>();\n const bound=(item:unknown,depth:number):void=>{ if(item && typeof item==='object'){if(depth>64 || ++budget>8192 || ancestors.has(item))throw new TypeError('Layout nesting budget exceeded.');ancestors.add(item);for(const child of Object.values(item))bound(child,depth+1);ancestors.delete(item);} };bound(value,0);\n const model=modelSchema.parse(value); const ids=new Set<string>(), references=new Set<string>();let count=0;\n const fail=()=>{throw new TypeError('Invalid layout canvas model.');};\n const visit=(nodes:LayoutCanvasNode[],depth:number):void=>{if(depth>16)fail();for(const node of nodes){if(ids.has(node.id)||++count>512)fail();ids.add(node.id);\n if(node.type==='widget'){if(references.has(node.widgetId)||!Object.prototype.hasOwnProperty.call(model.widgets,node.widgetId))fail();references.add(node.widgetId);}\n else if(node.type==='section')visit(node.children,depth+1);\n else for(const tab of node.tabs){if(ids.has(tab.id)||++count>512)fail();ids.add(tab.id);visit(tab.children,depth+1);}\n }};visit(model.root,0);\n if(Object.keys(model.widgets).some(key=>!references.has(key)))fail();\n for(const run of runs(model.root))for(let i=0;i<run.length;i++)for(let j=0;j<i;j++)if(overlap(model.widgets[run[i]!]!.layout,model.widgets[run[j]!]!.layout))fail();\n}\nexport function applyLayoutCanvasOperation(model: LayoutCanvasModel, operation: LayoutCanvasOperation): { model: LayoutCanvasModel; removedWidgetIds: string[] } {\n validateLayoutCanvasModel(model);\n if (operation.type === 'remove') {\n  const removedWidgetIds: string[] = []; let found = false;\n  const collect = (nodes: LayoutCanvasNode[]) => { for (const node of nodes) { if (node.type === 'widget') removedWidgetIds.push(node.widgetId); else if (node.type === 'section') collect(node.children); else node.tabs.forEach(tab => collect(tab.children)); } };\n  const remove = (nodes: LayoutCanvasNode[]): LayoutCanvasNode[] => nodes.flatMap<LayoutCanvasNode>(node => {\n   if (node.id === operation.nodeId) { found = true; collect([node]); return []; }\n   if (node.type === 'section') return [{ ...node, children: remove(node.children) }];\n   if (node.type === 'tabs') return [{ ...node, tabs: node.tabs.flatMap(tab => { if (tab.id === operation.nodeId) { found = true; collect(tab.children); return []; } return [{ ...tab, children: remove(tab.children) }]; }) }];\n   return [node];\n  });\n  const root = remove(model.root); if (!found) throw new TypeError('Unknown layout node.');\n  const removed = new Set(removedWidgetIds); const next = { ...model, root, widgets: Object.fromEntries(Object.entries(model.widgets).filter(([key]) => !removed.has(key))) };\n  validateLayoutCanvasModel(next); return { model: next, removedWidgetIds };\n }\n const original = model.widgets[operation.widgetId]; if (!original) throw new TypeError('Unknown layout widget.');\n const desired = { ...original.layout, ...(operation.type === 'move' ? { x: operation.x, y: operation.y } : { w: operation.w, h: operation.h }) };\n if (!Object.values(desired).every(Number.isSafeInteger) || desired.w < desired.minW || desired.h < desired.minH || desired.w > 24 || desired.h > 100 || desired.x < 0 || desired.y < 0 || desired.x + desired.w > 24 || desired.y + desired.h > 100) throw new RangeError('Layout operation exceeds grid bounds.');\n const neighbors = (runs(model.root).find(run => run.includes(operation.widgetId)) ?? []).filter(key => key !== operation.widgetId).map(key => model.widgets[key]!.layout);\n let chosen: LayoutCanvasRect | undefined = neighbors.some(r => overlap(desired, r)) ? undefined : desired;\n if (!chosen) { let score = Infinity; for (let y = 0; y <= 100 - desired.h; y++) for (let x = 0; x <= 24 - desired.w; x++) { const candidate = { ...desired, x, y }; const nextScore = Math.abs(y - desired.y) * 1000 + Math.abs(x - desired.x) * 100 + y * 10 + x; if (nextScore < score && !neighbors.some(r => overlap(candidate, r))) { chosen = candidate; score = nextScore; } } }\n if (!chosen) throw new RangeError('No available layout position.');\n const next = { ...model, widgets: { ...model.widgets, [operation.widgetId]: { ...original, layout: chosen } } }; validateLayoutCanvasModel(next); return { model: next, removedWidgetIds: [] };\n}\n","import { LayoutCanvasGrid } from './LayoutCanvasGrid';\nimport { LAYOUT_CATALOG_DRAG_MIME } from './layoutCatalogDrag';\nimport { Children, useEffect, useRef, useState, type ReactNode, type PointerEvent } from 'react';\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from '../primitives';\nimport { applyLayoutCanvasOperation, validateLayoutCanvasModel, LAYOUT_CANVAS_GRID, type LayoutCanvasModel, type LayoutCanvasNode, type LayoutCanvasOperation } from './layoutCanvasModel';\n\nexport type LayoutCanvasInsertTarget = { type: 'root'; index: number } | { type: 'section'; sectionId: string; index: number } | { type: 'tab'; tabsId: string; tabId: string; index: number };\nexport interface LayoutCanvasProps {\n  model: LayoutCanvasModel;\n  mode: 'edit' | 'run';\n  widgetOrder: string[];\n  children?: ReactNode;\n  selectedNodeId?: string;\n  currentTabs?: Record<string, string>;\n  disabled?: boolean;\n  labels: { move: string; resize: string; remove: string; confirmRemove: string; removeDescription: string; cancel: string; insert?: string; reorder?: string };\n  allowedCatalogItemIds?: string[];\n  draggingCatalogItemId?: string;\n  onInsertRequest?: (value: { catalogItemId: string; target: LayoutCanvasInsertTarget; expectedRevision: string }) => void;\n  onReorder?: (value: { sourceNodeId: string; targetNodeId: string; position: 'before' | 'after'; expectedRevision: string }) => void;\n  onSelect?: (value: { nodeId: string; revision: string }) => void;\n  onChange?: (value: { expectedRevision: string; model: LayoutCanvasModel; removedWidgetIds: string[]; reason: 'move' | 'resize' | 'remove' }) => void;\n  onTabChange?: (value: { tabsId: string; tabId: string; revision: string }) => void;\n  onOperationError?: (value: { code: 'invalid-operation' | 'stale-model'; revision: string }) => void;\n  className?: string;\n}\n\n/** Controlled layout only. Host owns content, query lifetimes, persistence and confirmation policy. */\nexport function LayoutCanvas({ model, mode, widgetOrder, children, selectedNodeId, currentTabs = {}, disabled = false, labels, allowedCatalogItemIds = [], draggingCatalogItemId, onInsertRequest, onReorder, onSelect, onChange, onTabChange, onOperationError, className }: LayoutCanvasProps) {\n  validateLayoutCanvasModel(model);\n  const content = Children.toArray(children);\n  if (widgetOrder.length !== content.length || new Set(widgetOrder).size !== widgetOrder.length || widgetOrder.length !== Object.keys(model.widgets).length || widgetOrder.some(id => !Object.prototype.hasOwnProperty.call(model.widgets, id))) throw new TypeError('Layout widget content must map each widget exactly once.');\n  const byId = new Map(widgetOrder.map((id, index) => [id, content[index]]));\n  const canvas = useRef<HTMLDivElement>(null);\n  const latest = useRef(model); latest.current = model;\n  const catalogDrag = useRef<{ id: string | undefined; model: LayoutCanvasModel }>({ id: draggingCatalogItemId, model });\n  if (catalogDrag.current.id !== draggingCatalogItemId) catalogDrag.current = { id: draggingCatalogItemId, model };\n  const rootDrag = useRef<{ id: string; model: LayoutCanvasModel }>();\n  const [dropPreview, setDropPreview] = useState<string>();\n  const pending = useRef<LayoutCanvasModel>();\n  const [preview, setPreview] = useState<LayoutCanvasModel>();\n  const [removal, setRemoval] = useState<{ nodeId: string; model: LayoutCanvasModel }>();\n  const drag = useRef<{ pointerId: number; x: number; y: number; width: number; model: LayoutCanvasModel; operation: LayoutCanvasOperation }>();\n  useEffect(() => { pending.current = undefined; drag.current = undefined; rootDrag.current = undefined; setDropPreview(undefined); setPreview(undefined); setRemoval(undefined); }, [model, disabled, mode]);\n  const validCatalog = () => Boolean(draggingCatalogItemId && draggingCatalogItemId.trim().length > 0 && draggingCatalogItemId.length <= 256 && !/[\\u0000-\\u001f\\u007f-\\u009f]/.test(draggingCatalogItemId) && !['__proto__', 'prototype', 'constructor'].includes(draggingCatalogItemId) && allowedCatalogItemIds.includes(draggingCatalogItemId) && catalogDrag.current.model === model);\n  const reorder = (sourceNodeId: string, targetNodeId: string, position: 'before' | 'after', base = model) => {\n    if (disabled || mode !== 'edit' || base !== latest.current || sourceNodeId === targetNodeId || !model.root.some(node => node.id === sourceNodeId) || !model.root.some(node => node.id === targetNodeId)) return;\n    onReorder?.({ sourceNodeId, targetNodeId, position, expectedRevision: base.revision });\n  };\n  const reorderHandle = (nodeId: string) => mode === 'edit' && model.root.some(node => node.id === nodeId) && onReorder ? <button type=\"button\" data-layout-reorder={nodeId} draggable={!disabled} disabled={disabled} aria-label={labels.reorder ?? labels.move} onDragStart={event => {\n    if (disabled) { event.preventDefault(); return; } rootDrag.current = { id: nodeId, model }; event.dataTransfer.setData('application/x-monkeys-layout-root-node', nodeId); event.dataTransfer.effectAllowed = 'move';\n  }} onDragEnd={() => { rootDrag.current = undefined; setDropPreview(undefined); }} onKeyDown={event => {\n    const index = model.root.findIndex(node => node.id === nodeId), offset = event.key === 'ArrowUp' ? -1 : event.key === 'ArrowDown' ? 1 : 0;\n    if (!offset) return; event.preventDefault(); const target = model.root[index + offset]; if (target) reorder(nodeId, target.id, offset < 0 ? 'before' : 'after');\n  }}>{labels.reorder ?? labels.move}</button> : null;\n  const dropZone = (target: LayoutCanvasInsertTarget) => {\n    if (mode !== 'edit' || (!onInsertRequest && !(target.type === 'root' && onReorder))) return null;\n    const key = JSON.stringify(target);\n    return <div key={`drop:${key}`} data-layout-insert-target={key} data-layout-insert-type={target.type} data-layout-insert-index={target.index} data-layout-section-id={target.type === 'section' ? target.sectionId : undefined} data-layout-tabs-id={target.type === 'tab' ? target.tabsId : undefined} data-layout-tab-id={target.type === 'tab' ? target.tabId : undefined} data-drop-preview={dropPreview === key || undefined} aria-label={labels.insert ?? labels.move} className={dropPreview === key ? 'min-h-4 border-2 border-primary bg-primary/10' : 'min-h-2'} onDragOver={event => {\n      if (disabled || !(validCatalog() || (target.type === 'root' && rootDrag.current?.model === model))) return;\n      event.preventDefault(); event.stopPropagation(); setDropPreview(key);\n    }} onDragLeave={() => setDropPreview(undefined)} onDrop={event => {\n      event.preventDefault(); event.stopPropagation(); setDropPreview(undefined);\n      if (disabled || mode !== 'edit' || latest.current !== model) return;\n      const moving = rootDrag.current;\n      if (moving && target.type === 'root') {\n        rootDrag.current = undefined;\n        if (event.dataTransfer.getData('application/x-monkeys-layout-root-node') !== moving.id) return;\n        const destination = model.root[target.index] ?? model.root[model.root.length - 1];\n        if (destination) reorder(moving.id, destination.id, target.index < model.root.length ? 'before' : 'after', moving.model);\n        return;\n      }\n      const id = event.dataTransfer.getData(LAYOUT_CATALOG_DRAG_MIME);\n      if (validCatalog() && id === draggingCatalogItemId) onInsertRequest?.({ catalogItemId: id, target, expectedRevision: model.revision });\n    }}>{dropPreview === key ? labels.insert ?? labels.move : null}</div>;\n  };\n  const commit = (base: LayoutCanvasModel, operation: LayoutCanvasOperation) => {\n    if (disabled || mode !== 'edit' || pending.current === base) return;\n    if (latest.current !== base) { onOperationError?.({ code: 'stale-model', revision: base.revision }); return; }\n    try { const result = applyLayoutCanvasOperation(base, operation); if (onChange) pending.current = base; onChange?.({ expectedRevision: base.revision, ...result, reason: operation.type }); }\n    catch { onOperationError?.({ code: 'invalid-operation', revision: base.revision }); }\n  };\n  const begin = (event: PointerEvent<HTMLButtonElement>, widgetId: string, type: 'move' | 'resize') => {\n    if (disabled || mode !== 'edit' || event.button !== 0) return;\n    const grid = event.currentTarget.closest('[data-layout-grid]');\n    const width = grid?.getBoundingClientRect().width ?? 0;\n    if (width <= 0) return;\n    const r = model.widgets[widgetId]!.layout;\n    drag.current = { pointerId: event.pointerId, x: event.clientX, y: event.clientY, width, model, operation: type === 'move' ? { type, widgetId, x: r.x, y: r.y } : { type, widgetId, w: r.w, h: r.h } };\n    event.currentTarget.setPointerCapture(event.pointerId); event.preventDefault();\n  };\n  const update = (event: PointerEvent<HTMLButtonElement>, finish: boolean) => {\n    const active = drag.current; if (!active || active.pointerId !== event.pointerId) return;\n    if (latest.current !== active.model || disabled || mode !== 'edit') { drag.current = undefined; setPreview(undefined); return; }\n    const dx = Math.round((event.clientX - active.x) / ((active.width + LAYOUT_CANVAS_GRID.gap) / LAYOUT_CANVAS_GRID.columns));\n    const dy = Math.round((event.clientY - active.y) / (LAYOUT_CANVAS_GRID.rowHeight + LAYOUT_CANVAS_GRID.gap));\n    const op = active.operation;\n    const next: LayoutCanvasOperation = op.type === 'move' ? { ...op, x: op.x + dx, y: op.y + dy } : op.type === 'resize' ? { ...op, w: op.w + dx, h: op.h + dy } : op;\n    if (finish) { drag.current = undefined; setPreview(undefined); commit(active.model, next); }\n    else { try { setPreview(applyLayoutCanvasOperation(active.model, next).model); } catch { setPreview(undefined); } }\n  };\n  const displayed = preview ?? model;\n  const remove = (nodeId: string) => <button type=\"button\" disabled={disabled} onClick={() => setRemoval({ nodeId, model })}>{labels.remove}</button>;\n  const nodes = (items: LayoutCanvasNode[], owner: Omit<Extract<LayoutCanvasInsertTarget, { type: 'root' }>, 'index'> | Omit<Extract<LayoutCanvasInsertTarget, { type: 'section' }>, 'index'> | Omit<Extract<LayoutCanvasInsertTarget, { type: 'tab' }>, 'index'>): ReactNode[] => {\n    const result: ReactNode[] = []; let run: LayoutCanvasNode[] = [];\n    const flush = () => {\n      if (!run.length) return;\n      const group = run.flatMap(node => node.type === 'widget' ? [{ id: node.widgetId, node, layout: displayed.widgets[node.widgetId]!.layout }] : []); run = [];\n      result.push(<LayoutCanvasGrid key={group[0]!.id} items={group} mode={mode} selectedWidgetId={group.find(item => item.node.id === selectedNodeId)?.id} renderItem={({ node }, mounted) => {\n        const rect = displayed.widgets[node.widgetId]!.layout;\n        const controls = (type: 'move' | 'resize') => <button type=\"button\" disabled={disabled} aria-label={labels[type]} style={{ touchAction: 'none' }} onPointerDown={event => begin(event, node.widgetId, type)} onPointerMove={event => update(event, false)} onPointerUp={event => update(event, true)} onPointerCancel={() => { drag.current = undefined; setPreview(undefined); }} onKeyDown={event => {\n          const delta = ({ ArrowLeft: [-1, 0], ArrowRight: [1, 0], ArrowUp: [0, -1], ArrowDown: [0, 1] } as Record<string, number[]>)[event.key];\n          if (!delta) return; event.preventDefault(); commit(model, type === 'move' ? { type, widgetId: node.widgetId, x: rect.x + delta[0]!, y: rect.y + delta[1]! } : { type, widgetId: node.widgetId, w: rect.w + delta[0]!, h: rect.h + delta[1]! });\n        }}>{labels[type]}</button>;\n        return <div key={node.id} data-layout-widget={node.widgetId} data-selected={selectedNodeId === node.id || undefined} className=\"h-full min-h-0 min-w-0 overflow-auto rounded border border-border\" data-layout-node-id={node.id}>\n          {dropZone({ ...owner, index: items.indexOf(node) })}\n          {mode === 'edit' ? <div className=\"flex gap-2\"><button type=\"button\" disabled={disabled} onClick={() => onSelect?.({ nodeId: node.id, revision: model.revision })}>{node.widgetId}</button>{reorderHandle(node.id)}{controls('move')}{controls('resize')}{remove(node.id)}</div> : null}{mounted ? byId.get(node.widgetId) : null}\n        </div>;\n      }} />);\n    };\n    for (const node of items) {\n      if (node.type === 'widget') { run.push(node); continue; }\n      flush();\n      result.push(dropZone({ ...owner, index: items.indexOf(node) }));\n      if (node.type === 'section') result.push(<section key={node.id} data-layout-node-id={node.id} className=\"space-y-3\"><header><h3>{mode === 'edit' ? <button disabled={disabled} onClick={() => onSelect?.({ nodeId: node.id, revision: model.revision })}>{node.title ?? node.id}</button> : node.title ?? node.id}</h3>{node.description ? <p>{node.description}</p> : null}{reorderHandle(node.id)}{mode === 'edit' ? remove(node.id) : null}</header>{nodes(node.children, { type: 'section', sectionId: node.id })}</section>);\n      else {\n        const active = currentTabs[node.id] ?? node.tabs[0]?.id;\n        result.push(<section key={node.id} data-layout-node-id={node.id}><h3>{mode === 'edit' ? <button disabled={disabled} onClick={() => onSelect?.({ nodeId: node.id, revision: model.revision })}>{node.title ?? node.id}</button> : node.title ?? node.id}</h3>{reorderHandle(node.id)}{mode === 'edit' ? remove(node.id) : null}<div role=\"tablist\">{node.tabs.map(tab => <button key={tab.id} type=\"button\" role=\"tab\" aria-selected={active === tab.id} disabled={disabled} onClick={() => {\n          if (mode === 'edit') onSelect?.({ nodeId: tab.id, revision: model.revision });\n          onTabChange?.({ tabsId: node.id, tabId: tab.id, revision: model.revision });\n          if (node.behavior !== 'anchor' || !tab.target) return;\n          const target = tab.target;\n          if (target.type === 'tab') onTabChange?.({ tabsId: target.tabsId, tabId: target.id, revision: model.revision });\n          requestAnimationFrame(() => {\n            const candidates = canvas.current?.querySelectorAll<HTMLElement>('[data-layout-node-id], [data-layout-widget], [data-layout-tab-id]');\n            const match = candidates && [...candidates].find(element => target.type === 'widget' ? element.dataset.layoutWidget === target.id : target.type === 'tab' ? element.dataset.layoutTabId === target.id && element.dataset.layoutTabsId === target.tabsId : element.dataset.layoutNodeId === target.id);\n            match?.scrollIntoView({ behavior: typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth', block: 'start', inline: 'nearest' });\n          });\n        }}>{tab.label ?? tab.id}</button>)}</div>{node.tabs.map(tab => <div key={tab.id} role=\"tabpanel\" data-layout-tab-id={tab.id} data-layout-tabs-id={node.id} hidden={node.behavior !== 'anchor' && active !== tab.id}>{nodes(tab.children, { type: 'tab', tabsId: node.id, tabId: tab.id })}</div>)}</section>);\n      }\n    }\n    flush(); result.push(dropZone({ ...owner, index: items.length })); return result;\n  };\n  return <div ref={canvas} className={className} data-layout-canvas>{nodes(displayed.root, { type: 'root' })}<Dialog open={Boolean(removal)} onOpenChange={open => { if (!open) setRemoval(undefined); }}><DialogContent><DialogTitle>{labels.confirmRemove}</DialogTitle><DialogDescription>{labels.removeDescription}</DialogDescription><button type=\"button\" onClick={() => setRemoval(undefined)}>{labels.cancel}</button><button type=\"button\" disabled={disabled} onClick={() => { if (removal) commit(removal.model, { type: 'remove', nodeId: removal.nodeId }); setRemoval(undefined); }}>{labels.remove}</button></DialogContent></Dialog></div>;\n}\n","import { useEffect, useRef, type ReactNode } from 'react';\nimport { LAYOUT_CATALOG_DRAG_MIME } from './layoutCatalogDrag';\n\nexport interface LayoutCatalogItemProps {\n  catalogItemId: string;\n  disabled?: boolean;\n  children?: ReactNode;\n  className?: string;\n  onInsertRequest?: (event: { catalogItemId: string }) => void;\n  onDragStateChange?: (event: { catalogItemId: string; active: boolean }) => void;\n}\n\nexport function LayoutCatalogItem({ catalogItemId, disabled = false, children, className, onInsertRequest, onDragStateChange }: LayoutCatalogItemProps) {\n  if (typeof catalogItemId !== 'string' || !catalogItemId.trim() || catalogItemId.length > 256 || /[\\u0000-\\u001f\\u007f-\\u009f]/.test(catalogItemId) || ['__proto__', 'prototype', 'constructor'].includes(catalogItemId)) {\n    throw new TypeError('Invalid layout catalog item ID.');\n  }\n  const active = useRef<{ catalogItemId: string; notify: LayoutCatalogItemProps['onDragStateChange'] }>();\n  const suppressClick = useRef(false);\n  const finish = () => {\n    const previous = active.current;\n    active.current = undefined;\n    if (previous) previous.notify?.({ catalogItemId: previous.catalogItemId, active: false });\n  };\n  useEffect(() => () => finish(), [catalogItemId, disabled]);\n  return <button type=\"button\" className={className} disabled={disabled} draggable={!disabled}\n    onPointerDown={() => { if (!active.current) suppressClick.current = false; }}\n    onKeyDown={event => { if (!active.current && (event.key === 'Enter' || event.key === ' ')) suppressClick.current = false; }}\n    onClick={event => {\n      if (disabled || suppressClick.current) { event.preventDefault(); return; }\n      onInsertRequest?.({ catalogItemId });\n    }}\n    onDragStart={event => {\n      if (disabled) { event.preventDefault(); return; }\n      finish();\n      event.dataTransfer.clearData();\n      event.dataTransfer.setData(LAYOUT_CATALOG_DRAG_MIME, catalogItemId);\n      event.dataTransfer.effectAllowed = 'copy';\n      suppressClick.current = true;\n      active.current = { catalogItemId, notify: onDragStateChange };\n      onDragStateChange?.({ catalogItemId, active: true });\n    }}\n    onDragEnd={finish}\n  >{children}</button>;\n}\n","import { useLayoutEffect, useRef, type ReactNode } from 'react';\n\nexport interface TemplateTextEditorProps {\n  value: string;\n  tokens: readonly { value: string; label: string; disabled?: boolean }[];\n  disabled?: boolean;\n  readOnly?: boolean;\n  ariaLabel: string;\n  tokenGroupLabel: string;\n  maxLength?: number;\n  onChange?: (event: { value: string }) => void;\n}\n\n/** Tokens are literal text, never evaluated as templates. */\nexport function TemplateTextEditor({ value, tokens, disabled = false, readOnly = false, ariaLabel, tokenGroupLabel, maxLength, onChange }: TemplateTextEditorProps): ReactNode {\n  const textarea = useRef<HTMLTextAreaElement>(null);\n  const composing = useRef(false);\n  const pending = useRef<{ previous: string; value: string; caret: number }>();\n  useLayoutEffect(() => {\n    const request = pending.current;\n    if (!request) return;\n    if (disabled || readOnly || (value !== request.previous && value !== request.value)) {\n      pending.current = undefined;\n    } else if (value === request.value) {\n      pending.current = undefined;\n      textarea.current?.focus();\n      textarea.current?.setSelectionRange(request.caret, request.caret);\n    }\n  }, [value, disabled, readOnly]);\n  useLayoutEffect(() => () => { pending.current = undefined; }, []);\n  const fits = (next: string) => maxLength === undefined || next.length <= maxLength;\n  return <div>\n    <textarea ref={textarea} value={value} disabled={disabled} readOnly={readOnly} aria-label={ariaLabel} maxLength={maxLength}\n      onCompositionStart={() => { composing.current = true; pending.current = undefined; }}\n      onCompositionEnd={() => { composing.current = false; }}\n      onChange={event => {\n        pending.current = undefined;\n        if (!disabled && !readOnly && fits(event.currentTarget.value)) onChange?.({ value: event.currentTarget.value });\n      }}\n    />\n    <div role=\"group\" aria-label={tokenGroupLabel}>{tokens.map((token, index) => <button key={index} type=\"button\" disabled={disabled || readOnly || token.disabled}\n      onMouseDown={event => event.preventDefault()}\n      onClick={() => {\n        const input = textarea.current;\n        if (!input || disabled || readOnly || token.disabled || composing.current || pending.current) return;\n        const start = input.selectionStart, end = input.selectionEnd;\n        const next = value.slice(0, start) + token.value + value.slice(end);\n        if (!fits(next) || next === value) return;\n        pending.current = { previous: value, value: next, caret: start + token.value.length };\n        onChange?.({ value: next });\n      }}\n    >{token.label}</button>)}</div>\n  </div>;\n}\n","import { BaseButton } from '../base/BaseButton';\nimport { BaseBadge } from '../base/BaseBadge';\nimport { BaseSelect } from '../base/BaseSelect';\nimport { useMonkeysLocale } from '../../provider/context';\n\nexport interface RuntimeSourceControlFile { path: string; status: string; indexStatus?: string; worktreeStatus?: string }\nexport interface RuntimeSourceControlCommit { id: string; shortId: string; message: string; author?: string; date?: string; refs?: readonly string[]; files: readonly { path: string; status?: string }[] }\nexport interface RuntimeSourceControlModel {\n  scopeId: string;\n  revision: string;\n  repositories: readonly { id: string; name: string; branch?: string; upstream?: string; ahead?: number; behind?: number; changes: readonly RuntimeSourceControlFile[]; commits: readonly RuntimeSourceControlCommit[] }[];\n  selectedRepositoryId?: string;\n  expandedCommitIds: readonly string[];\n}\ntype SourceControlAction = (\n  { action: 'refresh' } |\n  { action: 'select-repository'; repositoryId: string } |\n  { action: 'open-file' | 'open-diff'; repositoryId: string; path: string } |\n  { action: 'toggle-commit'; repositoryId: string; commitId: string; expanded: boolean }\n);\nexport type RuntimeSourceControlIntent = { scopeId: string; expectedRevision: string } & SourceControlAction;\nexport interface RuntimeSourceControlViewProps {\n  model: RuntimeSourceControlModel;\n  labels: { repositories: string; branch: string; upstream: string; ahead: string; behind: string; status: string; history: string; refresh: string; openFile: string; openDiff: string; empty: string; loading: string; remainingFiles: string; unknownDate: string };\n  locale?: string;\n  timeZone?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  onIntent?: (intent: RuntimeSourceControlIntent) => void;\n}\n\nexport function RuntimeSourceControlView({ model, labels, locale, timeZone, disabled = false, loading = false, onIntent }: RuntimeSourceControlViewProps) {\n  const { locale: providerLocale } = useMonkeysLocale();\n  const blocked = disabled || loading;\n  const repository = model.repositories.find(item => item.id === model.selectedRepositoryId);\n  const emit = (intent: SourceControlAction) => {\n    if (!blocked) onIntent?.({ ...intent, scopeId: model.scopeId, expectedRevision: model.revision });\n  };\n  let dateFormatter: Intl.DateTimeFormat | undefined;\n  try { dateFormatter = new Intl.DateTimeFormat(locale ?? providerLocale, { dateStyle: 'medium', timeStyle: 'short', timeZone }); } catch { /* Invalid locale/time zone renders the explicit date placeholder. */ }\n  return <section aria-busy={loading} className=\"flex min-h-0 flex-col gap-3 text-sm\">\n    <div className=\"flex items-center gap-2\">\n      <label>{labels.repositories}<BaseSelect aria-label={labels.repositories} disabled={blocked} value={model.selectedRepositoryId ?? ''} onChange={event => emit({ action: 'select-repository', repositoryId: event.currentTarget.value })}>\n        <option value=\"\" disabled>{labels.repositories}</option>{model.repositories.map(item => <option key={item.id} value={item.id}>{item.name}</option>)}\n      </BaseSelect></label>\n      <BaseButton size=\"sm\" disabled={blocked} onClick={() => emit({ action: 'refresh' })}>{labels.refresh}</BaseButton>\n    </div>\n    {loading && <p role=\"status\">{labels.loading}</p>}\n    {!repository ? <p>{labels.empty}</p> : <>\n      <dl className=\"flex flex-wrap gap-3\"><div><dt>{labels.branch}</dt><dd>{repository.branch ?? '—'}</dd></div>{repository.upstream && <div><dt>{labels.upstream}</dt><dd>{repository.upstream}</dd></div>}<div><dt>{labels.ahead}</dt><dd>{repository.ahead ?? 0}</dd></div><div><dt>{labels.behind}</dt><dd>{repository.behind ?? 0}</dd></div></dl>\n      <h3>{labels.status}</h3>\n      {repository.changes.length === 0 && <p>{labels.empty}</p>}\n      <ul className=\"flex flex-col gap-1\">{repository.changes.map(file => <li key={file.path} className=\"flex flex-wrap items-center gap-2\">\n        <BaseBadge label={file.status} /><span className=\"min-w-0 break-all\">{file.path}</span>\n        {file.indexStatus && <code>{file.indexStatus}</code>}{file.worktreeStatus && <code>{file.worktreeStatus}</code>}\n        <BaseButton size=\"sm\" disabled={blocked} onClick={() => emit({ action: 'open-file', repositoryId: repository.id, path: file.path })}>{labels.openFile}</BaseButton>\n        <BaseButton size=\"sm\" disabled={blocked} onClick={() => emit({ action: 'open-diff', repositoryId: repository.id, path: file.path })}>{labels.openDiff}</BaseButton>\n      </li>)}</ul>\n      <h3>{labels.history}</h3>\n      {repository.commits.length === 0 && <p>{labels.empty}</p>}\n      <ol className=\"flex flex-col gap-2\">{repository.commits.map(commit => {\n        const expanded = model.expandedCommitIds.includes(commit.id);\n        const date = commit.date ? new Date(commit.date) : undefined;\n        const validDate = date && Number.isFinite(date.getTime());\n        return <li key={commit.id}>\n          <BaseButton size=\"sm\" disabled={blocked} aria-expanded={expanded} onClick={() => emit({ action: 'toggle-commit', repositoryId: repository.id, commitId: commit.id, expanded: !expanded })}>{commit.shortId} {commit.message}</BaseButton>\n          <div className=\"flex flex-wrap gap-2\"><span>{commit.author}</span>{validDate && dateFormatter ? <time dateTime={date.toISOString()}>{dateFormatter.format(date)}</time> : <span>{labels.unknownDate}</span>}{commit.refs?.map(ref => <BaseBadge key={ref} label={ref} />)}</div>\n          {expanded && <><ul>{commit.files.slice(0, 8).map(file => <li key={file.path} className=\"flex gap-2\"><span className=\"break-all\">{file.path}</span>{file.status && <BaseBadge label={file.status} />}</li>)}</ul>{commit.files.length > 8 && <p>{labels.remainingFiles}: {commit.files.length - 8}</p>}</>}\n        </li>;\n      })}</ol>\n    </>}\n  </section>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { BaseButton, BaseInput, BaseTextarea, BaseSelect, BaseCheckbox } from '../base';\nimport type { I18nText } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { resolveI18nDisplayText } from '../capabilities/localizedDisplayValue';\n\nexport interface OrderedSelectionRow { id: string; label?: string; labelKey?: string; labelI18n?: I18nText; description?: string; descriptionKey?: string; descriptionI18n?: I18nText; showId?: boolean; missing?: boolean; disabled?: boolean }\nexport interface OrderedSelectionModel {\n  scopeId: string; revision: string; titleKey?: string; descriptionKey?: string; selectedIds: string[]; selectedRows?: OrderedSelectionRow[];\n  candidates?: OrderedSelectionRow[]; mode?: 'options' | 'ids'; loading?: boolean; pending?: boolean; readOnly?: boolean;\n  selectionMode?: 'single' | 'multiple'; minSelected?: number; maxSelected?: number;\n  showSubmit?: boolean; showCancel?: boolean;\n  search?: string; groupId?: string; groups?: OrderedSelectionRow[];\n  pagination?: { hasMore: boolean; nextCursor?: string; loadingMore?: boolean };\n  append?: { revision: string; rows: OrderedSelectionRow[] };\n  allowCreate?: boolean; allowCopy?: boolean; canBrowse?: boolean; errorCode?: string;\n}\nexport type OrderedSelectionError = 'ORDERED_SELECTION_LIMIT_EXCEEDED' | 'ORDERED_SELECTION_BYTES_EXCEEDED' | 'ORDERED_SELECTION_INVALID_MODEL';\nexport type OrderedSelectionIntent = { scopeId: string } & (\n  | { type: 'change' | 'submit'; selectedIds: string[]; selectedCount: number; expectedRevision: string }\n  | { type: 'search' | 'group-change'; value: string }\n  | { type: 'load-more'; cursor: string }\n  | { type: 'copy'; id: string }\n  | { type: 'create' | 'retry' | 'cancel' }\n  | { type: 'error'; code: OrderedSelectionError }\n);\nexport interface OrderedSelectionProps { model: OrderedSelectionModel; onIntent(intent: OrderedSelectionIntent): void; translate(key: string): string }\nexport const ORDERED_SELECTION_MAX_ITEMS = 10000;\nexport const ORDERED_SELECTION_MAX_GROUPS = ORDERED_SELECTION_MAX_ITEMS + 2;\nexport const ORDERED_SELECTION_MAX_BYTES = 1024 * 1024;\nconst validId = (id: string) => typeof id === 'string' && id.trim().length > 0 && id.length <= 256 && !/[\\u0000-\\u001f\\u007f-\\u009f]/.test(id);\nexport function validateOrderedSelection(ids: readonly string[]): OrderedSelectionError | undefined {\n  if (ids.length > ORDERED_SELECTION_MAX_ITEMS) return 'ORDERED_SELECTION_LIMIT_EXCEEDED';\n  if (ids.some(id => !validId(id)) || new Set(ids).size !== ids.length) return 'ORDERED_SELECTION_INVALID_MODEL';\n  if (new TextEncoder().encode(JSON.stringify(ids)).byteLength > ORDERED_SELECTION_MAX_BYTES) return 'ORDERED_SELECTION_BYTES_EXCEEDED';\n}\nexport function OrderedSelection(props: OrderedSelectionProps) {\n  return <SelectionDraft key={JSON.stringify([props.model.scopeId, props.model.revision])} {...props} />;\n}\nfunction SelectionDraft({ model, onIntent, translate: t }: OrderedSelectionProps) {\n  const { locale } = useMonkeysLocale();\n  const [ids, setIds] = useState(() => [...model.selectedIds]);\n  const [search, setSearch] = useState(model.search ?? '');\n  const [input, setInput] = useState('');\n  const [error, setError] = useState<OrderedSelectionError | undefined>(() => validateOrderedSelection(model.selectedIds));\n  const [start, setStart] = useState(0);\n\n  const committedIds = useRef(ids);\n  const consumed = useRef(new Set<string>());\n  const cache = useRef(new Map<string, OrderedSelectionRow>());\n  const active = useRef(true);\n  const drag = useRef<string>();\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const blocked = Boolean(model.pending || model.readOnly || model.loading);\n  const latest = useRef({ blocked, model }); latest.current = { blocked, model };\n  const emit = (intent: OrderedSelectionIntent) => { if (active.current && !latest.current.blocked) onIntent(intent); };\n  const appendRows = model.append && !consumed.current.has(model.append.revision) ? model.append.rows : [];\n  const currentRows = [...(model.candidates ?? []), ...appendRows];\n  const selectedSet = new Set(committedIds.current);\n  const selectedAppendRows = (model.append?.rows ?? []).filter(row => selectedSet.has(row.id));\n  for (const row of [...(model.selectedRows ?? []).filter(row => selectedSet.has(row.id)), ...selectedAppendRows, ...currentRows]) if (validId(row.id)) cache.current.set(row.id, row);\n  // Unselected metadata from the original model and consumed append must not accumulate.\n  const retained = new Set([...committedIds.current, ...currentRows.map(row => row.id)]);\n  for (const id of cache.current.keys()) if (!retained.has(id)) cache.current.delete(id);\n  const displayIssue = (next: readonly string[]): OrderedSelectionError | undefined => {\n    const groups = model.groups ?? [];\n    if (groups.length > ORDERED_SELECTION_MAX_GROUPS || groups.some(row => !validId(row.id)) || new Set(groups.map(row => row.id)).size !== groups.length) return 'ORDERED_SELECTION_INVALID_MODEL';\n    const displayed = new Map<string, OrderedSelectionRow>();\n    for (const id of next) displayed.set(id, cache.current.get(id) ?? { id });\n    for (const row of currentRows) displayed.set(row.id, row);\n    const bytes = new TextEncoder().encode(JSON.stringify({ selectedIds: next, rows: [...displayed.values()], groups })).byteLength;\n    return bytes > ORDERED_SELECTION_MAX_BYTES ? 'ORDERED_SELECTION_BYTES_EXCEEDED' : undefined;\n  };\n  const label = (id: string) => { const row = cache.current.get(id); return row?.labelI18n ? resolveI18nDisplayText(row.labelI18n, locale) : row?.labelKey ? t(row.labelKey) : row?.label || id; };\n  const rowText = (id: string, selected = false) => {\n    const row = cache.current.get(id);\n    const description = row?.descriptionI18n ? resolveI18nDisplayText(row.descriptionI18n, locale) : row?.descriptionKey ? t(row.descriptionKey) : row?.description;\n    const detail = [description, row?.showId ? id : undefined].filter(value => value !== undefined && value !== '').join(' · ');\n    return <span className=\"min-w-0 flex-1 overflow-hidden\"><span className=\"block truncate\">{label(id)}{selected && row?.missing ? ` (${t('Unavailable')})` : ''}</span>{detail ? <span className=\"block truncate text-xs text-muted-foreground\" title={detail}>{detail}</span> : null}</span>;\n  };\n  const max = model.selectionMode === 'single' ? 1 : Math.min(10000, model.maxSelected ?? 10000);\n  const min = model.minSelected ?? 0;\n  const commit = (next: string[]) => {\n    if (latest.current.blocked || !active.current) return false;\n    const issue = next.length > max ? 'ORDERED_SELECTION_LIMIT_EXCEEDED' : validateOrderedSelection(next);\n    const code = issue ?? displayIssue(next);\n    if (code) { setError(code); emit({ type: 'error', scopeId: model.scopeId, code }); return false; }\n    // The append token can be consumed before React commits its queued state update.\n    // Retain the accepted selection through any intervening parent render.\n    committedIds.current = next;\n    setError(undefined); setIds(next); emit({ type: 'change', scopeId: model.scopeId, expectedRevision: model.revision, selectedIds: [...next], selectedCount: next.length }); return true;\n  };\n\n  useEffect(() => {\n    if (!model.append || model.append.rows.length === 0 || blocked || consumed.current.has(model.append.revision)) return;\n    if (commit([...new Set([...ids, ...model.append.rows.map(row => row.id)])])) consumed.current.add(model.append.revision);\n  }, [model.append, blocked, ids]);\n  const move = (id: string, target: number) => { const from = ids.indexOf(id); if (from < 0 || target < 0 || target >= ids.length || from === target) return; const next = [...ids]; next.splice(from, 1); next.splice(target, 0, id); commit(next); };\n  const searchNow = () => emit({ type: 'search', scopeId: model.scopeId, value: search.trim() });\n  const boundsInvalid = !Number.isSafeInteger(min) || !Number.isSafeInteger(max) || min < 0 || max < 0 || min > max;\n  const modelIssue = boundsInvalid ? 'ORDERED_SELECTION_INVALID_MODEL' : displayIssue(ids);\n  const safeCode = modelIssue ?? error ?? (model.errorCode && /^[A-Z][A-Z0-9_]{0,127}$/.test(model.errorCode) ? model.errorCode : model.errorCode ? 'ORDERED_SELECTION_INVALID_MODEL' : undefined);\n  const windowStart = Math.min(start, Math.max(0, ids.length - 1));\n  return <div className=\"flex min-w-0 flex-col gap-3\" data-ordered-selection={model.scopeId}>\n    {safeCode ? <p role=\"alert\">{t(safeCode)}</p> : null}\n    {model.loading ? <p role=\"status\">{t('Loading')}</p> : null}\n    {model.mode === 'ids' ? <div><BaseTextarea aria-label={t('IDs')} disabled={blocked} value={input} onChange={event => setInput(event.target.value)} /><BaseButton disabled={blocked} onClick={() => { commit([...new Set([...ids, ...input.split(/[\\s,;]+/).filter(Boolean)])]); }}>{t('Add')}</BaseButton></div> : <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n      {model.groupId !== undefined ? <BaseSelect aria-label={t('Group')} value={model.groupId} disabled={blocked || model.canBrowse === false} onChange={event => emit({ type: 'group-change', scopeId: model.scopeId, value: event.currentTarget.value })}>{(model.groups ?? []).map(row => <option key={row.id} value={row.id}>{row.labelI18n ? resolveI18nDisplayText(row.labelI18n, locale) : row.labelKey ? t(row.labelKey) : row.label || row.id}</option>)}</BaseSelect> : null}\n      <BaseInput aria-label={t('Search')} value={search} disabled={blocked || model.canBrowse === false} onChange={event => setSearch(event.target.value)} onKeyDown={event => { if (event.key === 'Enter') { event.preventDefault(); searchNow(); } }} />\n      <BaseButton disabled={blocked || model.canBrowse === false} onClick={searchNow}>{t('Search')}</BaseButton>\n      {model.allowCreate ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'create', scopeId: model.scopeId })}>{t('Create')}</BaseButton> : null}\n      <div className=\"w-full space-y-2\" data-ordered-candidates style={{ maxHeight: 384, overflowY: 'auto' }}>{(model.candidates ?? []).map(row => <div key={row.id} className=\"flex items-center gap-2\"><label className=\"flex min-w-0 flex-1 items-center gap-2\"><BaseCheckbox disabled={blocked || row.disabled} checked={ids.includes(row.id)} onChange={event => commit(event.currentTarget.checked ? model.selectionMode === 'single' ? [row.id] : [...new Set([...ids, row.id])] : ids.filter(id => id !== row.id))} />{rowText(row.id)}</label>{model.allowCopy ? <BaseButton disabled={blocked || row.disabled} onClick={() => emit({ type: 'copy', scopeId: model.scopeId, id: row.id })}>{t('Copy')}</BaseButton> : null}</div>)}</div>\n      {model.pagination?.hasMore && model.pagination.nextCursor ? <BaseButton disabled={blocked || model.canBrowse === false || model.pagination.loadingMore} onClick={() => emit({ type: 'load-more', scopeId: model.scopeId, cursor: model.pagination!.nextCursor! })}>{t('Load more')}</BaseButton> : null}\n    </div>}\n    <BaseButton className=\"self-start\" disabled={blocked || ids.length === 0} onClick={() => commit([])}>{t('Clear')}</BaseButton>\n    <div role=\"status\" aria-live=\"polite\">{ids.length} / {ORDERED_SELECTION_MAX_ITEMS}</div>\n    <div data-ordered-viewport style={{ height: Math.min(384, ids.length * 48), overflowY: 'auto' }} onScroll={event => setStart(Math.max(0, Math.floor(event.currentTarget.scrollTop / 48) - 2))}>\n      <ol aria-label={t('Selected')} style={{ height: ids.length * 48, position: 'relative', margin: 0 }}>\n        {ids.slice(windowStart, windowStart + 14).map((id, offset) => { const index = windowStart + offset; return <li key={id} data-ordered-id={id} aria-posinset={index + 1} aria-setsize={ids.length} style={{ position: 'absolute', top: index * 48, height: 48, left: 0, right: 0, display: 'flex', gap: 8 }} onDragOver={event => { if (!blocked && drag.current) event.preventDefault(); }} onDrop={event => { event.preventDefault(); if (drag.current && event.dataTransfer.getData('application/x-monkeys-ordered-selection') === drag.current) move(drag.current, index); drag.current = undefined; }}>\n          <BaseButton data-ordered-drag={id} aria-label={t('Move')} disabled={blocked} draggable={!blocked} onDragStart={event => { if (blocked) return event.preventDefault(); drag.current = id; event.dataTransfer.setData('application/x-monkeys-ordered-selection', id); }} onDragEnd={() => { drag.current = undefined; }} onKeyDown={event => { if (event.key === 'ArrowUp' || event.key === 'ArrowDown') { event.preventDefault(); move(id, index + (event.key === 'ArrowUp' ? -1 : 1)); } }}>↕</BaseButton>\n          {rowText(id, true)}\n          <BaseButton disabled={blocked || index === 0} aria-label={t('Move up')} onClick={() => move(id, index - 1)}>↑</BaseButton><BaseButton disabled={blocked || index === ids.length - 1} aria-label={t('Move down')} onClick={() => move(id, index + 1)}>↓</BaseButton><BaseButton disabled={blocked} aria-label={t('Remove')} onClick={() => commit(ids.filter(value => value !== id))}>×</BaseButton>\n        </li>; })}\n      </ol>\n    </div>\n    <div className=\"flex flex-wrap items-center gap-2\">\n    {model.showSubmit !== false ? <BaseButton disabled={blocked || Boolean(error || modelIssue) || ids.length < min || ids.length > max} onClick={() => emit({ type: 'submit', scopeId: model.scopeId, expectedRevision: model.revision, selectedIds: [...ids], selectedCount: ids.length })}>{t('Save')}</BaseButton> : null}\n    {model.showCancel !== false ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'cancel', scopeId: model.scopeId })}>{t('Cancel')}</BaseButton> : null}\n    {model.errorCode ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'retry', scopeId: model.scopeId })}>{t('Retry')}</BaseButton> : null}\n    </div>\n  </div>;\n}\n","import ReactMarkdown, { type Components, defaultUrlTransform } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { cn } from '../base/utils';\n\nconst markdownComponents: Components = {\n  h1: ({ children }) => <h1 className=\"mb-3 mt-6 text-xl font-bold first:mt-0\">{children}</h1>,\n  h2: ({ children }) => <h2 className=\"mb-3 mt-6 text-lg font-semibold first:mt-0\">{children}</h2>,\n  h3: ({ children }) => <h3 className=\"mb-2 mt-5 text-base font-semibold first:mt-0\">{children}</h3>,\n  h4: ({ children }) => <h4 className=\"mb-2 mt-4 text-sm font-semibold first:mt-0\">{children}</h4>,\n  p: ({ children }) => <p className=\"my-3 break-words leading-6 first:mt-0 last:mb-0\">{children}</p>,\n  ul: ({ children }) => <ul className=\"my-3 list-disc space-y-1 pl-6\">{children}</ul>,\n  ol: ({ children }) => <ol className=\"my-3 list-decimal space-y-1 pl-6\">{children}</ol>,\n  li: ({ children }) => <li className=\"break-words leading-6\">{children}</li>,\n  blockquote: ({ children }) => (\n    <blockquote className=\"my-4 border-l-4 border-border bg-muted/35 px-4 py-1 text-muted-foreground\">\n      {children}\n    </blockquote>\n  ),\n  a: ({ children, href }) => (\n    <a\n      className=\"break-all font-medium text-primary underline-offset-4 hover:underline\"\n      href={href}\n      target=\"_blank\"\n      rel=\"noreferrer noopener\"\n    >\n      {children}\n    </a>\n  ),\n  pre: ({ children }) => (\n    <pre className=\"my-4 max-w-full overflow-x-auto rounded-lg border border-border/60 bg-muted/45 p-4 text-xs leading-5\">\n      {children}\n    </pre>\n  ),\n  code: ({ className, children }) => (\n    <code\n      className={cn(\n        className,\n        'break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.9em] [pre_&]:break-normal [pre_&]:bg-transparent [pre_&]:p-0',\n      )}\n    >\n      {children}\n    </code>\n  ),\n  table: ({ children }) => (\n    <div className=\"my-4 max-w-full overflow-x-auto rounded-lg border border-border/60\">\n      <table className=\"min-w-full border-collapse text-sm\">{children}</table>\n    </div>\n  ),\n  thead: ({ children }) => <thead className=\"bg-muted/55\">{children}</thead>,\n  tbody: ({ children }) => <tbody className=\"divide-y divide-border/60\">{children}</tbody>,\n  tr: ({ children }) => <tr className=\"divide-x divide-border/60\">{children}</tr>,\n  th: ({ children }) => <th className=\"whitespace-nowrap px-3 py-2 text-left font-semibold\">{children}</th>,\n  td: ({ children }) => <td className=\"min-w-32 px-3 py-2 align-top\">{children}</td>,\n  hr: () => <hr className=\"my-6 border-border\" />,\n};\n\nexport function MarkdownContent({ content, className }: { content: string; className?: string }) {\n  const markdown = String(content || '').trim();\n\n  if (!markdown) {\n    return <div className={cn('text-sm text-muted-foreground', className)}>—</div>;\n  }\n\n  return (\n    <div className={cn('min-w-0 max-w-full text-sm text-foreground', className)} data-monkeys-component=\"markdown-content\">\n      <ReactMarkdown\n        remarkPlugins={[remarkGfm]}\n        components={markdownComponents}\n        skipHtml\n        urlTransform={defaultUrlTransform}\n      >\n        {markdown}\n      </ReactMarkdown>\n    </div>\n  );\n}\n"]}