{"version":3,"sources":["../../../src/components/data-explorer/appearanceContext.tsx","../../../src/components/data-explorer/utils.ts","../../../src/components/data-explorer/theme.ts","../../../src/components/data-explorer/DataExplorerButton.tsx","../../../src/components/data-explorer/DataExplorerCheckbox.tsx","../../../src/components/data-explorer/DataExplorerSelect.tsx","../../../src/components/data-explorer/DataExplorerToolbarActions.tsx","../../../src/components/data-explorer/DataExplorerActionBar.tsx","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BasePagination.tsx","../../../src/components/base/BaseListFooter.tsx","../../../src/components/primitives/internal/overlaySurface.ts","../../../src/components/primitives/InteractiveControls.tsx","../../../src/components/primitives/FormControls.tsx","../../../src/components/primitives/Menus.tsx","../../../src/components/primitives/MediaPreview.tsx","../../../src/components/data-explorer/DataExplorerCollectionFooter.tsx","../../../src/components/data-explorer/DataExplorerFilterBar.tsx","../../../src/components/data-explorer/DataExplorerSplitButton.tsx","../../../src/components/data-explorer/DataExplorerDetailField.tsx","../../../src/components/data-explorer/DataExplorerDetailSection.tsx","../../../src/components/data-explorer/DataExplorerDetailShell.tsx","../../../src/components/data-explorer/DataExplorerDraggableTree.tsx","../../../src/components/data-explorer/DataExplorerDisplayActionMenu.tsx","../../../src/components/data-explorer/DataExplorerDisplayMedia.tsx","../../../src/components/data-explorer/DataExplorerDisplayCard.tsx","../../../src/components/data-explorer/DataExplorerViewItemShell.tsx","../../../src/components/data-explorer/DataExplorerViewItem.tsx","../../../src/components/data-explorer/DataExplorerViewCollection.tsx","../../../src/components/data-explorer/DataExplorerDisplayListItem.tsx","../../../src/components/data-explorer/DataExplorerDisplayCollectionView.tsx","../../../src/components/data-explorer/DataExplorerImagePreview.tsx","../../../src/components/safeDisplayUrl.ts","../../../src/components/data-explorer/DataExplorerMediaPreview.tsx","../../../src/components/data-explorer/DataExplorerPage.tsx","../../../src/components/data-explorer/DataExplorerRecordCard.tsx","../../../src/components/data-explorer/DataExplorerRecordPicker.tsx","../../../src/components/data-explorer/DataExplorerUploadSurface.tsx","../../../src/components/data-explorer/DataExplorerToolbarShell.tsx","../../../src/components/data-explorer/DataExplorerTree.tsx","../../../src/components/data-explorer/DataExplorerTreeShell.tsx","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/data-explorer/DataExplorerView.tsx","../../../src/components/data-explorer/DataExplorerViewShell.tsx"],"names":["jsx","DataExplorerButton","jsxs","CheckIcon","DropdownMenu","ChevronDownIcon","DropdownMenu2","Fragment","hasContent","createContext","useContext","useMemo","cn","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","getPresetDefaults","slotKeys","mergeSlots","mergeStyles","forwardRef","BasePagination","LoadingIcon","React","React2","Check","ChevronDown","React4","useState","DropdownMenu4","useRef","useEffect","activeEntry","DropdownMenu5","useCallback","Icon","ImageIcon","Loader2","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","DropdownMenu6"],"mappings":"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","file":"index.mjs","sourcesContent":["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 { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport type { DataExplorerButtonProps } from './types';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport {\n  getDataExplorerActionToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn } from './utils';\n\nfunction LoadingIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4 animate-spin\"\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 DataExplorerButton = forwardRef<\n  HTMLButtonElement,\n  DataExplorerButtonProps\n>(function DataExplorerButton(\n  {\n    children,\n    label,\n    icon,\n    endIcon,\n    type = 'button',\n    title,\n    ariaLabel,\n    tone,\n    active = false,\n    iconOnly = false,\n    disabled = false,\n    loading = false,\n    stopPropagation = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    onClick,\n    'aria-label': nativeAriaLabel,\n    ...buttonProps\n  },\n  ref,\n) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedLabel = children ?? label;\n  const resolvedDisabled = disabled || loading;\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      {...buttonProps}\n      ref={ref}\n      type={type}\n      title={title}\n      aria-label={ariaLabel ?? nativeAriaLabel}\n      aria-pressed={active || undefined}\n      aria-busy={loading || undefined}\n      disabled={resolvedDisabled}\n      className={cn(\n        theme.slots.controlButton,\n        iconOnly && theme.slots.actionIconButton,\n        getDataExplorerActionToneClassName(theme, tone, active),\n        resolvedDisabled && theme.slots.actionButtonDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(active ? theme.styles.controlActive : undefined),\n        ...(resolvedDisabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n      onClick={handleClick}\n    >\n      {loading ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          <LoadingIcon />\n        </span>\n      ) : icon ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          {icon}\n        </span>\n      ) : null}\n      {iconOnly ? (\n        <span className=\"sr-only\">{resolvedLabel}</span>\n      ) : resolvedLabel ? (\n        <span className={cn(theme.slots.controlButtonLabel, classNames?.label)}>\n          {resolvedLabel}\n        </span>\n      ) : null}\n      {endIcon ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          {endIcon}\n        </span>\n      ) : null}\n    </button>\n  );\n});\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport type { DataExplorerCheckboxProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction CheckIcon() {\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.5\"\n    >\n      <path d=\"m5 12 4 4L19 6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerCheckbox({\n  checked = false,\n  icon,\n  label,\n  title,\n  disabled = false,\n  appearance,\n  className,\n  classNames,\n  style,\n  onCheckedChange,\n}: DataExplorerCheckboxProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n\n  return (\n    <button\n      type=\"button\"\n      title={title}\n      aria-pressed={checked}\n      disabled={disabled}\n      className={cn(\n        theme.slots.controlCheckbox,\n        checked && theme.slots.actionToggleActive,\n        disabled && theme.slots.actionButtonDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(checked ? theme.styles.controlActive : undefined),\n        ...(disabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n      onClick={(event) => {\n        event.stopPropagation();\n        if (disabled) return;\n        void onCheckedChange?.(!checked);\n      }}\n    >\n      <span\n        className={cn(\n          theme.slots.controlCheckboxIndicator,\n          classNames?.indicator,\n          icon !== undefined && icon !== null && !checked && classNames?.icon,\n        )}\n      >\n        {checked ? <CheckIcon /> : icon}\n      </span>\n      {label ? (\n        <span className={cn(theme.slots.controlCheckboxLabel, classNames?.label)}>\n          {label}\n        </span>\n      ) : null}\n    </button>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type { DataExplorerSelectProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction ChevronDownIcon() {\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      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nfunction CheckIcon() {\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      <path d=\"m5 12 4 4L19 6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerSelect({\n  value = '',\n  options = [],\n  label,\n  placeholder = 'Select',\n  icon,\n  title,\n  triggerLabel,\n  disabled = false,\n  display = 'value',\n  align = 'start',\n  sideOffset = 6,\n  appearance,\n  className,\n  classNames,\n  style,\n  onValueChange,\n}: DataExplorerSelectProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const selected = options.find((option) => option.value === value);\n  const valueNode =\n    display === 'label-value' && label ? (\n      <>\n        <span>{label}</span>\n        <span className=\"text-muted-foreground\">\n          {selected?.label ?? placeholder}\n        </span>\n      </>\n    ) : (\n      selected?.label ?? label ?? placeholder\n    );\n\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        <button\n          type=\"button\"\n          title={title}\n          aria-label={triggerLabel}\n          disabled={disabled || options.length === 0}\n          className={cn(\n            theme.slots.controlSelectTrigger,\n            classNames?.trigger,\n            classNames?.root,\n            className,\n          )}\n          style={{ ...theme.styles.control, ...style }}\n          onClick={(event) => event.stopPropagation()}\n        >\n          {icon ? (\n            <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n              {icon}\n            </span>\n          ) : null}\n          <span\n            className={cn(theme.slots.controlSelectValue, classNames?.value)}\n          >\n            {valueNode}\n          </span>\n          <ChevronDownIcon />\n        </button>\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align={align}\n          sideOffset={sideOffset}\n          className={cn(theme.slots.menuContent, classNames?.content)}\n          style={theme.styles.menuContent}\n          onClick={(event) => event.stopPropagation()}\n        >\n          <DropdownMenu.RadioGroup\n            value={value}\n            onValueChange={(nextValue) => {\n              if (disabled) return;\n              void onValueChange?.(nextValue);\n            }}\n          >\n            {options.map((option) => (\n              <DropdownMenu.RadioItem\n                key={option.value}\n                value={option.value}\n                title={option.title}\n                disabled={option.disabled}\n                className={cn(theme.slots.menuItem, classNames?.item)}\n                style={theme.styles.menuItem}\n              >\n                <span className={cn(theme.slots.menuItemIcon, classNames?.itemIcon)}>\n                  {option.value === value ? <CheckIcon /> : option.icon}\n                </span>\n                <span className={cn(theme.slots.menuItemLabel, classNames?.itemLabel)}>\n                  {option.label}\n                </span>\n              </DropdownMenu.RadioItem>\n            ))}\n          </DropdownMenu.RadioGroup>\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport { DataExplorerButton } from './DataExplorerButton';\nimport { DataExplorerCheckbox } from './DataExplorerCheckbox';\nimport { DataExplorerSelect } from './DataExplorerSelect';\nimport type {\n  DataExplorerToolbarAction,\n  DataExplorerToolbarActionItem,\n  DataExplorerToolbarActionsProps,\n} from './types';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\ntype ResolvedTheme = ReturnType<typeof resolveDataExplorerAppearance>;\n\nfunction ChevronDownIcon() {\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      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nfunction resolveActionDisabled<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n) {\n  return (\n    resolveDataExplorerValue(action.disabled, context) ??\n    resolveDataExplorerValue(action.loading, context) ??\n    false\n  );\n}\n\nfunction getActionCallback<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n) {\n  return action.onAction ?? action.onClick;\n}\n\nfunction renderMenuItem<TContext>(\n  action: DataExplorerToolbarActionItem<TContext>,\n  context: TContext | undefined,\n  theme: ResolvedTheme,\n  className?: string,\n) {\n  const disabled =\n    (resolveDataExplorerValue(action.disabled, context) ?? false) ||\n    (resolveDataExplorerValue(action.loading, context) ?? false);\n  const active = resolveDataExplorerValue(action.active, context) ?? false;\n\n  return (\n    <div key={action.id}>\n      {action.separatorBefore ? (\n        <DropdownMenu.Separator className={theme.slots.menuSeparator} />\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          className,\n        )}\n        style={theme.styles.menuItem}\n        onSelect={() => {\n          if (!action.onAction || disabled) return;\n          void action.onAction(context as TContext);\n        }}\n      >\n        {action.icon ? (\n          <span className={theme.slots.menuItemIcon}>{action.icon}</span>\n        ) : null}\n        <span className={theme.slots.menuItemLabel}>{action.label}</span>\n      </DropdownMenu.Item>\n      {action.separatorAfter ? (\n        <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n      ) : null}\n    </div>\n  );\n}\n\nfunction renderMenuAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  theme: ResolvedTheme,\n  classNames: DataExplorerToolbarActionsProps<TContext>['classNames'],\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n) {\n  const disabled = resolveActionDisabled(action, context);\n  const active = resolveDataExplorerValue(action.active, context) ?? false;\n  const visibleItems = (action.items ?? []).filter(\n    (item) => resolveDataExplorerValue(item.visible, context) ?? true,\n  );\n\n  return (\n    <DropdownMenu.Root key={action.id}>\n      <DropdownMenu.Trigger asChild>\n        <DataExplorerButton\n          title={action.title}\n          ariaLabel={action.triggerLabel}\n          disabled={disabled || visibleItems.length === 0}\n          label={action.label}\n          icon={action.icon}\n          endIcon={<ChevronDownIcon />}\n          tone={action.tone}\n          active={active}\n          stopPropagation\n          appearance={appearance}\n          className={classNames?.action}\n        />\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align={action.align ?? 'end'}\n          sideOffset={action.sideOffset ?? 6}\n          className={cn(theme.slots.menuContent, classNames?.menuContent)}\n          style={theme.styles.menuContent}\n          onClick={(event) => event.stopPropagation()}\n        >\n          {action.menuLabel ? (\n            <>\n              <DropdownMenu.Label className={theme.slots.menuLabel}>\n                {action.menuLabel}\n              </DropdownMenu.Label>\n              <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n            </>\n          ) : null}\n          {visibleItems.map((item) =>\n            renderMenuItem(item, context, theme, classNames?.menuItem),\n          )}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction renderSelectAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  classNames: DataExplorerToolbarActionsProps<TContext>['classNames'],\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n) {\n  const disabled = resolveActionDisabled(action, context);\n  const value = String(resolveDataExplorerValue(action.value, context) ?? '');\n  const options = action.options ?? [];\n\n  return (\n    <DataExplorerSelect\n      key={action.id}\n      value={value}\n      label={action.label}\n      icon={action.icon}\n      title={action.title}\n      triggerLabel={action.triggerLabel}\n      disabled={disabled}\n      display={action.selectDisplay ?? 'label-value'}\n      align={action.align ?? 'end'}\n      sideOffset={action.sideOffset ?? 6}\n      options={options.map((option) => ({\n        value: option.value,\n        label: option.label,\n        icon: option.icon,\n        title: option.title,\n        disabled: resolveDataExplorerValue(option.disabled, context) ?? false,\n      }))}\n      appearance={appearance}\n      classNames={{\n        trigger: classNames?.action,\n        content: classNames?.menuContent,\n        item: classNames?.menuItem,\n      }}\n      onValueChange={(nextValue) => {\n        if (!action.onValueChange || disabled) return;\n        void action.onValueChange(nextValue, context as TContext);\n      }}\n    />\n  );\n}\n\nfunction renderButtonAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n  className?: string,\n) {\n  const kind = action.kind ?? 'button';\n  const active =\n    kind === 'toggle'\n      ? resolveDataExplorerValue(action.checked, context) ??\n        resolveDataExplorerValue(action.active, context) ??\n        false\n      : resolveDataExplorerValue(action.active, context) ?? false;\n  const disabled = resolveActionDisabled(action, context);\n  const callback = getActionCallback(action);\n\n  if (kind === 'toggle') {\n    return (\n      <DataExplorerCheckbox\n        key={action.id}\n        checked={active}\n        icon={action.icon}\n        label={action.label}\n        title={action.title}\n        disabled={disabled}\n        appearance={appearance}\n        className={className}\n        onCheckedChange={(checked) => {\n          if (action.onCheckedChange) {\n            void action.onCheckedChange(checked, context as TContext);\n          }\n        }}\n      />\n    );\n  }\n\n  return (\n    <DataExplorerButton\n      key={action.id}\n      label={action.label}\n      icon={action.icon}\n      title={action.title}\n      ariaLabel={kind === 'icon-button' ? action.triggerLabel || action.title : undefined}\n      tone={action.tone}\n      active={active}\n      iconOnly={kind === 'icon-button'}\n      disabled={disabled}\n      loading={resolveDataExplorerValue(action.loading, context) ?? false}\n      stopPropagation\n      appearance={appearance}\n      className={className}\n      onClick={() => {\n        if (!callback) return;\n        void callback(context as TContext);\n      }}\n    />\n  );\n}\n\nexport function DataExplorerToolbarActions<TContext = unknown>({\n  context,\n  actions = [],\n  layout = 'action-bar',\n  appearance,\n  empty,\n  children,\n  className,\n  classNames,\n}: DataExplorerToolbarActionsProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const renderedActions = actions\n    .filter((action) => resolveDataExplorerValue(action.visible, context) ?? true)\n    .map((action) => {\n      if (action.render) {\n        return <div key={action.id}>{action.render(context as TContext)}</div>;\n      }\n      if (action.renderTrigger) {\n        return <div key={action.id}>{action.renderTrigger(context as TContext)}</div>;\n      }\n      const renderedAction =\n        action.kind === 'menu'\n          ? renderMenuAction(action, context, theme, classNames, appearance)\n          : action.kind === 'select'\n            ? renderSelectAction(action, context, classNames, appearance)\n            : renderButtonAction(action, context, appearance, classNames?.action);\n\n      if (!action.wrapTrigger) {\n        return renderedAction;\n      }\n\n      return (\n        <div key={action.id}>\n          {action.wrapTrigger(renderedAction, context as TContext)}\n        </div>\n      );\n    });\n\n  if (renderedActions.length === 0 && !children && !empty) return null;\n\n  const layoutClassName =\n    layout === 'action-bar'\n      ? theme.slots.actionBarActions\n      : layout === 'toolbar'\n        ? theme.slots.toolbarActions\n        : 'flex items-center gap-2';\n\n  return (\n    <div className={cn(layoutClassName, classNames?.root, className)}>\n      {renderedActions}\n      {children}\n      {renderedActions.length === 0 && !children ? empty : null}\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport { resolveDataExplorerAppearance } from './theme';\nimport type { DataExplorerActionBarProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerActionBar<TContext = unknown>({\n  context,\n  actions = [],\n  leading,\n  trailing,\n  children,\n  empty,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerActionBarProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n\n  const hasContent =\n    !!leading || !!trailing || !!children || actions.length > 0;\n  const hasRenderableContent = hasContent || !!empty;\n\n  if (!hasRenderableContent) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        theme.slots.actionBarRoot,\n        classNames?.root,\n        className,\n      )}\n    >\n      {leading ? (\n        <div className={cn(theme.slots.actionBarLeading, classNames?.leading)}>\n          {leading}\n        </div>\n      ) : null}\n\n      <DataExplorerToolbarActions\n        context={context}\n        actions={actions}\n        layout=\"action-bar\"\n        appearance={appearance}\n        empty={!hasContent ? empty : undefined}\n        classNames={{\n          root: classNames?.actions,\n          action: classNames?.action,\n        }}\n      >\n        {children}\n      </DataExplorerToolbarActions>\n\n      {trailing ? (\n        <div className={cn(theme.slots.actionBarTrailing, classNames?.trailing)}>\n          {trailing}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n  locale: \"en-US\",\n  messages: {\n    pagination: {\n      navigation: \"Pagination\",\n      first: \"First\",\n      previous: \"Previous\",\n      next: \"Next\",\n      last: \"Last\",\n      page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n      currentPage: ({ page, pageCount }) =>\n        `Page ${page} of ${pageCount}, current page`,\n      emptyResults: \"0 results\",\n      range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n      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 { 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 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","import { forwardRef, useState, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport type { BasePaginationProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\ntype PaginationItem = number | 'ellipsis';\n\nconst paginationModes = new Set(['compact', 'pages']);\n\nfunction clampPage(page: number, pageCount: number) {\n  return Math.min(Math.max(page, 1), Math.max(pageCount, 1));\n}\n\nfunction assertPositiveInteger(value: unknown, name: string) {\n  if (!Number.isSafeInteger(value) || (value as number) < 1) {\n    throw new RangeError(\n      `BasePagination ${name} must be a positive safe integer.`,\n    );\n  }\n}\n\nfunction assertNonNegativeInteger(value: unknown, name: string) {\n  if (!Number.isSafeInteger(value) || (value as number) < 0) {\n    throw new RangeError(\n      `BasePagination ${name} must be a non-negative safe integer.`,\n    );\n  }\n}\n\nfunction assertOptionalControlLabel(value: ReactNode, name: string) {\n  if (typeof value === 'string' && !value.trim()) {\n    throw new TypeError(\n      `BasePagination ${name} must be a non-empty string when provided.`,\n    );\n  }\n}\n\nfunction assertAccessibleName(\n  ariaLabel: unknown,\n  ariaLabelledBy: unknown,\n) {\n  if (\n    ariaLabel !== undefined &&\n    (typeof ariaLabel !== 'string' || !ariaLabel.trim())\n  ) {\n    throw new TypeError(\n      'BasePagination aria-label must be a non-empty string when provided.',\n    );\n  }\n  if (\n    ariaLabelledBy !== undefined &&\n    (typeof ariaLabelledBy !== 'string' || !ariaLabelledBy.trim())\n  ) {\n    throw new TypeError(\n      'BasePagination aria-labelledby must contain at least one valid ID token.',\n    );\n  }\n  if (typeof ariaLabelledBy === 'string') {\n    const tokens = ariaLabelledBy.trim().split(/\\s+/);\n    if (tokens.some((token) => /[\\u0000-\\u001f\\u007f]/u.test(token))) {\n      throw new TypeError(\n        'BasePagination aria-labelledby must contain only valid ID tokens.',\n      );\n    }\n  }\n}\n\nfunction assertLocaleString(value: unknown, name: string) {\n  if (typeof value !== 'string' || !value.trim()) {\n    throw new TypeError(\n      `BasePagination locale ${name} must resolve to a non-empty string.`,\n    );\n  }\n  return value;\n}\n\nfunction getControlContent(value: ReactNode, fallback: string) {\n  return hasRenderableNode(value) ? value : fallback;\n}\n\nfunction getControlAriaLabel(value: ReactNode, fallback: string) {\n  return typeof value === 'string' && value.trim() ? value : fallback;\n}\n\nfunction getPageItems(\n  currentPage: number,\n  pageCount: number,\n  boundaryCount: number,\n  siblingCount: number,\n): PaginationItem[] {\n  const pages = new Set<number>();\n  const addPage = (page: number) => {\n    if (page >= 1 && page <= pageCount) pages.add(page);\n  };\n\n  for (let offset = 0; offset < boundaryCount; offset += 1) {\n    addPage(1 + offset);\n    addPage(pageCount - offset);\n  }\n  for (let offset = -siblingCount; offset <= siblingCount; offset += 1) {\n    addPage(currentPage + offset);\n  }\n\n  const sortedPages = [...pages].sort((left, right) => left - right);\n  const items: PaginationItem[] = [];\n\n  sortedPages.forEach((page, index) => {\n    const previousPage = sortedPages[index - 1];\n    if (previousPage !== undefined) {\n      const gap = page - previousPage;\n      if (gap === 2) items.push(previousPage + 1);\n      if (gap > 2) items.push('ellipsis');\n    }\n    items.push(page);\n  });\n\n  return items;\n}\n\nexport const BasePagination = forwardRef<HTMLDivElement, BasePaginationProps>(\n  function BasePagination(\n    {\n      page,\n      defaultPage,\n      pageSize = 20,\n      total = 0,\n      pageCount: pageCountProp,\n      hasNext,\n      hasPrevious,\n      mode = 'compact',\n      siblingCount = 1,\n      boundaryCount = 1,\n      label,\n      firstLabel,\n      previousLabel,\n      nextLabel,\n      lastLabel,\n      appearance,\n      className,\n      classNames,\n      style,\n      onPageChange,\n      role = 'navigation',\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      ...paginationProps\n    },\n    ref,\n  ) {\n    const messages = useMonkeysLocaleMessages().pagination;\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const [uncontrolledPage, setUncontrolledPage] = useState(\n      () => defaultPage ?? 1,\n    );\n\n    if (page !== undefined) assertPositiveInteger(page, 'page');\n    if (defaultPage !== undefined) {\n      assertPositiveInteger(defaultPage, 'defaultPage');\n    }\n    assertPositiveInteger(pageSize, 'pageSize');\n    assertNonNegativeInteger(total, 'total');\n    if (pageCountProp !== undefined) assertPositiveInteger(pageCountProp, 'pageCount');\n    assertNonNegativeInteger(siblingCount, 'siblingCount');\n    assertNonNegativeInteger(boundaryCount, 'boundaryCount');\n    if (!paginationModes.has(mode)) {\n      throw new TypeError('BasePagination mode must be \"compact\" or \"pages\".');\n    }\n    if (onPageChange !== undefined && typeof onPageChange !== 'function') {\n      throw new TypeError('BasePagination onPageChange must be a function.');\n    }\n    assertOptionalControlLabel(firstLabel, 'firstLabel');\n    assertOptionalControlLabel(previousLabel, 'previousLabel');\n    assertOptionalControlLabel(nextLabel, 'nextLabel');\n    assertOptionalControlLabel(lastLabel, 'lastLabel');\n    assertAccessibleName(ariaLabel, ariaLabelledBy);\n\n    const navigationLabel = assertLocaleString(\n      messages.navigation,\n      'navigation',\n    );\n    const firstMessage = assertLocaleString(messages.first, 'first');\n    const previousMessage = assertLocaleString(messages.previous, 'previous');\n    const nextMessage = assertLocaleString(messages.next, 'next');\n    const lastMessage = assertLocaleString(messages.last, 'last');\n    const pageCount = pageCountProp ?? Math.max(Math.ceil(total / pageSize), 1);\n    const isControlled = page !== undefined;\n    const isUncontrolled = !isControlled && defaultPage !== undefined;\n    const currentPage = clampPage(\n      isControlled ? page : isUncontrolled ? uncontrolledPage : 1,\n      pageCount,\n    );\n    const start = total > 0 ? (currentPage - 1) * pageSize + 1 : 0;\n    const end = Math.min(currentPage * pageSize, total);\n    const canPrevious = hasPrevious ?? currentPage > 1;\n    const canNext = hasNext ?? currentPage < pageCount;\n    const pageItems =\n      mode === 'pages'\n        ? getPageItems(currentPage, pageCount, boundaryCount, siblingCount)\n        : [];\n\n    const requestPage = (requestedPage: number) => {\n      const nextPage = clampPage(requestedPage, pageCount);\n      if (nextPage === currentPage) return;\n      if (isUncontrolled) setUncontrolledPage(nextPage);\n      onPageChange?.(nextPage);\n    };\n\n    const renderControl = (\n      slot: 'first' | 'previous' | 'next' | 'last',\n      targetPage: number,\n      enabled: boolean,\n      content: ReactNode,\n      accessibleLabel: string,\n    ) => (\n      <button\n        type=\"button\"\n        disabled={!enabled}\n        aria-label={accessibleLabel}\n        data-slot={slot}\n        className={cn(\n          theme.slots.paginationButton,\n          !enabled && theme.slots.paginationButtonDisabled,\n          classNames?.button,\n        )}\n        onClick={() => requestPage(targetPage)}\n      >\n        {content}\n      </button>\n    );\n\n    return (\n      <div\n        {...componentAttributes}\n        {...paginationProps}\n        ref={ref}\n        role={role}\n        aria-label={\n          ariaLabel ?? (ariaLabelledBy === undefined ? navigationLabel : undefined)\n        }\n        aria-labelledby={ariaLabelledBy}\n        data-monkeys-component=\"pagination\"\n        data-slot=\"root\"\n        data-mode={mode}\n        data-controlled={isControlled || undefined}\n        data-uncontrolled={isUncontrolled || undefined}\n        className={cn(theme.slots.paginationRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.pagination,\n          ...style,\n        }}\n      >\n        <div\n          aria-live=\"polite\"\n          data-slot=\"info\"\n          className={cn(theme.slots.paginationInfo, classNames?.info)}\n        >\n          {hasRenderableNode(label)\n            ? label\n            : total > 0\n              ? messages.range({ start, end, total })\n              : messages.emptyResults}\n        </div>\n\n        <div\n          data-slot=\"controls\"\n          className={cn(theme.slots.paginationControls, classNames?.controls)}\n        >\n          {mode === 'pages'\n            ? renderControl(\n                'first',\n                1,\n                canPrevious,\n                getControlContent(firstLabel, firstMessage),\n                getControlAriaLabel(firstLabel, firstMessage),\n              )\n            : null}\n          {renderControl(\n            'previous',\n            currentPage - 1,\n            canPrevious,\n            getControlContent(previousLabel, previousMessage),\n            getControlAriaLabel(previousLabel, previousMessage),\n          )}\n\n          {mode === 'compact' ? (\n            <span\n              aria-current=\"page\"\n              aria-label={assertLocaleString(\n                messages.currentPage({ page: currentPage, pageCount }),\n                'currentPage',\n              )}\n              data-slot=\"page\"\n              data-page={currentPage}\n              className={cn(theme.slots.paginationPage, classNames?.page)}\n            >\n              {currentPage} / {pageCount}\n            </span>\n          ) : (\n            pageItems.map((item, index) => {\n              if (item === 'ellipsis') {\n                return (\n                  <span\n                    key={`ellipsis-${index}`}\n                    aria-hidden=\"true\"\n                    data-slot=\"ellipsis\"\n                    className={cn(\n                      theme.slots.paginationEllipsis,\n                      classNames?.ellipsis,\n                    )}\n                  >\n                    &hellip;\n                  </span>\n                );\n              }\n\n              const isCurrent = item === currentPage;\n              return (\n                <button\n                  key={item}\n                  type=\"button\"\n                  aria-current={isCurrent ? 'page' : undefined}\n                  aria-label={assertLocaleString(\n                    isCurrent\n                      ? messages.currentPage({ page: item, pageCount })\n                      : messages.page({ page: item, pageCount }),\n                    isCurrent ? 'currentPage' : 'page',\n                  )}\n                  data-slot=\"page\"\n                  data-page={item}\n                  data-current={isCurrent || undefined}\n                  className={cn(\n                    theme.slots.paginationButton,\n                    isCurrent && theme.slots.paginationPage,\n                    classNames?.button,\n                    isCurrent && classNames?.page,\n                  )}\n                  onClick={() => requestPage(item)}\n                >\n                  {item}\n                </button>\n              );\n            })\n          )}\n\n          {renderControl(\n            'next',\n            currentPage + 1,\n            canNext,\n            getControlContent(nextLabel, nextMessage),\n            getControlAriaLabel(nextLabel, nextMessage),\n          )}\n          {mode === 'pages'\n            ? renderControl(\n                'last',\n                pageCount,\n                canNext,\n                getControlContent(lastLabel, lastMessage),\n                getControlAriaLabel(lastLabel, lastMessage),\n              )\n            : null}\n        </div>\n      </div>\n    );\n  },\n);\n","import { BasePagination } from './BasePagination';\nimport type { BaseListFooterProps } from './types';\nimport { useMonkeysListFooter, useMonkeysLocaleMessages } from '../../provider/context';\nimport { cn } from './utils';\n\nfunction LoadingIcon() {\n  return <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"ml-1 inline-block h-3 w-3 animate-spin\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" className=\"opacity-25\" stroke=\"currentColor\" strokeWidth=\"3\" /><path className=\"opacity-75\" fill=\"currentColor\" d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\" /></svg>;\n}\nexport function BaseListFooter({ total = 0, loadedStart, loadedEnd, selectedCount, page = 1, pageCount, pageSize = 20, pageSizeOptions, showTotal, showPageSize, paginationMode, hasNext, hasPrevious, loading = false, totalLabel, selectedLabel, pageSizeLabel, appearance, className, classNames, onPageChange, onPageSizeChange, onSummaryClick, ...props }: BaseListFooterProps) {\n  const config = useMonkeysListFooter();\n  const messages = useMonkeysLocaleMessages().pagination;\n  const options = [...new Set(pageSizeOptions ?? config.pageSizeOptions ?? [10, 20, 50, 100])].filter((value) => Number.isSafeInteger(value) && value > 0);\n  const showTotalValue = showTotal ?? config.showTotal ?? true;\n  const showPageSizeValue = showPageSize ?? config.showPageSize ?? true;\n  const requestedMode = paginationMode ?? config.paginationMode ?? 'auto';\n  const mode = requestedMode === 'auto' ? (total > 0 ? 'pages' : 'compact') : requestedMode;\n  const hasRange = loadedStart !== undefined && loadedStart > 0 && loadedEnd !== undefined && loadedEnd >= loadedStart;\n  const summary = showTotalValue ? totalLabel ?? (hasRange ? messages.range({ start: loadedStart, end: loadedEnd, total }) : messages.range({ start: total > 0 ? (page - 1) * pageSize + 1 : 0, end: loadedEnd ?? 0, total })) : undefined;\n  const showPagination = Boolean(onPageChange) && (hasNext !== undefined || hasPrevious !== undefined ? Boolean(hasNext || hasPrevious || total > pageSize) : total > pageSize);\n  const align = config.alignment === 'end' ? 'justify-end' : config.alignment === 'start' ? 'justify-start' : 'justify-between';\n  return <div {...props} className={cn('flex min-w-0 flex-wrap items-center gap-3 py-2 text-sm', align, classNames?.root, className)} data-monkeys-component=\"list-footer\" data-density={config.density}>\n    <div className={cn('min-w-0 text-muted-foreground', classNames?.summary)}>{(() => { const content = <>{selectedLabel ?? (selectedCount !== undefined ? messages.selected({ count: selectedCount }) : null)}{selectedCount !== undefined && summary ? <span className=\"mx-2\">·</span> : null}{summary}{loading ? <LoadingIcon /> : null}</>; return onSummaryClick ? <button type=\"button\" className=\"inline-flex items-center\" onClick={onSummaryClick}>{content}</button> : content; })()}</div>\n    {showPagination ? <BasePagination page={page} pageCount={pageCount} pageSize={pageSize} total={total} mode={mode} hasNext={hasNext} hasPrevious={hasPrevious} onPageChange={onPageChange} appearance={appearance} className={classNames?.pagination} classNames={{ info: 'sr-only' }} /> : null}\n    {showPageSizeValue && onPageSizeChange && options.length > 0 ? <label className={cn('inline-flex items-center gap-2 whitespace-nowrap text-muted-foreground', classNames?.pageSize)}><span className=\"sr-only\">{pageSizeLabel ?? messages.pageSize}</span><select aria-label={typeof pageSizeLabel === 'string' ? pageSizeLabel : messages.pageSize} value={String(pageSize)} className=\"h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground\" onChange={(event) => onPageSizeChange(Number(event.currentTarget.value))}>{options.map((size) => <option key={size} value={size}>{size}</option>)}</select></label> : null}\n  </div>;\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 type ControlAppearance = 'standard' | 'compact' | 'shadow';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  appearance?: ControlAppearance;\n}\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, appearance = 'standard', type, ...props }, ref) => (\n  <input\n    ref={ref}\n    type={type}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 text-foreground ring-offset-control-surface transition-[border-color,background-color,color,box-shadow] file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'h-9 rounded-md py-1 text-sm shadow-sm' : 'h-10 rounded-md py-2 text-sm shadow-sm',\n      appearance === 'shadow' && 'rounded-lg shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nInput.displayName = 'Input';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n  appearance?: ControlAppearance;\n}\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, appearance = 'standard', ...props }, ref) => (\n  <textarea\n    ref={ref}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 py-2 text-foreground ring-offset-control-surface placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'min-h-[60px] rounded-md text-sm shadow-sm' : 'min-h-[80px] rounded-md text-sm',\n      appearance === 'shadow' && 'shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nTextarea.displayName = 'Textarea';\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronRight, ChevronUp, Circle } from 'lucide-react';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\n\nconst menuItemClassName = 'relative flex cursor-default 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0';\nconst menuContentClassName = `z-50 min-w-[8rem] overflow-hidden border p-1 ${getOverlaySurfaceClassName('menu')} 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 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\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nexport const DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger ref={ref} className={cn(menuItemClassName, 'data-[state=open]:bg-accent', inset && 'pl-8', className)} {...props}>\n    {children}<ChevronRight aria-hidden=\"true\" className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\nexport const DropdownMenuSubContent = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.SubContent>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>>(\n  ({ className, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return <DropdownMenuPrimitive.SubContent {...componentAttributes} {...props} ref={ref} data-monkeys-component=\"dropdown-menu\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, className)} />;\n  },\n);\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\nexport const DropdownMenuContent = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Content>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>>(\n  ({ className, sideOffset = 4, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return <DropdownMenuPrimitive.Portal><DropdownMenuPrimitive.Content {...componentAttributes} {...props} ref={ref} sideOffset={sideOffset} data-monkeys-component=\"dropdown-menu\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, className)} /></DropdownMenuPrimitive.Portal>;\n  },\n);\nDropdownMenuContent.displayName = 'DropdownMenuContent';\nexport const DropdownMenuItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Item>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean }>(\n  ({ className, inset, ...props }, ref) => <DropdownMenuPrimitive.Item ref={ref} className={cn(menuItemClassName, inset && 'pl-8', className)} {...props} />,\n);\nDropdownMenuItem.displayName = 'DropdownMenuItem';\nexport const DropdownMenuCheckboxItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>>(\n  ({ className, children, checked, ...props }, ref) => (\n    <DropdownMenuPrimitive.CheckboxItem ref={ref} className={cn(menuItemClassName, 'pl-8', className)} checked={checked} {...props}>\n      <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\"><DropdownMenuPrimitive.ItemIndicator><Check aria-hidden=\"true\" className=\"h-4 w-4\" /></DropdownMenuPrimitive.ItemIndicator></span>{children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  ),\n);\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\nexport const DropdownMenuRadioItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>>(\n  ({ className, children, ...props }, ref) => (\n    <DropdownMenuPrimitive.RadioItem ref={ref} className={cn(menuItemClassName, 'pl-8', className)} {...props}>\n      <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\"><DropdownMenuPrimitive.ItemIndicator><Circle aria-hidden=\"true\" className=\"h-2 w-2 fill-current\" /></DropdownMenuPrimitive.ItemIndicator></span>{children}\n    </DropdownMenuPrimitive.RadioItem>\n  ),\n);\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\nexport const DropdownMenuLabel = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Label>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }>(\n  ({ className, inset, ...props }, ref) => <DropdownMenuPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)} {...props} />,\n);\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\nexport const DropdownMenuSeparator = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Separator>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>>(\n  ({ className, ...props }, ref) => <DropdownMenuPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />,\n);\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\nexport const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />;\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\nexport interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n  iconClassName?: string;\n  size?: 'default' | 'sm';\n}\nexport const SelectTrigger = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Trigger>, SelectTriggerProps>(\n  ({ className, children, iconClassName, size = 'default', ...props }, ref) => (\n    <SelectPrimitive.Trigger ref={ref} className={cn('flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-control-surface px-3 py-2 text-left text-sm text-foreground shadow-sm ring-offset-control-surface data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 [&>span]:min-w-0 [&>span]:flex-1 [&>span]:text-left', size === 'sm' && 'h-8 px-2 py-1 text-xs', className)} {...props}>\n      {children}<SelectPrimitive.Icon asChild><ChevronDown aria-hidden=\"true\" className={cn('h-4 w-4 opacity-50', iconClassName)} /></SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  ),\n);\nSelectTrigger.displayName = 'SelectTrigger';\nexport const SelectScrollUpButton = React.forwardRef<React.ElementRef<typeof SelectPrimitive.ScrollUpButton>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.ScrollUpButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}><ChevronUp aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ScrollUpButton>,\n);\nSelectScrollUpButton.displayName = 'SelectScrollUpButton';\nexport const SelectScrollDownButton = React.forwardRef<React.ElementRef<typeof SelectPrimitive.ScrollDownButton>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.ScrollDownButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}><ChevronDown aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ScrollDownButton>,\n);\nSelectScrollDownButton.displayName = 'SelectScrollDownButton';\nexport interface SelectContentProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n  viewportClassName?: string;\n  disableTriggerViewportSizing?: boolean;\n}\nexport const SelectContent = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Content>, SelectContentProps>(\n  ({ className, children, position = 'popper', viewportClassName, disableTriggerViewportSizing = false, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return (\n      <SelectPrimitive.Portal><SelectPrimitive.Content {...componentAttributes} {...props} ref={ref} position={position} data-monkeys-component=\"select\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, 'relative max-h-[var(--radix-select-content-available-height)] overflow-y-auto overflow-x-hidden', position === 'popper' && 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className)}>\n        <SelectScrollUpButton /><SelectPrimitive.Viewport className={cn('p-1', position === 'popper' && 'w-full min-w-[var(--radix-select-trigger-width)]', position === 'popper' && !disableTriggerViewportSizing && 'h-[var(--radix-select-trigger-height)]', viewportClassName)}>{children}</SelectPrimitive.Viewport><SelectScrollDownButton />\n      </SelectPrimitive.Content></SelectPrimitive.Portal>\n    );\n  },\n);\nSelectContent.displayName = 'SelectContent';\nexport const SelectLabel = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Label>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', className)} {...props} />,\n);\nSelectLabel.displayName = 'SelectLabel';\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n  indicatorClassName?: string;\n  itemText?: React.ReactNode;\n  hideIndicator?: boolean;\n}\nexport const SelectItem = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Item>, SelectItemProps>(\n  ({ className, children, indicatorClassName, itemText, hideIndicator = false, ...props }, ref) => (\n    <SelectPrimitive.Item ref={ref} className={cn(menuItemClassName, 'w-full', hideIndicator ? 'px-2' : 'pl-8 pr-2', className)} {...props}>\n      {!hideIndicator ? <span className={cn('absolute left-2 flex h-3.5 w-3.5 items-center justify-center', indicatorClassName)}><SelectPrimitive.ItemIndicator><Check aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ItemIndicator></span> : null}\n      {itemText ? <><SelectPrimitive.ItemText asChild><span className=\"sr-only\">{itemText}</span></SelectPrimitive.ItemText>{children}</> : <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>}\n    </SelectPrimitive.Item>\n  ),\n);\nSelectItem.displayName = 'SelectItem';\nexport const SelectSeparator = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Separator>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />,\n);\nSelectSeparator.displayName = 'SelectSeparator';\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 { useEffect, useRef, useState } from 'react';\nimport { ChevronDown, Loader2 } from 'lucide-react';\n\nimport { BaseListFooter } from '../base/BaseListFooter';\nimport { cn } from '../base/utils';\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n  Input,\n} from '../primitives';\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport type { DataExplorerCollectionFooterProps } from './types';\n\nexport function DataExplorerCollectionFooter({ selectedCount, loadedStart, loadedEnd, total, currentPage = 1, pageSize = Math.max(1, loadedEnd || 1), pageSizeOptions = [], loading, selectedLabel, loadedLabel, pageSizeLabel, pageText, tone = 'default', className, classNames, onJump, onJumpToPage, onPageSizeChange }: DataExplorerCollectionFooterProps) {\n  const messages = useMonkeysLocaleMessages().pagination;\n  const hasRange = typeof loadedStart === 'number' && loadedStart > 0 && loadedEnd >= loadedStart;\n  const resolvedLoadedLabel = loadedLabel ?? (hasRange ? messages.range({ start: loadedStart, end: loadedEnd, total }) : messages.range({ start: 0, end: loadedEnd, total }));\n  const [isEditingJump, setIsEditingJump] = useState(false);\n  const [jumpInput, setJumpInput] = useState(String(currentPage));\n  const jumpInputRef = useRef<HTMLInputElement | null>(null);\n  const maxPage = total > 0 ? Math.max(1, Math.ceil(total / Math.max(1, pageSize))) : 1;\n\n  useEffect(() => {\n    if (!isEditingJump) setJumpInput(String(currentPage));\n  }, [currentPage, isEditingJump]);\n\n  useEffect(() => {\n    if (!isEditingJump) return;\n    const timer = window.setTimeout(() => {\n      jumpInputRef.current?.focus();\n      jumpInputRef.current?.select();\n    }, 0);\n    return () => window.clearTimeout(timer);\n  }, [isEditingJump]);\n\n  if (tone === 'hard-edge') {\n    const confirmJump = () => {\n      const parsed = Math.floor(Number(jumpInput));\n      if (!Number.isFinite(parsed) || Number.isNaN(parsed)) {\n        setJumpInput(String(currentPage));\n        setIsEditingJump(false);\n        return;\n      }\n      const target = Math.min(maxPage, Math.max(1, parsed));\n      setIsEditingJump(false);\n      if (target !== currentPage) onJumpToPage?.(target);\n    };\n    return (\n      <div\n        className={cn('flex items-center border-t bg-background px-4 py-3', classNames?.root, className)}\n        data-monkeys-component=\"collection-footer\"\n        data-tone=\"hard-edge\"\n      >\n        <div className={cn('flex min-w-0 items-center gap-1 whitespace-nowrap text-sm text-muted-foreground', classNames?.summary)}>\n          {selectedCount !== undefined ? <span>{selectedLabel ?? messages.selected({ count: selectedCount })} ·</span> : null}\n          {onJumpToPage && total > 0 ? (\n            isEditingJump ? (\n              <div className=\"flex items-center gap-2\">\n                <span className=\"text-xs text-muted-foreground\">{messages.jumpToPage}</span>\n                <Input\n                  ref={jumpInputRef}\n                  type=\"number\"\n                  inputMode=\"numeric\"\n                  min={1}\n                  max={maxPage}\n                  value={jumpInput}\n                  onChange={(event) => setJumpInput(event.currentTarget.value)}\n                  onKeyDown={(event) => {\n                    if (event.key === 'Enter') {\n                      event.preventDefault();\n                      event.currentTarget.blur();\n                    }\n                    if (event.key === 'Escape') {\n                      event.preventDefault();\n                      setIsEditingJump(false);\n                      setJumpInput(String(currentPage));\n                    }\n                  }}\n                  onBlur={confirmJump}\n                  className=\"h-7 w-20 px-2 text-xs\"\n                  aria-label={messages.jumpToPage}\n                />\n                <span className=\"text-xs text-muted-foreground\">/ {maxPage} {messages.pages}</span>\n              </div>\n            ) : (\n              <button\n                type=\"button\"\n                className={cn('inline-flex items-center text-muted-foreground underline-offset-4 hover:text-foreground hover:underline', classNames?.jumpButton)}\n                onClick={() => {\n                  setJumpInput(String(currentPage));\n                  setIsEditingJump(true);\n                  onJump?.();\n                }}\n                title={messages.clickToJump}\n              >\n                {resolvedLoadedLabel}{pageText ? ` (${pageText})` : null}\n                {loading ? <Loader2 aria-hidden=\"true\" className=\"ml-1 inline-block h-3 w-3 animate-spin\" /> : null}\n              </button>\n            )\n          ) : (\n            <span className=\"inline-flex items-center\">\n              {resolvedLoadedLabel}{pageText ? ` (${pageText})` : null}\n              {loading ? <Loader2 aria-hidden=\"true\" className=\"ml-1 h-3 w-3 animate-spin\" /> : null}\n            </span>\n          )}\n        </div>\n        {onPageSizeChange && pageSizeOptions.length > 0 ? (\n          <div className={cn('ml-auto', classNames?.pageSizeControl)}>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button\n                  type=\"button\"\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className={cn('h-8 gap-1 px-2', classNames?.pageSizeButton)}\n                  aria-label={typeof pageSizeLabel === 'string' ? pageSizeLabel : messages.perLoad}\n                >\n                  {pageSize}\n                  <ChevronDown aria-hidden=\"true\" className=\"h-4 w-4\" />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"w-32\">\n                <DropdownMenuLabel>{pageSizeLabel ?? messages.perLoad}</DropdownMenuLabel>\n                <DropdownMenuSeparator />\n                <DropdownMenuRadioGroup\n                  value={String(pageSize)}\n                  onValueChange={(value) => {\n                    const next = Number(value);\n                    if (Number.isFinite(next)) onPageSizeChange(next);\n                  }}\n                >\n                  {pageSizeOptions.map((size) => (\n                    <DropdownMenuRadioItem key={size} value={String(size)}>{size}</DropdownMenuRadioItem>\n                  ))}\n                </DropdownMenuRadioGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </div>\n        ) : null}\n      </div>\n    );\n  }\n  return <BaseListFooter total={total} loadedStart={loadedStart} loadedEnd={loadedEnd} selectedCount={selectedCount} page={currentPage} pageSize={pageSize} pageSizeOptions={pageSizeOptions} loading={loading} totalLabel={<>{resolvedLoadedLabel} {pageText ? `(${pageText})` : null}</>} selectedLabel={selectedLabel} pageSizeLabel={pageSizeLabel} className={className} classNames={{ root: classNames?.root, summary: classNames?.summary, pageSize: classNames?.pageSizeControl }} onSummaryClick={onJump} onPageSizeChange={onPageSizeChange} />;\n}\n","import type { CSSProperties } from 'react';\n\nimport type { DataExplorerFilterBarProps } from './types';\nimport { cn } from './utils';\n\nfunction toCssSize(value: number | string): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function DataExplorerFilterBar({\n  label,\n  leading,\n  children,\n  actions,\n  maxFieldsHeight = 80,\n  className,\n  classNames,\n  style,\n  ...props\n}: DataExplorerFilterBarProps) {\n  const fieldsViewportStyle: CSSProperties = {\n    maxHeight: toCssSize(maxFieldsHeight),\n  };\n\n  return (\n    <div\n      className={cn(\n        'border-b border-border/60 bg-background px-8 py-3',\n        classNames?.root,\n        className,\n      )}\n      style={style}\n      {...props}\n    >\n      <div\n        className={cn(\n          'flex min-w-0 items-start gap-2 text-sm',\n          classNames?.layout,\n        )}\n      >\n        {label ? (\n          <div\n            className={cn(\n              'flex h-9 shrink-0 items-center font-semibold text-foreground',\n              classNames?.label,\n            )}\n          >\n            {label}\n          </div>\n        ) : null}\n\n        <div\n          className={cn(\n            'min-w-0 flex-1 overflow-y-auto overscroll-contain',\n            classNames?.fieldsViewport,\n          )}\n          style={fieldsViewportStyle}\n        >\n          <div\n            className={cn(\n              'flex flex-wrap items-center gap-2',\n              classNames?.fields,\n            )}\n          >\n            {leading}\n            {children}\n          </div>\n        </div>\n\n        {actions ? (\n          <div\n            className={cn(\n              'flex shrink-0 items-center gap-2',\n              classNames?.actions,\n            )}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport type { MouseEvent } from 'react';\nimport { useState } from 'react';\n\nimport type {\n  DataExplorerSplitButtonItem,\n  DataExplorerSplitButtonProps,\n} from './types';\nimport { getDataExplorerActionToneClassName, resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\nimport { DataExplorerButton } from './DataExplorerButton';\n\nfunction ChevronDownIcon({ open }: { open: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn('h-4 w-4 transition-transform', open && 'rotate-180')}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerSplitButton({\n  label,\n  icon,\n  items = [],\n  onPrimaryAction,\n  onAction,\n  menuLabel,\n  triggerLabel = 'More actions',\n  title,\n  tone,\n  active = false,\n  disabled = false,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerSplitButtonProps) {\n  const [open, setOpen] = useState(false);\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasItems = items.length > 0;\n  const resolvedActive = active || open;\n\n  const handlePrimaryClick = (event: MouseEvent<HTMLButtonElement>) => {\n    if (disabled) return;\n    onPrimaryAction?.(event);\n  };\n\n  return (\n    <DropdownMenu.Root open={hasItems && open} onOpenChange={(nextOpen) => setOpen(hasItems ? nextOpen : false)}>\n      <div\n        className={cn(\n          'inline-flex min-w-0 shrink-0 overflow-hidden rounded-md',\n          getDataExplorerActionToneClassName(theme, tone, resolvedActive),\n          classNames?.root,\n          className,\n        )}\n      >\n        <DataExplorerButton\n          label={label}\n          icon={icon}\n          title={title}\n          disabled={disabled}\n          active={resolvedActive}\n          appearance={appearance}\n          className={cn('rounded-none border-r-0', classNames?.primary)}\n          onClick={handlePrimaryClick}\n        />\n        {hasItems ? (\n          <DropdownMenu.Trigger asChild>\n            <button\n              type=\"button\"\n              aria-label={triggerLabel}\n              title={triggerLabel}\n              disabled={disabled}\n              className={cn(\n                theme.slots.controlButton,\n                'w-9 shrink-0 rounded-none border-l-0 px-0',\n                resolvedActive\n                  ? getDataExplorerActionToneClassName(theme, tone, true)\n                  : getDataExplorerActionToneClassName(theme, tone, false),\n                classNames?.trigger,\n              )}\n              onClick={(event) => event.stopPropagation()}\n            >\n              <ChevronDownIcon open={open} />\n            </button>\n          </DropdownMenu.Trigger>\n        ) : null}\n      </div>\n      {hasItems ? (\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align=\"start\"\n            sideOffset={6}\n            className={cn(theme.slots.menuContent, classNames?.content)}\n            style={theme.styles.menuContent}\n          >\n            {menuLabel ? (\n              <>\n                <DropdownMenu.Label className={theme.slots.menuLabel}>{menuLabel}</DropdownMenu.Label>\n                <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n              </>\n            ) : null}\n            {items.map((item: DataExplorerSplitButtonItem) => (\n              <DropdownMenu.Item\n                key={item.id}\n                title={item.title}\n                disabled={item.disabled}\n                className={cn(\n                  theme.slots.menuItem,\n                  getDataExplorerActionToneClassName(theme, item.tone, false),\n                  classNames?.item,\n                )}\n                style={theme.styles.menuItem}\n                onSelect={() => {\n                  if (!item.disabled) onAction?.(item.id);\n                }}\n              >\n                {item.icon ? <span className={theme.slots.menuItemIcon}>{item.icon}</span> : null}\n                <span className={theme.slots.menuItemLabel}>{item.label}</span>\n              </DropdownMenu.Item>\n            ))}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      ) : null}\n    </DropdownMenu.Root>\n  );\n}\n","import type { DataExplorerDetailFieldProps } from \"./types\";\nimport { cn } from \"./utils\";\n\nfunction hasContent(value: unknown) {\n  return (\n    value !== null && value !== undefined && value !== false && value !== \"\"\n  );\n}\n\nexport function DataExplorerDetailField<TContext = unknown>({\n  field,\n  label = field?.label,\n  icon = field?.icon,\n  value = field?.value,\n  helperText = field?.helperText,\n  error = field?.error,\n  required = field?.required ?? false,\n  disabled = field?.disabled ?? false,\n  children,\n  context,\n  className,\n  valueClassName = field?.valueClassName,\n  classNames,\n  dataAttributes = field?.dataAttributes,\n  labelDataAttributes = field?.labelDataAttributes,\n  valueDataAttributes = field?.valueDataAttributes,\n  helperDataAttributes = field?.helperDataAttributes,\n  errorDataAttributes = field?.errorDataAttributes,\n}: DataExplorerDetailFieldProps<TContext>) {\n  const resolvedClassNames = {\n    ...field?.classNames,\n    ...classNames,\n  };\n  const content =\n    children ?? (field?.render ? field.render(context as TContext) : value);\n  const hasError = hasContent(error);\n\n  return (\n    <div\n      {...dataAttributes}\n      title={field?.title}\n      aria-disabled={disabled || undefined}\n      data-disabled={disabled || undefined}\n      data-invalid={hasError || undefined}\n      data-required={required || undefined}\n      className={cn(\n        \"min-w-0 space-y-1\",\n        disabled && \"opacity-60\",\n        resolvedClassNames.root,\n        field?.className,\n        className,\n      )}\n    >\n      <div\n        className={cn(\n          \"flex min-w-0 items-center gap-1.5 text-[13px] font-medium text-muted-foreground\",\n          resolvedClassNames.label,\n        )}\n      >\n        {icon ? (\n          <span\n            className={cn(\n              \"inline-flex shrink-0 items-center justify-center\",\n              resolvedClassNames.icon,\n            )}\n          >\n            {icon}\n          </span>\n        ) : null}\n        <span {...labelDataAttributes} className=\"min-w-0 truncate\">{label}</span>\n        {required ? (\n          <span\n            aria-hidden=\"true\"\n            className={cn(\"text-destructive-text\", resolvedClassNames.required)}\n          >\n            *\n          </span>\n        ) : null}\n      </div>\n      <div\n        {...valueDataAttributes}\n        className={cn(\n          \"min-w-0 max-w-full text-[15px] leading-6 text-foreground [overflow-wrap:anywhere]\",\n          resolvedClassNames.value,\n          valueClassName,\n        )}\n      >\n        {content}\n      </div>\n      {hasContent(helperText) ? (\n        <div\n          {...helperDataAttributes}\n          data-slot=\"helper\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]\",\n            resolvedClassNames.helper,\n          )}\n        >\n          {helperText}\n        </div>\n      ) : null}\n      {hasError ? (\n        <div\n          {...errorDataAttributes}\n          role=\"alert\"\n          data-slot=\"error\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-destructive-text [overflow-wrap:anywhere]\",\n            resolvedClassNames.error,\n          )}\n        >\n          {error}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { DataExplorerDetailField } from \"./DataExplorerDetailField\";\nimport type { DataExplorerDetailSectionProps } from \"./types\";\nimport { cn, resolveDataExplorerValue } from \"./utils\";\n\nexport function DataExplorerDetailSection<TContext = unknown>({\n  section,\n  title = section?.title,\n  fields = section?.fields,\n  children,\n  context,\n  className,\n  classNames,\n  fieldClassNames,\n}: DataExplorerDetailSectionProps<TContext>) {\n  const resolvedClassNames = {\n    ...section?.classNames,\n    ...classNames,\n  };\n  const visibleFields = (fields || []).filter(\n    (field) => !(resolveDataExplorerValue(field.hidden, context) ?? false),\n  );\n  const sectionChildren =\n    children ??\n    (typeof section?.children === \"function\"\n      ? section.children(context as TContext)\n      : section?.children);\n  const hasContent = Boolean(sectionChildren) || visibleFields.length > 0;\n\n  if (!hasContent || resolveDataExplorerValue(section?.hidden, context)) {\n    return null;\n  }\n\n  return (\n    <section\n      className={cn(\n        \"border-b border-border pb-6 last:border-b-0 last:pb-0\",\n        resolvedClassNames.root,\n        section?.className,\n        className,\n      )}\n    >\n      {title ? (\n        <div\n          className={cn(\n            \"mb-4 text-[15px] font-semibold text-foreground\",\n            resolvedClassNames.title,\n          )}\n        >\n          {title}\n        </div>\n      ) : null}\n      <div className={cn(\"space-y-4\", resolvedClassNames.body)}>\n        {sectionChildren}\n        {visibleFields.map((field, index) => (\n          <DataExplorerDetailField\n            key={field.id || String(index)}\n            field={field}\n            context={context}\n            classNames={fieldClassNames}\n          />\n        ))}\n      </div>\n    </section>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerDetailSection } from './DataExplorerDetailSection';\nimport type { DataExplorerDetailShellProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\nfunction DefaultCloseIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-[18px] w-[18px]\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M18 6 6 18\" />\n      <path d=\"m6 6 12 12\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronLeftIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m15 18-6-6 6-6\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronRightIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\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\nexport function DataExplorerDetailShell<TContext = unknown>({\n  title,\n  subtitle,\n  leading,\n  actions,\n  preview,\n  previewVisible = true,\n  previewStyle,\n  previewPadded = false,\n  previewCentered = true,\n  sections = [],\n  rightPanel,\n  context,\n  navigation,\n  closeLabel = 'Close',\n  closeIcon,\n  closeVisible = true,\n  onClose,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDetailShellProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasNavigation =\n    (navigation?.visible ?? true) &&\n    typeof navigation?.count === 'number' &&\n    navigation.count > 1;\n  const visibleSections = sections.filter(\n    (section) =>\n      !(resolveDataExplorerValue(section.hidden, context) ?? false),\n  );\n\n  return (\n    <div\n      className={cn(\n        theme.slots.detailRoot,\n        classNames?.root,\n        className,\n      )}\n      style={theme.styles.detailRoot}\n    >\n      <div\n        className={cn(\n          theme.slots.detailHeader,\n          classNames?.header,\n        )}\n      >\n        <div className={cn('flex min-w-0 items-center gap-3', classNames?.headerMain)}>\n          {leading ? (\n            <div\n              className={cn(\n                theme.slots.detailLeading,\n                classNames?.leading,\n              )}\n            >\n              {leading}\n            </div>\n          ) : null}\n          <div className={cn('min-w-0', classNames?.titleGroup)}>\n            <div\n              className={cn(\n                'truncate text-[20px] font-semibold leading-tight text-foreground',\n                classNames?.title,\n              )}\n            >\n              {title}\n            </div>\n            {subtitle ? (\n              <div\n                className={cn(\n                  'mt-1 min-w-0 truncate text-sm text-muted-foreground',\n                  classNames?.subtitle,\n                )}\n              >\n                {subtitle}\n              </div>\n            ) : null}\n          </div>\n        </div>\n\n        <div className={cn('flex items-center gap-2', classNames?.headerActions)}>\n          {actions}\n          {hasNavigation ? (\n            <div\n              className={cn(\n                theme.slots.detailNavigation,\n                classNames?.navigation,\n              )}\n            >\n              <button\n                type=\"button\"\n                aria-label={navigation?.previousLabel || 'Previous'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onPrevious}\n                onClick={navigation?.onPrevious}\n              >\n                <DefaultChevronLeftIcon />\n              </button>\n              <div\n                className={cn(\n                  'min-w-[74px] text-center text-xs font-medium text-muted-foreground',\n                  classNames?.navigationCount,\n                )}\n              >\n                {navigation.index + 1} / {navigation.count}\n              </div>\n              <button\n                type=\"button\"\n                aria-label={navigation?.nextLabel || 'Next'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onNext}\n                onClick={navigation?.onNext}\n              >\n                <DefaultChevronRightIcon />\n              </button>\n            </div>\n          ) : null}\n\n          {closeVisible ? (\n            <button\n              type=\"button\"\n              aria-label={closeLabel}\n              className={cn(\n                theme.slots.detailCloseButton,\n                classNames?.closeButton,\n              )}\n              onClick={onClose}\n            >\n              {closeIcon ?? <DefaultCloseIcon />}\n            </button>\n          ) : null}\n        </div>\n      </div>\n\n      <div\n        className={cn(\n          'grid min-h-0 flex-1',\n          previewVisible\n            ? 'xl:grid-cols-[minmax(0,1fr)_380px] 2xl:grid-cols-[minmax(0,1fr)_400px]'\n            : 'grid-cols-1',\n          classNames?.body,\n        )}\n      >\n        {previewVisible ? (\n          <div\n            className={cn(\n              theme.slots.detailPreviewPanel,\n              classNames?.previewPanel,\n            )}\n          >\n          <div\n            className={cn(\n              'flex h-full min-h-0 flex-col',\n              classNames?.previewStack,\n            )}\n          >\n            {hasNavigation ? (\n              <div className=\"flex justify-end\">\n                <div\n                  className={cn(\n                    'text-xs text-muted-foreground xl:hidden',\n                    classNames?.previewMobileCount,\n                  )}\n                >\n                  {navigation.index + 1} / {navigation.count}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                'flex min-h-0 flex-1 justify-center',\n                previewCentered && 'items-stretch',\n                classNames?.previewWrapper,\n              )}\n            >\n              <div\n                className={cn(\n                  theme.slots.detailPreviewFrame,\n                  classNames?.previewFrame,\n                )}\n                style={previewStyle}\n              >\n                <div\n                  className={cn(\n                    'relative flex h-full w-full items-center justify-center',\n                    previewPadded && 'p-4',\n                    classNames?.previewContent,\n                  )}\n                >\n                  {preview}\n                </div>\n\n                {hasNavigation ? (\n                  <>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.previousLabel || 'Previous'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'left-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onPrevious}\n                      onClick={navigation?.onPrevious}\n                    >\n                      <DefaultChevronLeftIcon />\n                    </button>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.nextLabel || 'Next'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'right-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onNext}\n                      onClick={navigation?.onNext}\n                    >\n                      <DefaultChevronRightIcon />\n                    </button>\n                  </>\n                ) : null}\n              </div>\n            </div>\n          </div>\n          </div>\n        ) : null}\n\n        <div\n          className={cn(\n            theme.slots.detailRightPanel,\n            classNames?.rightPanel,\n          )}\n        >\n          <div\n            className={cn(\n              theme.slots.detailRightPanelBody,\n              classNames?.rightPanelBody,\n            )}\n            style={{ scrollbarGutter: 'stable' }}\n          >\n            {rightPanel ?? (\n              <div className={cn('space-y-6', classNames?.sections)}>\n                {visibleSections.map((section) => (\n                  <DataExplorerDetailSection\n                    key={section.id}\n                    section={section}\n                    context={context}\n                    className={classNames?.section}\n                    fieldClassNames={{ root: classNames?.field }}\n                  />\n                ))}\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport {\n  DndContext,\n  KeyboardSensor,\n  PointerSensor,\n  closestCenter,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type DragMoveEvent,\n  type DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n  defaultAnimateLayoutChanges,\n  SortableContext,\n  type AnimateLayoutChanges,\n  sortableKeyboardCoordinates,\n  useSortable,\n  verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { resolveDataExplorerAppearance } from './theme';\nimport type {\n  DataExplorerDraggableTreeClassNames,\n  DataExplorerDraggableTreeDragPayload,\n  DataExplorerDraggableTreeFlattenedNode,\n  DataExplorerDraggableTreeNode,\n  DataExplorerDraggableTreeProps,\n  DataExplorerDraggableTreeRenderContext,\n} from './types';\nimport { cn } from './utils';\n\ntype FlattenedNode<TSource, TContext> =\n  DataExplorerDraggableTreeFlattenedNode<TSource, TContext>;\ntype TreeItemRadius = DataExplorerDraggableTreeProps['itemRadius'];\ntype ClientPoint = { x: number; y: number };\ntype DragPreviewLayout = {\n  initialLeft: number;\n  initialTop: number;\n  left: number;\n  top: number;\n  width?: number;\n  height?: number;\n};\ntype ProjectedDrop = {\n  parentId?: string;\n  index: number;\n  depth: number;\n};\n\nconst treeItemDropTransition = {\n  duration: 220,\n  easing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n};\n\nconst treeItemAnimateLayoutChanges: AnimateLayoutChanges = (args) => {\n  if (args.isSorting) return true;\n  if (args.wasDragging && args.transition && args.containerId === args.previousContainerId) {\n    return true;\n  }\n  return defaultAnimateLayoutChanges(args);\n};\n\nconst treeItemRadiusValues = {\n  none: '0px',\n  sm: '0.125rem',\n  md: '0.375rem',\n  lg: '0.5rem',\n  xl: '0.75rem',\n  full: '9999px',\n};\n\nfunction resolveTreeItemBorderRadius(\n  itemRadius: TreeItemRadius,\n  appearanceRadius: keyof typeof treeItemRadiusValues,\n) {\n  const radius = itemRadius ?? appearanceRadius;\n  if (typeof radius === 'number') return `${radius}px`;\n  if (!radius) return undefined;\n  return treeItemRadiusValues[radius as keyof typeof treeItemRadiusValues] ?? radius;\n}\n\nfunction getEventClientPoint(event: Event | undefined): ClientPoint | undefined {\n  if (!event) return undefined;\n  if ('clientX' in event && 'clientY' in event) {\n    return {\n      x: Number((event as MouseEvent | PointerEvent).clientX),\n      y: Number((event as MouseEvent | PointerEvent).clientY),\n    };\n  }\n\n  const touchEvent = event as TouchEvent;\n  const touch = touchEvent.touches?.[0] ?? touchEvent.changedTouches?.[0];\n  if (!touch) return undefined;\n  return { x: touch.clientX, y: touch.clientY };\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-4 w-4 transition-transform duration-200 ease-out',\n        expanded ? 'rotate-90' : 'rotate-0',\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 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=\"5\" r=\"1\" />\n      <circle cx=\"9\" cy=\"12\" r=\"1\" />\n      <circle cx=\"9\" cy=\"19\" r=\"1\" />\n      <circle cx=\"15\" cy=\"5\" r=\"1\" />\n      <circle cx=\"15\" cy=\"12\" r=\"1\" />\n      <circle cx=\"15\" cy=\"19\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction collectDefaultExpandedNodeIds<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  ids: Set<string>,\n) {\n  for (const node of nodes) {\n    if (node.defaultExpanded) ids.add(node.id);\n    collectDefaultExpandedNodeIds(node.children ?? [], ids);\n  }\n}\n\nfunction buildDefaultExpandedNodeIds<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  defaultExpandedNodeIds: string[] | undefined,\n) {\n  const ids = new Set(defaultExpandedNodeIds ?? []);\n  collectDefaultExpandedNodeIds(nodes, ids);\n  return ids;\n}\n\nfunction flattenTree<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  expandedNodeIds: Set<string>,\n  parentId: string | undefined,\n  depth: number,\n  entries: FlattenedNode<TSource, TContext>[],\n) {\n  nodes.forEach((node, index) => {\n    entries.push({ node, parentId, index, depth });\n    const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n    const isExpanded = node.collapsible === false || expandedNodeIds.has(node.id);\n    if (hasChildren && isExpanded) {\n      flattenTree(node.children ?? [], expandedNodeIds, node.id, depth + 1, entries);\n    }\n  });\n}\n\nfunction buildFlattenedTree<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  expandedNodeIds: Set<string>,\n) {\n  const entries: FlattenedNode<TSource, TContext>[] = [];\n  flattenTree(nodes, expandedNodeIds, undefined, 0, entries);\n  return entries;\n}\n\nfunction findAncestorEntryAtDepth<TSource, TContext>(\n  entries: Array<FlattenedNode<TSource, TContext>>,\n  entry: FlattenedNode<TSource, TContext>,\n  depth: number,\n) {\n  if (depth < 0) return undefined;\n  let parentId = entry.parentId;\n  while (parentId) {\n    const parentEntry = entries.find((candidate) => candidate.node.id === parentId);\n    if (!parentEntry) return undefined;\n    if (parentEntry.depth === depth) return parentEntry;\n    parentId = parentEntry.parentId;\n  }\n  return undefined;\n}\n\nfunction countSiblingsBeforeDrop<TSource, TContext>(\n  entries: Array<FlattenedNode<TSource, TContext>>,\n  activeEntry: FlattenedNode<TSource, TContext>,\n  overEntry: FlattenedNode<TSource, TContext>,\n  parentId: string | undefined,\n  targetDepth: number,\n) {\n  const targetEntry = activeEntry.node.id === overEntry.node.id ? activeEntry : overEntry;\n  let index = 0;\n  for (const entry of entries) {\n    if (entry.node.id === targetEntry.node.id) break;\n    if (entry.node.id === activeEntry.node.id) continue;\n    if (entry.parentId === parentId && entry.depth === targetDepth) {\n      index += 1;\n    }\n  }\n  return index;\n}\n\nexport function projectDataExplorerDraggableTreeDrop<TSource, TContext>({\n  flattenedNodes,\n  activeEntry,\n  overEntry,\n  dragOffsetX,\n  indentSize,\n}: {\n  flattenedNodes: Array<FlattenedNode<TSource, TContext>>;\n  activeEntry: FlattenedNode<TSource, TContext>;\n  overEntry: FlattenedNode<TSource, TContext>;\n  dragOffsetX: number;\n  indentSize: number;\n}): ProjectedDrop {\n  const depthDelta = Math.round(dragOffsetX / Math.max(1, indentSize));\n  const projectedDepth = Math.max(0, activeEntry.depth + depthDelta);\n  const targetDepth = Math.min(projectedDepth, overEntry.depth);\n  const parentAtDepth =\n    targetDepth === 0\n      ? undefined\n      : targetDepth === overEntry.depth\n        ? overEntry.parentId\n        : findAncestorEntryAtDepth(flattenedNodes, overEntry, targetDepth)?.parentId;\n\n  return {\n    parentId: parentAtDepth,\n    index: countSiblingsBeforeDrop(\n      flattenedNodes,\n      activeEntry,\n      overEntry,\n      parentAtDepth,\n      targetDepth,\n    ),\n    depth: targetDepth,\n  };\n}\n\nfunction DraggableTreeItem<TSource, TContext>({\n  entry,\n  selected,\n  expanded,\n  active,\n  over,\n  indentSize,\n  activationMode,\n  dragHandleLabel,\n  expandLabel,\n  collapseLabel,\n  themeSlots,\n  classNames,\n  itemStyle,\n  context,\n  renderNodeActions,\n  renderNodeChildren,\n  onSelect,\n  onToggle,\n  registerNodeElement,\n}: {\n  entry: FlattenedNode<TSource, TContext>;\n  selected: boolean;\n  expanded: boolean;\n  active: boolean;\n  over: boolean;\n  indentSize: number;\n  activationMode: 'row' | 'handle';\n  dragHandleLabel: string;\n  expandLabel: string;\n  collapseLabel: string;\n  themeSlots: ReturnType<typeof resolveDataExplorerAppearance>['slots'];\n  classNames?: DataExplorerDraggableTreeClassNames;\n  itemStyle?: CSSProperties;\n  context?: TContext;\n  renderNodeActions?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeActions'];\n  renderNodeChildren?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeChildren'];\n  onSelect?: (node: DataExplorerDraggableTreeNode<TSource, TContext>) => void;\n  onToggle: (nodeId: string) => void;\n  registerNodeElement?: (nodeId: string, element: HTMLDivElement | null) => void;\n}) {\n  const { node, depth } = entry;\n  const hasChildren = node.collapsible === true || Boolean(node.children?.length);\n  const disabled = Boolean(node.disabled);\n  const selectable = node.selectable !== false && !disabled;\n  const draggable = node.draggable !== false && !disabled;\n  const {\n    attributes,\n    listeners,\n    setNodeRef,\n    setActivatorNodeRef,\n    transform,\n    transition,\n    isDragging,\n  } = useSortable({\n    id: node.id,\n    disabled: !draggable,\n    animateLayoutChanges: treeItemAnimateLayoutChanges,\n    transition: treeItemDropTransition,\n  });\n  const {\n    role: _sortableRole,\n    tabIndex: _sortableTabIndex,\n    'aria-disabled': _sortableAriaDisabled,\n    ...sortableAttributes\n  } = attributes;\n  const sortableListeners = activationMode === 'row' ? listeners : undefined;\n  const handleListeners = activationMode === 'handle' ? listeners : undefined;\n  const renderContext: DataExplorerDraggableTreeRenderContext<TSource, TContext> = {\n    node,\n    depth,\n    expanded,\n    selected,\n    dragging: isDragging || active,\n    disabled,\n    context: node.context ?? context,\n  };\n  const style: CSSProperties = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n  };\n  const setRowRef = useCallback(\n    (element: HTMLDivElement | null) => {\n      setNodeRef(element);\n      registerNodeElement?.(node.id, element);\n    },\n    [node.id, registerNodeElement, setNodeRef],\n  );\n\n  return (\n    <div\n      style={style}\n      className={cn(\n        'min-w-0',\n        classNames?.item,\n        node.className,\n        isDragging && 'relative z-20',\n        active && 'opacity-0',\n      )}\n    >\n      <TreeItemRow\n        node={node}\n        depth={depth}\n        indentSize={indentSize}\n        selected={selected}\n        expanded={expanded}\n        active={isDragging || active}\n        over={over}\n        hasChildren={hasChildren}\n        disabled={disabled}\n        selectable={selectable}\n        draggable={draggable}\n        activationMode={activationMode}\n        dragHandleLabel={dragHandleLabel}\n        expandLabel={expandLabel}\n        collapseLabel={collapseLabel}\n        themeSlots={themeSlots}\n        classNames={classNames}\n        itemClassName={node.itemClassName}\n        itemStyle={itemStyle}\n        sortableAttributes={sortableAttributes}\n        sortableListeners={sortableListeners}\n        handleListeners={handleListeners}\n        renderNodeActions={renderNodeActions}\n        renderContext={renderContext}\n        rowRef={setRowRef}\n        dragHandleRef={activationMode === 'handle' ? setActivatorNodeRef : undefined}\n        onSelect={() => onSelect?.(node)}\n        onToggle={() => onToggle(node.id)}\n      />\n      {renderNodeChildren ? (\n        <div\n          className={cn(\n            'min-w-0',\n            classNames?.children,\n            node.childrenClassName,\n          )}\n        >\n          {renderNodeChildren(renderContext)}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n\nfunction TreeItemRow<TSource, TContext>({\n  node,\n  depth,\n  indentSize,\n  selected,\n  expanded,\n  active,\n  over,\n  hasChildren,\n  disabled,\n  selectable,\n  draggable,\n  activationMode,\n  dragHandleLabel,\n  expandLabel,\n  collapseLabel,\n  themeSlots,\n  classNames,\n  itemClassName,\n  itemStyle,\n  sortableAttributes,\n  sortableListeners,\n  handleListeners,\n  renderNodeActions,\n  renderContext,\n  rowRef,\n  dragHandleRef,\n  onSelect,\n  onToggle,\n}: {\n  node: DataExplorerDraggableTreeNode<TSource, TContext>;\n  depth: number;\n  indentSize: number;\n  selected: boolean;\n  expanded: boolean;\n  active: boolean;\n  over: boolean;\n  hasChildren: boolean;\n  disabled: boolean;\n  selectable: boolean;\n  draggable: boolean;\n  activationMode: 'row' | 'handle';\n  dragHandleLabel: string;\n  expandLabel: string;\n  collapseLabel: string;\n  themeSlots: ReturnType<typeof resolveDataExplorerAppearance>['slots'];\n  classNames?: DataExplorerDraggableTreeClassNames;\n  itemClassName?: string;\n  itemStyle?: CSSProperties;\n  sortableAttributes?: Record<string, unknown>;\n  sortableListeners?: Record<string, unknown>;\n  handleListeners?: Record<string, unknown>;\n  renderNodeActions?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeActions'];\n  renderContext: DataExplorerDraggableTreeRenderContext<TSource, TContext>;\n  rowRef?: (node: HTMLDivElement | null) => void;\n  dragHandleRef?: (node: HTMLElement | null) => void;\n  onSelect?: () => void;\n  onToggle?: () => void;\n}) {\n  return (\n    <div\n      ref={rowRef}\n      data-data-explorer-draggable-tree-item\n      className={cn(\n        themeSlots.treeNodeButton,\n        'min-h-8 touch-none border border-transparent bg-background/70 py-0 pl-1 pr-2 font-medium',\n        selectable && 'cursor-pointer',\n        draggable && activationMode === 'row' && 'cursor-grab active:cursor-grabbing',\n        selected && themeSlots.treeNodeSelected,\n        disabled && themeSlots.treeNodeDisabled,\n        active && themeSlots.treeNodeDragging,\n        over && 'border-primary/30 bg-primary/[0.08] ring-1 ring-primary/15',\n        selected && classNames?.itemSelected,\n        disabled && classNames?.itemDisabled,\n        active && classNames?.itemDragging,\n        over && classNames?.itemOver,\n        classNames?.itemButton,\n        itemClassName,\n      )}\n      style={{ ...itemStyle, paddingLeft: `${depth * indentSize + 4}px` }}\n      role=\"treeitem\"\n      aria-selected={selected || undefined}\n      aria-disabled={disabled || undefined}\n      aria-expanded={hasChildren ? expanded : undefined}\n      aria-label={node.ariaLabel}\n      tabIndex={selectable ? 0 : -1}\n      {...sortableAttributes}\n      {...sortableListeners}\n      onClick={() => {\n        if (!selectable) return;\n        onSelect?.();\n      }}\n      onKeyDown={(event) => {\n        if (!selectable) return;\n        if (event.key !== 'Enter' && event.key !== ' ') return;\n        event.preventDefault();\n        onSelect?.();\n      }}\n    >\n      {draggable ? (\n        <span\n          ref={dragHandleRef}\n          className={cn(\n            themeSlots.treeNodeDragHandle,\n            'opacity-100',\n            classNames?.dragHandle,\n          )}\n          aria-label={dragHandleLabel}\n          title={dragHandleLabel}\n          {...handleListeners}\n          onClick={(event) => event.stopPropagation()}\n        >\n          <GripIcon />\n        </span>\n      ) : (\n        <span className={cn('h-5 w-5 shrink-0', classNames?.dragHandle)} />\n      )}\n      {hasChildren ? (\n        <button\n          type=\"button\"\n          className={cn(themeSlots.treeNodeToggle, classNames?.toggle)}\n          aria-label={expanded ? collapseLabel : expandLabel}\n          onClick={(event) => {\n            event.stopPropagation();\n            onToggle?.();\n          }}\n        >\n          <ChevronIcon expanded={expanded} />\n        </button>\n      ) : (\n        <span className={cn(themeSlots.treeNodeToggle, classNames?.toggle)} />\n      )}\n      {node.icon ? (\n        <span className={cn(themeSlots.treeNodeIcon, classNames?.icon)}>\n          {node.icon}\n        </span>\n      ) : null}\n      <span\n        className={cn(\n          'flex min-w-0 flex-1 flex-col',\n          classNames?.itemContent,\n        )}\n      >\n        <span className={cn(themeSlots.treeNodeLabel, classNames?.label)}>\n          {node.label}\n        </span>\n        {node.description ? (\n          <span\n            className={cn(\n              themeSlots.treeNodeDescription,\n              classNames?.description,\n            )}\n          >\n            {node.description}\n          </span>\n        ) : null}\n      </span>\n      {node.meta ? (\n        <span className={cn(themeSlots.treeNodeMeta, classNames?.meta)}>\n          {node.meta}\n        </span>\n      ) : null}\n      {node.badge ? (\n        <span className={cn(themeSlots.treeNodeBadge, classNames?.badge)}>\n          {node.badge}\n        </span>\n      ) : null}\n      {renderNodeActions ? (\n        <span className={cn('ml-1 shrink-0', classNames?.actions)}>\n          {renderNodeActions(renderContext)}\n        </span>\n      ) : null}\n    </div>\n  );\n}\n\nexport function DataExplorerDraggableTree<\n  TSource = unknown,\n  TContext = unknown,\n>({\n  nodes,\n  context,\n  selectedNodeId,\n  expandedNodeIds,\n  defaultExpandedNodeIds,\n  resetExpansionKey,\n  indentSize = 16,\n  activationMode = 'row',\n  loading,\n  empty,\n  labels,\n  appearance,\n  itemRadius,\n  className,\n  classNames,\n  renderNodeActions,\n  renderNodeChildren,\n  onSelectNode,\n  onExpandedNodeIdsChange,\n  onDragEnd,\n}: DataExplorerDraggableTreeProps<TSource, TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(\n    () => buildDefaultExpandedNodeIds(nodes, defaultExpandedNodeIds),\n  );\n  const [activeNodeId, setActiveNodeId] = useState<string | undefined>();\n  const [dragPreviewLayout, setDragPreviewLayout] = useState<\n    DragPreviewLayout | undefined\n  >();\n  const [overNodeId, setOverNodeId] = useState<string | undefined>();\n  const nodeElementsRef = useRef(new Map<string, HTMLDivElement>());\n  const itemBorderRadius = resolveTreeItemBorderRadius(itemRadius, theme.radius);\n  const itemStyle = itemBorderRadius\n    ? ({ borderRadius: itemBorderRadius } satisfies CSSProperties)\n    : undefined;\n  const overlayStyle = {\n    width: dragPreviewLayout?.width,\n    height: dragPreviewLayout?.height,\n    borderRadius: itemBorderRadius,\n  } satisfies CSSProperties;\n  const sensors = useSensors(\n    useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),\n    useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n  );\n\n  useEffect(() => {\n    setInternalExpandedNodeIds(\n      buildDefaultExpandedNodeIds(nodes, defaultExpandedNodeIds),\n    );\n  }, [defaultExpandedNodeIds, resetExpansionKey]);\n\n  const resolvedExpandedNodeIds =\n    expandedNodeIds !== undefined\n      ? new Set(expandedNodeIds)\n      : internalExpandedNodeIds;\n  const flattenedNodes = useMemo(\n    () => buildFlattenedTree(nodes, resolvedExpandedNodeIds),\n    [nodes, resolvedExpandedNodeIds],\n  );\n  const flattenedNodeMap = useMemo(() => {\n    const map = new Map<string, FlattenedNode<TSource, TContext>>();\n    for (const entry of flattenedNodes) map.set(entry.node.id, entry);\n    return map;\n  }, [flattenedNodes]);\n  const activeEntry = activeNodeId ? flattenedNodeMap.get(activeNodeId) : undefined;\n  const sortableIds = flattenedNodes.map((entry) => entry.node.id);\n  const registerNodeElement = useCallback(\n    (nodeId: string, element: HTMLDivElement | null) => {\n      if (element) {\n        nodeElementsRef.current.set(nodeId, element);\n      } else {\n        nodeElementsRef.current.delete(nodeId);\n      }\n    },\n    [],\n  );\n\n  const clearDragState = useCallback(() => {\n    setActiveNodeId(undefined);\n    setDragPreviewLayout(undefined);\n    setOverNodeId(undefined);\n  }, []);\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 handleDragStart = (event: DragStartEvent) => {\n    const activeId = String(event.active.id || '');\n    setActiveNodeId(activeId);\n\n    const elementRect = activeId\n      ? nodeElementsRef.current.get(activeId)?.getBoundingClientRect()\n      : undefined;\n    const initialRect = event.active.rect.current.initial;\n    const rect = elementRect ?? initialRect;\n    const point = getEventClientPoint(event.activatorEvent);\n    const width = rect?.width;\n    const height = rect?.height;\n    const left = rect?.left ?? (point ? point.x - (width ?? 0) / 2 : 0);\n    const top = rect?.top ?? (point ? point.y - (height ?? 0) / 2 : 0);\n\n    setDragPreviewLayout({\n      initialLeft: left,\n      initialTop: top,\n      left,\n      top,\n      width,\n      height,\n    });\n  };\n\n  const handleDragMove = (event: DragMoveEvent) => {\n    setDragPreviewLayout((layout) =>\n      layout\n        ? {\n            ...layout,\n            left: layout.initialLeft + event.delta.x,\n            top: layout.initialTop + event.delta.y,\n          }\n        : layout,\n    );\n  };\n\n  const handleDragEnd = (event: DragEndEvent) => {\n    const activeId = String(event.active.id || '');\n    const overId = event.over ? String(event.over.id || '') : '';\n    if (!activeId || !overId || !onDragEnd) {\n      clearDragState();\n      return;\n    }\n    const activeEntry = flattenedNodeMap.get(activeId);\n    const overEntry = flattenedNodeMap.get(overId);\n    if (!activeEntry || !overEntry) {\n      clearDragState();\n      return;\n    }\n    const projectedDrop = projectDataExplorerDraggableTreeDrop({\n      flattenedNodes,\n      activeEntry,\n      overEntry,\n      dragOffsetX: event.delta.x,\n      indentSize,\n    });\n    if (\n      activeEntry.parentId === projectedDrop.parentId &&\n      activeEntry.index === projectedDrop.index\n    ) {\n      clearDragState();\n      return;\n    }\n    const payload: DataExplorerDraggableTreeDragPayload<TSource, TContext> = {\n      activeNode: activeEntry.node,\n      overNode: overEntry.node,\n      activeParentId: activeEntry.parentId,\n      overParentId: overEntry.parentId,\n      targetParentId: projectedDrop.parentId,\n      activeIndex: activeEntry.index,\n      overIndex: overEntry.index,\n      targetIndex: projectedDrop.index,\n      targetDepth: projectedDrop.depth,\n      sameParent: activeEntry.parentId === overEntry.parentId,\n      targetSameParent: activeEntry.parentId === projectedDrop.parentId,\n      context,\n    };\n    void onDragEnd(payload);\n    clearDragState();\n  };\n\n  const dragOverlay = (\n    activeEntry && dragPreviewLayout ? (\n      <div\n        aria-hidden=\"true\"\n        className=\"pointer-events-none fixed z-[1000] min-w-0\"\n        style={{\n          left: dragPreviewLayout.left,\n          top: dragPreviewLayout.top,\n          ...overlayStyle,\n        }}\n      >\n        <div\n          className={cn('min-w-0 overflow-hidden shadow-lg', classNames?.overlay)}\n          style={overlayStyle}\n        >\n          <TreeItemRow\n            node={activeEntry.node}\n            depth={activeEntry.depth}\n            indentSize={indentSize}\n            selected={selectedNodeId === activeEntry.node.id}\n            expanded={\n              activeEntry.node.collapsible === false ||\n              resolvedExpandedNodeIds.has(activeEntry.node.id)\n            }\n            active\n            over={false}\n            hasChildren={\n              activeEntry.node.collapsible === true ||\n              Boolean(activeEntry.node.children?.length)\n            }\n            disabled={Boolean(activeEntry.node.disabled)}\n            selectable={activeEntry.node.selectable !== false}\n            draggable={activeEntry.node.draggable !== false}\n            activationMode={activationMode}\n            dragHandleLabel={labels?.dragHandle ?? 'Drag'}\n            expandLabel={labels?.expand ?? 'Expand'}\n            collapseLabel={labels?.collapse ?? 'Collapse'}\n            themeSlots={theme.slots}\n            classNames={classNames}\n            itemClassName={activeEntry.node.itemClassName}\n            itemStyle={itemStyle}\n            renderNodeActions={renderNodeActions}\n            renderContext={{\n              node: activeEntry.node,\n              depth: activeEntry.depth,\n              expanded:\n                activeEntry.node.collapsible === false ||\n                resolvedExpandedNodeIds.has(activeEntry.node.id),\n              selected: selectedNodeId === activeEntry.node.id,\n              dragging: true,\n              disabled: Boolean(activeEntry.node.disabled),\n              context: activeEntry.node.context ?? context,\n            }}\n          />\n        </div>\n      </div>\n    ) : null\n  );\n\n  if (loading) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        <div className={cn(theme.slots.treeLoading, classNames?.loading)}>\n          {labels?.loading ?? 'Loading...'}\n        </div>\n      </div>\n    );\n  }\n\n  if (nodes.length === 0) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        <div className={cn(theme.slots.treeEmpty, classNames?.empty)}>\n          {empty ?? labels?.empty ?? 'No data'}\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <DndContext\n      sensors={sensors}\n      collisionDetection={closestCenter}\n      onDragStart={handleDragStart}\n      onDragMove={handleDragMove}\n      onDragOver={(event) => {\n        setOverNodeId(event.over ? String(event.over.id || '') : undefined);\n      }}\n      onDragEnd={handleDragEnd}\n      onDragCancel={clearDragState}\n    >\n      <SortableContext items={sortableIds} strategy={verticalListSortingStrategy}>\n        <div\n          className={cn(\n            theme.slots.treeRoot,\n            'space-y-1 overflow-visible',\n            classNames?.root,\n            className,\n          )}\n          role=\"tree\"\n        >\n          <div className={cn('min-w-0 space-y-1', classNames?.list)}>\n            {flattenedNodes.map((entry) => {\n              const node = entry.node;\n              const expanded =\n                node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n              return (\n                <DraggableTreeItem\n                  key={node.id}\n                  entry={entry}\n                  selected={selectedNodeId === node.id}\n                  expanded={expanded}\n                  active={activeNodeId === node.id}\n                  over={overNodeId === node.id && activeNodeId !== node.id}\n                  indentSize={indentSize}\n                  activationMode={activationMode}\n                  dragHandleLabel={labels?.dragHandle ?? 'Drag'}\n                  expandLabel={labels?.expand ?? 'Expand'}\n                  collapseLabel={labels?.collapse ?? 'Collapse'}\n                  themeSlots={theme.slots}\n                  classNames={classNames}\n                  itemStyle={itemStyle}\n                  context={context}\n                  renderNodeActions={renderNodeActions}\n                  renderNodeChildren={renderNodeChildren}\n                  onSelect={(nextNode) => onSelectNode?.(nextNode, context)}\n                  onToggle={(nodeId) => setNodeExpanded(nodeId, !expanded)}\n                  registerNodeElement={registerNodeElement}\n                />\n              );\n            })}\n          </div>\n        </div>\n      </SortableContext>\n      {typeof document === 'undefined'\n        ? dragOverlay\n        : dragOverlay\n          ? createPortal(dragOverlay, document.body)\n          : null}\n    </DndContext>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { useState } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type {\n  DataExplorerDisplayAction,\n  DataExplorerDisplayActionContext,\n  DataExplorerDisplayActionMenuProps,\n} from './types';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\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=\"19\" cy=\"12\" r=\"1\" />\n      <circle cx=\"5\" cy=\"12\" r=\"1\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerDisplayActionMenu<TSource = unknown>({\n  item,\n  itemId = item?.id,\n  source = item?.source,\n  actions = [],\n  label = 'Actions',\n  triggerLabel = 'Open actions',\n  triggerIcon,\n  align = 'end',\n  sideOffset = 6,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDisplayActionMenuProps<TSource>) {\n  const [open, setOpen] = useState(false);\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const context: DataExplorerDisplayActionContext<TSource> = {\n    itemId,\n    item,\n    source,\n  };\n  const visibleActions = actions.filter(\n    (action) => resolveDataExplorerValue(action.visible, context) ?? true,\n  );\n\n  if (visibleActions.length === 0) {\n    return null;\n  }\n\n  return (\n    <span className={cn('inline-flex', classNames?.root)}>\n      <DropdownMenu.Root open={open} onOpenChange={setOpen}>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            aria-label={triggerLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              classNames?.trigger,\n              className,\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {triggerIcon ?? <MoreIcon />}\n            <span className=\"sr-only\">{triggerLabel}</span>\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align={align}\n            sideOffset={sideOffset}\n            className={cn(\n              theme.slots.menuContent,\n              classNames?.content,\n            )}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {label ? (\n              <>\n                <DropdownMenu.Label\n                  className={cn(\n                    theme.slots.menuLabel,\n                    classNames?.label,\n                  )}\n                >\n                  {label}\n                </DropdownMenu.Label>\n                <DropdownMenu.Separator\n                  className={cn(\n                    theme.slots.menuSeparator,\n                    classNames?.separator,\n                  )}\n                />\n              </>\n            ) : null}\n\n            {visibleActions.map((action) => {\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, context) ?? false) ||\n                (resolveDataExplorerValue(action.loading, context) ?? false);\n\n              if (action.render) {\n                return (\n                  <div key={action.id}>\n                    {action.separatorBefore ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                    {action.render(context)}\n                    {action.separatorAfter ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                  </div>\n                );\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        '-mx-1 my-1 h-px bg-border',\n                        classNames?.separator,\n                      )}\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                      classNames?.item,\n                      action.className,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (!action.onAction || disabled) {\n                        return;\n                      }\n                      void action.onAction(context);\n                    }}\n                    onContextMenu={(event) => {\n                      if (!action.onContextAction || disabled) {\n                        return;\n                      }\n                      event.preventDefault();\n                      event.stopPropagation();\n                      setOpen(false);\n                      void action.onContextAction(context);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span\n                        className={cn(\n                          theme.slots.menuItemIcon,\n                          classNames?.itemIcon,\n                        )}\n                      >\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span\n                      className={cn(\n                        theme.slots.menuItemLabel,\n                        classNames?.itemLabel,\n                      )}\n                    >\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        theme.slots.menuSeparator,\n                        classNames?.separator,\n                      )}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    </span>\n  );\n}\n","import type {\n  DataExplorerDisplayMediaItem,\n  DataExplorerDisplayMediaProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction normalizeMedia<TSource>(\n  media?:\n    | DataExplorerDisplayMediaItem<TSource>\n    | Array<DataExplorerDisplayMediaItem<TSource>>,\n) {\n  if (!media) {\n    return [];\n  }\n  return Array.isArray(media) ? media.filter(Boolean) : [media];\n}\n\nfunction resolveMediaKind(value?: string) {\n  return String(value || 'unknown').toLowerCase();\n}\n\nexport function DataExplorerDisplayMedia<TSource = unknown>({\n  media,\n  fallbackTitle,\n  empty,\n  className,\n  classNames,\n  onOpen,\n}: DataExplorerDisplayMediaProps<TSource>) {\n  const mediaItems = normalizeMedia(media);\n  const primary = mediaItems[0];\n\n  if (!primary) {\n    if (!empty) {\n      return null;\n    }\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n          classNames?.placeholder,\n          className,\n        )}\n      >\n        {empty}\n      </div>\n    );\n  }\n\n  if (primary.node) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {primary.node}\n      </div>\n    );\n  }\n\n  const kind = resolveMediaKind(primary.kind);\n  const src = String(primary.src || primary.thumbnail || '').trim();\n  const title = primary.title ?? fallbackTitle;\n  const alt = primary.alt || (typeof title === 'string' ? title : 'preview');\n  const canOpen = typeof onOpen === 'function';\n  const mediaNode = (() => {\n    if (!src) {\n      return (\n        <div\n          className={cn(\n            'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n            classNames?.placeholder,\n          )}\n        >\n          {title || 'No preview'}\n        </div>\n      );\n    }\n\n    if (kind === 'image' || kind === 'unknown') {\n      return (\n        <img\n          src={src}\n          alt={alt}\n          className={cn('h-auto w-full object-contain', classNames?.media)}\n          loading=\"lazy\"\n          decoding=\"async\"\n          draggable={false}\n        />\n      );\n    }\n\n    if (kind === 'video') {\n      return (\n        <video\n          src={src}\n          className={cn('h-auto w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    if (kind === 'audio') {\n      return (\n        <audio\n          src={src}\n          className={cn('w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 flex-col items-center justify-center gap-1 bg-muted/30 p-4 text-center text-sm text-muted-foreground',\n          classNames?.placeholder,\n        )}\n      >\n        {title ? (\n          <span className={cn('max-w-full truncate', classNames?.title)}>\n            {title}\n          </span>\n        ) : null}\n        <span className=\"max-w-full truncate\">{src}</span>\n      </div>\n    );\n  })();\n\n  if (!canOpen) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {mediaNode}\n      </div>\n    );\n  }\n\n  return (\n    <button\n      type=\"button\"\n      className={cn(\n        'block min-w-0 overflow-hidden text-left',\n        classNames?.root,\n        className,\n      )}\n      onClick={() => onOpen?.(primary, 0)}\n    >\n      {mediaNode}\n    </button>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport type { ReactNode } from 'react';\n\nimport { DataExplorerDisplayMedia } from './DataExplorerDisplayMedia';\nimport type {\n  DataExplorerDisplayBadge,\n  DataExplorerDisplayCardProps,\n  DataExplorerDisplayMetadata,\n  DataExplorerDisplayMediaItem,\n} from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction isDisplayMedia<TSource>(\n  value: unknown,\n): value is\n  | DataExplorerDisplayMediaItem<TSource>\n  | Array<DataExplorerDisplayMediaItem<TSource>> {\n  if (!value) {\n    return false;\n  }\n  if (Array.isArray(value)) {\n    return value.every(\n      (item) =>\n        !!item &&\n        typeof item === 'object' &&\n        ('src' in item ||\n          'thumbnail' in item ||\n          'node' in item ||\n          'kind' in item),\n    );\n  }\n  return (\n    typeof value === 'object' &&\n    ('src' in value ||\n      'thumbnail' in value ||\n      'node' in value ||\n      'kind' in value)\n  );\n}\n\nfunction renderBadges(badges?: DataExplorerDisplayBadge[]) {\n  if (!badges?.length) {\n    return undefined;\n  }\n\n  return (\n    <>\n      {badges.map((badge, index) => (\n        <span\n          key={badge.id ?? index}\n          title={badge.title}\n          className={cn(\n            'inline-flex max-w-full items-center rounded-full border border-border/60 px-2 py-0.5 text-xs font-medium',\n            badge.tone === 'primary' && 'border-primary/30 bg-primary/10 text-primary',\n            badge.tone === 'success' && '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            badge.tone === 'warning' && '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            badge.tone === 'danger' && 'border-destructive/30 bg-destructive/10 text-destructive-text',\n            badge.tone === 'muted' && 'bg-muted text-muted-foreground',\n          )}\n        >\n          <span className=\"truncate\">{badge.label}</span>\n        </span>\n      ))}\n    </>\n  );\n}\n\nfunction renderMetadata(metadata?: DataExplorerDisplayMetadata[]) {\n  if (!metadata?.length) {\n    return undefined;\n  }\n\n  return (\n    <dl className=\"grid min-w-0 grid-cols-1 gap-2 text-xs sm:grid-cols-2\">\n      {metadata.map((entry, index) => (\n        <div key={entry.id ?? index} className=\"min-w-0\">\n          {entry.label ? (\n            <dt className=\"truncate text-muted-foreground\" title={entry.title}>\n              {entry.label}\n            </dt>\n          ) : null}\n          <dd className=\"mt-0.5 min-w-0 truncate text-foreground\">\n            {entry.value}\n          </dd>\n        </div>\n      ))}\n    </dl>\n  );\n}\n\nfunction renderKeywords(keywords?: ReactNode[]) {\n  if (!keywords?.length) {\n    return undefined;\n  }\n\n  return (\n    <div className=\"flex min-w-0 flex-wrap gap-1.5\">\n      {keywords.map((keyword, index) => (\n        <span\n          key={index}\n          className=\"max-w-full truncate rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\"\n        >\n          {keyword}\n        </span>\n      ))}\n    </div>\n  );\n}\n\nexport function DataExplorerDisplayCard<TSource = unknown>({\n  item,\n  title = item?.title,\n  description = item?.description,\n  badges = renderBadges(item?.badges),\n  meta = item?.status,\n  actions,\n  media = item?.media,\n  header,\n  headerLeading,\n  headerContent,\n  overlay,\n  footer,\n  children,\n  selected = item?.selected,\n  disabled = item?.disabled,\n  interactive,\n  role,\n  tabIndex,\n  appearance,\n  className,\n  classNames,\n  onClick,\n  onKeyDown,\n}: DataExplorerDisplayCardProps<TSource>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedInteractive = interactive ?? Boolean(onClick || onKeyDown);\n  const hasDefaultHeader = Boolean(\n    headerLeading ||\n      headerContent ||\n      title ||\n      description ||\n      badges ||\n      meta ||\n      actions,\n  );\n  const hasHeader = header !== undefined ? Boolean(header) : hasDefaultHeader;\n  const renderedMedia = isDisplayMedia<TSource>(media) ? (\n    <DataExplorerDisplayMedia media={media} fallbackTitle={title} />\n  ) : (\n    media\n  );\n  const defaultMetadata = renderMetadata(item?.metadata);\n  const defaultKeywords = renderKeywords(item?.keywords);\n  const resolvedChildren =\n    children !== undefined\n      ? children\n      : defaultMetadata || defaultKeywords ? (\n          <>\n            {defaultMetadata}\n            {defaultKeywords}\n          </>\n        )\n      : undefined;\n  const hasBody = Boolean(resolvedChildren);\n\n  return (\n    <article\n      className={cn(\n        theme.slots.cardRoot,\n        resolvedInteractive && !disabled && theme.slots.cardInteractive,\n        selected && theme.slots.cardSelected,\n        disabled && theme.slots.cardDisabled,\n        classNames?.root,\n        className,\n      )}\n      aria-disabled={disabled || undefined}\n      role={role}\n      tabIndex={tabIndex}\n      style={theme.styles.cardRoot}\n      onClick={disabled ? undefined : onClick}\n      onKeyDown={disabled ? undefined : onKeyDown}\n    >\n      {overlay ? (\n        <div className={cn(classNames?.overlay)}>{overlay}</div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn(theme.slots.cardHeader, classNames?.header)}>\n          {header !== undefined ? (\n            header\n          ) : (\n            <div\n              className={cn(\n                'flex min-w-0 items-start justify-between gap-3',\n                classNames?.headerMain,\n              )}\n            >\n              {headerLeading ? (\n                <div\n                  className={cn(\n                    'flex shrink-0 items-center gap-2',\n                    classNames?.headerLeading,\n                  )}\n                >\n                  {headerLeading}\n                </div>\n              ) : null}\n\n              <div className={cn('min-w-0 flex-1', classNames?.headerContent)}>\n                {headerContent ?? (\n                  <>\n                    {title ? (\n                      <div\n                        className={cn(\n                          'truncate text-sm font-semibold leading-none text-foreground',\n                          classNames?.title,\n                        )}\n                      >\n                        {title}\n                      </div>\n                    ) : null}\n                    {description ? (\n                      <div\n                        className={cn(\n                          'mt-1 min-w-0 text-sm text-muted-foreground [overflow-wrap:anywhere]',\n                          classNames?.description,\n                        )}\n                      >\n                        {description}\n                      </div>\n                    ) : null}\n                    {badges ? (\n                      <div\n                        className={cn(\n                          'mt-2 flex flex-wrap items-center gap-2',\n                          classNames?.badges,\n                        )}\n                      >\n                        {badges}\n                      </div>\n                    ) : null}\n                  </>\n                )}\n              </div>\n\n              {meta || actions ? (\n                <div className=\"flex min-w-0 items-center gap-2\">\n                  {meta ? (\n                    <div\n                      className={cn(\n                        'min-w-0 max-w-[12rem] truncate text-sm text-muted-foreground',\n                        classNames?.meta,\n                      )}\n                    >\n                      {meta}\n                    </div>\n                  ) : null}\n                  {actions ? (\n                    <div\n                      className={cn(\n                        'flex shrink-0 items-center gap-2',\n                        classNames?.actions,\n                      )}\n                    >\n                      {actions}\n                    </div>\n                  ) : null}\n                </div>\n              ) : null}\n            </div>\n          )}\n        </div>\n      ) : null}\n\n      {renderedMedia ? (\n        <div className={cn(theme.slots.cardMedia, classNames?.media)}>\n          {renderedMedia}\n        </div>\n      ) : null}\n\n      {hasBody ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>\n          {resolvedChildren}\n        </div>\n      ) : null}\n\n      {footer ? (\n        <div\n          className={cn(\n            theme.slots.cardFooter,\n            classNames?.footer,\n          )}\n        >\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { DataExplorerViewItemShellProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerViewItemShell({\n  media,\n  title,\n  description,\n  meta,\n  badges,\n  actions,\n  footer,\n  children,\n  className,\n  classNames,\n}: DataExplorerViewItemShellProps) {\n  const hasHeader =\n    !!title || !!description || !!meta || !!badges || !!actions;\n\n  return (\n    <article\n      className={cn(\n        'flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-background',\n        classNames?.root,\n        className,\n      )}\n    >\n      {media ? (\n        <div className={cn('shrink-0 overflow-hidden', classNames?.media)}>\n          {media}\n        </div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn('flex flex-col gap-3 p-4', classNames?.header)}>\n          <div className=\"flex items-start justify-between gap-3\">\n            <div className=\"min-w-0 flex-1\">\n              {title ? (\n                <div\n                  className={cn(\n                    'truncate text-sm font-semibold text-foreground',\n                    classNames?.title,\n                  )}\n                >\n                  {title}\n                </div>\n              ) : null}\n\n              {description ? (\n                <div\n                  className={cn(\n                    'mt-1 text-sm text-muted-foreground',\n                    classNames?.description,\n                  )}\n                >\n                  {description}\n                </div>\n              ) : null}\n            </div>\n\n            {(meta || actions) ? (\n              <div className=\"flex shrink-0 items-center gap-2\">\n                {meta ? (\n                  <div className={cn('text-sm text-muted-foreground', classNames?.meta)}>\n                    {meta}\n                  </div>\n                ) : null}\n\n                {actions ? (\n                  <div className={cn('flex items-center gap-2', classNames?.actions)}>\n                    {actions}\n                  </div>\n                ) : null}\n              </div>\n            ) : null}\n          </div>\n\n          {badges ? (\n            <div className={cn('flex flex-wrap items-center gap-2', classNames?.badges)}>\n              {badges}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n\n      {children ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>{children}</div>\n      ) : null}\n\n      {footer ? (\n        <div className={cn('shrink-0 border-t border-border/60 px-4 py-3', classNames?.footer)}>\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { ComponentProps } from 'react';\n\nimport type { DataExplorerViewItemProps } from './types';\nimport { DataExplorerViewItemShell } from './DataExplorerViewItemShell';\n\nexport function DataExplorerViewItem<TItem = unknown, TContext = unknown>(\n  props: DataExplorerViewItemProps<TItem, TContext>,\n) {\n  const { item, index, itemId, context, capabilities, itemDefinition, className, selected, actions, onOpen, onSelectionChange } =\n    props;\n\n  if (itemDefinition?.render) {\n    return <>{itemDefinition.render(props)}</>;\n  }\n\n  const resolvedShellProps =\n    typeof itemDefinition?.shellProps === 'function'\n      ? itemDefinition.shellProps({\n          item,\n          index,\n          itemId,\n          context,\n          capabilities,\n          itemDefinition,\n          className,\n          selected,\n          actions,\n          onOpen,\n          onSelectionChange,\n        })\n      : itemDefinition?.shellProps;\n\n  return (\n    <DataExplorerViewItemShell\n      {...(resolvedShellProps as Partial<ComponentProps<typeof DataExplorerViewItemShell>> | undefined)}\n      className={className}\n    />\n  );\n}\n","import {\n  Fragment,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n} from 'react';\n\nimport { DataExplorerViewItem } from './DataExplorerViewItem';\nimport type {\n  DataExplorerViewCollectionLayout,\n  DataExplorerViewCollectionProps,\n  DataExplorerViewId,\n  DataExplorerViewItemProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction getItemsClassName(layout?: DataExplorerViewCollectionLayout) {\n  switch (layout) {\n    case 'list':\n      return 'flex min-h-0 flex-col gap-3';\n    case 'waterfall':\n      return 'columns-1 gap-4 sm:columns-2 lg:columns-3';\n    case 'grid':\n    default:\n      return 'grid min-h-0 gap-4';\n  }\n}\n\nfunction getDefaultItemClassName(layout?: DataExplorerViewCollectionLayout) {\n  if (layout === 'waterfall') {\n    return 'mb-4 break-inside-avoid';\n  }\n\n  return undefined;\n}\n\nfunction defaultResolveItemId<TItem>(_item: TItem, index: number) {\n  return String(index);\n}\n\nfunction resolveMeasuredGridMinColumnWidth(width: number | string) {\n  if (typeof width === 'number') {\n    return `${resolvePositiveNumber(width, 220)}px`;\n  }\n\n  return width;\n}\n\nfunction resolveMeasuredGridSpan(height: number, rowHeight: number, gap: number) {\n  return Math.max(1, Math.ceil((height + gap) / (rowHeight + gap)));\n}\n\nfunction resolvePositiveNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value > 0\n    ? value\n    : fallback;\n}\n\nfunction resolveNonNegativeNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value >= 0\n    ? value\n    : fallback;\n}\n\nexport function DataExplorerViewCollection<\n  TItem = unknown,\n  TContext = unknown,\n  TViewId extends DataExplorerViewId = DataExplorerViewId,\n>({\n  items,\n  activeViewId,\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  layout = 'grid',\n  scrollable = true,\n  wrapItems = true,\n  measuredGrid,\n  itemsStyle,\n  itemStyle,\n  selectedIds = [],\n  getItemId,\n  itemDefinition,\n  renderItem,\n  getItemClassName,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerViewCollectionProps<TItem, TContext, TViewId>) {\n  const resolvedItems = Array.isArray(items) ? items : [];\n  const selectedIdSet = new Set(selectedIds);\n  const resolveItemId = getItemId ?? defaultResolveItemId;\n  const measuredGridOptions =\n    measuredGrid === true\n      ? {}\n      : measuredGrid && typeof measuredGrid === 'object'\n        ? measuredGrid\n        : undefined;\n  const measuredGridEnabled =\n    layout === 'grid' && Boolean(measuredGridOptions?.enabled ?? measuredGrid);\n  const measuredGridRowHeight = resolvePositiveNumber(\n    measuredGridOptions?.rowHeight,\n    4,\n  );\n  const measuredGridGap = resolveNonNegativeNumber(measuredGridOptions?.gap, 8);\n  const measuredGridMinColumnWidth = measuredGridOptions?.minColumnWidth ?? '220px';\n  const measuredElementsRef = useRef<Map<string, HTMLDivElement>>(new Map());\n  const measuredCallbacksRef = useRef<\n    Map<string, (node: HTMLDivElement | null) => void>\n  >(new Map());\n  const measuredSpansRef = useRef<Map<string, number>>(new Map());\n  const resizeObserverRef = useRef<ResizeObserver | null>(null);\n  const [, setMeasuredLayoutVersion] = useState(0);\n  const resolveItemStyle =\n    typeof itemStyle === 'function'\n      ? (props: DataExplorerViewItemProps<TItem, TContext>) => itemStyle(props)\n      : () => itemStyle;\n\n  useEffect(() => {\n    if (!measuredGridEnabled || typeof ResizeObserver === 'undefined') {\n      return undefined;\n    }\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      let changed = false;\n\n      for (const entry of entries) {\n        const target = entry.target as HTMLDivElement;\n        const id = target.dataset.dataExplorerItemId;\n        if (!id) continue;\n\n        const height = Math.ceil(entry.contentRect.height);\n        const span = resolveMeasuredGridSpan(\n          height,\n          measuredGridRowHeight,\n          measuredGridGap,\n        );\n\n        if (measuredSpansRef.current.get(id) !== span) {\n          measuredSpansRef.current.set(id, span);\n          changed = true;\n        }\n      }\n\n      if (changed) {\n        setMeasuredLayoutVersion((version) => version + 1);\n      }\n    });\n\n    resizeObserverRef.current = resizeObserver;\n    for (const element of measuredElementsRef.current.values()) {\n      resizeObserver.observe(element);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n      if (resizeObserverRef.current === resizeObserver) {\n        resizeObserverRef.current = null;\n      }\n    };\n  }, [measuredGridEnabled, measuredGridGap, measuredGridRowHeight]);\n\n  useEffect(() => {\n    if (!measuredGridEnabled) {\n      measuredElementsRef.current.clear();\n      measuredCallbacksRef.current.clear();\n      measuredSpansRef.current.clear();\n      return;\n    }\n\n    const ids = new Set(resolvedItems.map((item, index) => resolveItemId(item, index)));\n    let changed = false;\n\n    for (const id of measuredSpansRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredSpansRef.current.delete(id);\n      changed = true;\n    }\n\n    for (const [id, element] of measuredElementsRef.current.entries()) {\n      if (ids.has(id)) continue;\n      resizeObserverRef.current?.unobserve(element);\n      measuredElementsRef.current.delete(id);\n    }\n\n    for (const id of measuredCallbacksRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredCallbacksRef.current.delete(id);\n    }\n\n    if (changed) {\n      setMeasuredLayoutVersion((version) => version + 1);\n    }\n  }, [measuredGridEnabled, resolvedItems, resolveItemId]);\n\n  const getMeasuredRef = useCallback((itemId: string) => {\n    const cached = measuredCallbacksRef.current.get(itemId);\n    if (cached) return cached;\n\n    const callback = (node: HTMLDivElement | null) => {\n      const previous = measuredElementsRef.current.get(itemId);\n      if (previous && previous !== node) {\n        resizeObserverRef.current?.unobserve(previous);\n        measuredElementsRef.current.delete(itemId);\n      }\n\n      if (node) {\n        node.dataset.dataExplorerItemId = itemId;\n        measuredElementsRef.current.set(itemId, node);\n        resizeObserverRef.current?.observe(node);\n      }\n    };\n\n    measuredCallbacksRef.current.set(itemId, callback);\n    return callback;\n  }, []);\n\n  const getMeasuredGridSpan = (props: DataExplorerViewItemProps<TItem, TContext>) => {\n    const itemId = props.itemId;\n    if (itemId) {\n      const measured = measuredSpansRef.current.get(itemId);\n      if (measured) return measured;\n    }\n\n    const estimate = measuredGridOptions?.estimateItemHeight;\n    const rawEstimatedHeight =\n      typeof estimate === 'function'\n        ? estimate(props)\n        : typeof estimate === 'number'\n          ? estimate\n          : 240;\n    const estimatedHeight = resolvePositiveNumber(rawEstimatedHeight, 240);\n\n    return resolveMeasuredGridSpan(\n      estimatedHeight,\n      measuredGridRowHeight,\n      measuredGridGap,\n    );\n  };\n\n  const resolveMeasuredItemsStyle = (): CSSProperties | undefined => {\n    if (!measuredGridEnabled) return itemsStyle;\n\n    return {\n      ...itemsStyle,\n      gap: measuredGridGap,\n      gridAutoFlow: 'dense',\n      gridAutoRows: measuredGridRowHeight,\n      gridTemplateColumns: `repeat(auto-fill, minmax(${resolveMeasuredGridMinColumnWidth(measuredGridMinColumnWidth)}, 1fr))`,\n    };\n  };\n\n  const renderStatus = () => {\n    if (loading && loadingNode) {\n      return (\n        <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.loading)}>\n          {loadingNode}\n        </div>\n      );\n    }\n\n    if (!empty) {\n      return null;\n    }\n\n    return (\n      <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.empty)}>\n        {empty}\n      </div>\n    );\n  };\n\n  const handleSelectionChange = (\n    targetItem: TItem,\n    targetIndex: number,\n    targetItemId: string,\n    nextSelected: boolean,\n  ) => {\n    if (!onSelectionChange) {\n      return;\n    }\n\n    const resolvedTargetId = getItemId ? getItemId(targetItem, targetIndex) : targetItemId;\n    const nextSelectedIds = nextSelected\n      ? Array.from(new Set([...selectedIds, resolvedTargetId]))\n      : selectedIds.filter((id) => id !== resolvedTargetId);\n\n    onSelectionChange(nextSelectedIds);\n  };\n\n  if (resolvedItems.length === 0 && !footer && !overlay) {\n    return renderStatus();\n  }\n\n  return (\n    <div\n      className={cn('relative flex min-h-0 flex-1 flex-col overflow-hidden', classNames?.root, className)}\n      data-view-id={activeViewId || undefined}\n    >\n      {resolvedItems.length > 0 ? (\n        <div\n          className={cn(getItemsClassName(layout), scrollable && 'overflow-auto', classNames?.items)}\n          style={resolveMeasuredItemsStyle()}\n        >\n          {resolvedItems.map((item, index) => {\n            const itemId = resolveItemId(item, index);\n            const selected = selectedIdSet.has(itemId);\n            const selectionChange = (targetItem: TItem, nextSelected: boolean) => {\n              handleSelectionChange(targetItem, index, itemId, nextSelected);\n            };\n            const itemProps: DataExplorerViewItemProps<TItem, TContext> = {\n              item,\n              index,\n              itemId,\n              context,\n              capabilities,\n              itemDefinition,\n              selected,\n              onOpen: onOpenItem,\n              onSelectionChange: selectionChange,\n            };\n            const itemClassName = cn(\n              getDefaultItemClassName(layout),\n              classNames?.item,\n              getItemClassName?.({\n                ...itemProps,\n                className: classNames?.item,\n              }),\n            );\n            const currentItemProps = {\n              ...itemProps,\n              className: itemClassName,\n            };\n            const renderedItem = renderItem ? renderItem(currentItemProps) : <DataExplorerViewItem {...currentItemProps} />;\n            const resolvedStyle = resolveItemStyle(currentItemProps);\n            const measuredStyle = measuredGridEnabled\n              ? {\n                  ...resolvedStyle,\n                  gridRowEnd: `span ${getMeasuredGridSpan(currentItemProps)}`,\n                }\n              : resolvedStyle;\n\n            if (!wrapItems) {\n              if (!measuredGridEnabled) {\n                return <Fragment key={itemId}>{renderedItem}</Fragment>;\n              }\n\n              return (\n                <div key={itemId} className={itemClassName} style={measuredStyle}>\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                </div>\n              );\n            }\n\n            return (\n              <div key={itemId} className={itemClassName} style={measuredStyle}>\n                {measuredGridEnabled ? (\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                ) : (\n                  renderedItem\n                )}\n              </div>\n            );\n          })}\n        </div>\n      ) : (\n        renderStatus()\n      )}\n\n      {loading && loadingNode && resolvedItems.length > 0 ? (\n        <div className={cn('shrink-0 p-3 text-sm text-muted-foreground', classNames?.loading)}>{loadingNode}</div>\n      ) : null}\n\n      {footer ? <div className={cn('shrink-0', classNames?.footer)}>{footer}</div> : null}\n\n      {overlay ? <div className={cn('absolute inset-0 z-10', classNames?.overlay)}>{overlay}</div> : null}\n    </div>\n  );\n}\n","import { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport type { DataExplorerDisplayListItemProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerDisplayListItem<TSource = unknown>({\n  className,\n  classNames,\n  ...props\n}: DataExplorerDisplayListItemProps<TSource>) {\n  return (\n    <DataExplorerDisplayCard\n      {...props}\n      className={cn('rounded-md', className)}\n      classNames={{\n        ...classNames,\n        root: cn('flex-row items-stretch', classNames?.root),\n        media: cn('w-28 shrink-0', classNames?.media),\n        header: cn('flex min-w-0 flex-1 items-center p-3', classNames?.header),\n        body: cn('px-3 pb-3', classNames?.body),\n      }}\n    />\n  );\n}\n","import { DataExplorerViewCollection } from './DataExplorerViewCollection';\nimport { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport { DataExplorerDisplayListItem } from './DataExplorerDisplayListItem';\nimport { DataExplorerDisplayActionMenu } from './DataExplorerDisplayActionMenu';\nimport type {\n  DataExplorerDisplayCardProps,\n  DataExplorerDisplayCollectionViewProps,\n  DataExplorerDisplayCollectionItemContext,\n  DataExplorerDisplayCollectionItemPropsResolver,\n  DataExplorerDisplayItem,\n  DataExplorerDisplayListItemProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction resolveDisplayItemProps<TProps, TSource>(\n  resolver:\n    | DataExplorerDisplayCollectionItemPropsResolver<TProps, TSource>\n    | undefined,\n  context: DataExplorerDisplayCollectionItemContext<TSource>,\n) {\n  if (!resolver) {\n    return undefined;\n  }\n\n  return typeof resolver === 'function' ? resolver(context) : resolver;\n}\n\nfunction renderDefaultItem<TSource>(\n  context: DataExplorerDisplayCollectionItemContext<TSource>,\n  onOpenItem?: (item: DataExplorerDisplayItem<TSource>) => void,\n  options?: {\n    appearance?: DataExplorerDisplayCollectionViewProps<TSource>['appearance'];\n    cardProps?: DataExplorerDisplayCollectionViewProps<TSource>['cardProps'];\n    listItemProps?: DataExplorerDisplayCollectionViewProps<TSource>['listItemProps'];\n    renderMedia?: DataExplorerDisplayCollectionViewProps<TSource>['renderMedia'];\n    renderActions?: DataExplorerDisplayCollectionViewProps<TSource>['renderActions'];\n  },\n) {\n  const { item, layout } = context;\n  const interactive = Boolean(onOpenItem) && !item.disabled;\n  const renderedActions = options?.renderActions\n    ? options.renderActions(context)\n    : item.actions?.length\n      ? (\n          <DataExplorerDisplayActionMenu\n            item={item}\n            actions={item.actions}\n            appearance={options?.appearance}\n          />\n        )\n      : undefined;\n  const sharedProps: Partial<DataExplorerDisplayCardProps<TSource>> = {\n    media: options?.renderMedia ? options.renderMedia(context) : undefined,\n    actions: renderedActions,\n    appearance: options?.appearance,\n    interactive,\n    onClick: interactive ? () => onOpenItem?.(item) : undefined,\n  };\n\n  if (layout === 'list') {\n    const listItemProps = resolveDisplayItemProps<\n      DataExplorerDisplayListItemProps<TSource>,\n      TSource\n    >(options?.listItemProps, context);\n\n    return (\n      <DataExplorerDisplayListItem\n        {...sharedProps}\n        {...listItemProps}\n        item={item}\n        className={cn(sharedProps.className, listItemProps?.className)}\n      />\n    );\n  }\n\n  const cardProps = resolveDisplayItemProps<\n    DataExplorerDisplayCardProps<TSource>,\n    TSource\n  >(options?.cardProps, context);\n\n  return (\n    <DataExplorerDisplayCard\n      {...sharedProps}\n      {...cardProps}\n      item={item}\n      className={cn(sharedProps.className, cardProps?.className)}\n    />\n  );\n}\n\nexport function DataExplorerDisplayCollectionView<TSource = unknown>({\n  items,\n  activeViewId = 'display',\n  layout = 'grid',\n  appearance,\n  selectedIds,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  className,\n  classNames,\n  scrollable,\n  wrapItems,\n  measuredGrid,\n  itemsStyle,\n  itemStyle,\n  getItemClassName,\n  cardProps,\n  listItemProps,\n  renderMedia,\n  renderActions,\n  renderItem,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerDisplayCollectionViewProps<TSource>) {\n  return (\n    <DataExplorerViewCollection<\n      DataExplorerDisplayItem<TSource>,\n      undefined,\n      string\n    >\n      activeViewId={activeViewId}\n      items={items}\n      layout={layout}\n      selectedIds={selectedIds}\n      className={className}\n      classNames={classNames}\n      empty={empty}\n      loading={loading}\n      loadingNode={loadingNode}\n      footer={footer}\n      overlay={overlay}\n      scrollable={scrollable}\n      wrapItems={wrapItems}\n      measuredGrid={measuredGrid}\n      itemsStyle={itemsStyle}\n      itemStyle={\n        typeof itemStyle === 'function'\n          ? ({ item, index = 0, itemId = '', selected = false }) =>\n              itemStyle({\n                item,\n                index,\n                itemId,\n                selected,\n                activeViewId,\n                layout,\n              })\n          : itemStyle\n      }\n      getItemId={(item) => item.id}\n      getItemClassName={\n        getItemClassName\n          ? ({ item, index = 0, itemId = '', selected = false }) =>\n              getItemClassName({\n                item,\n                index,\n                itemId,\n                selected,\n                activeViewId,\n                layout,\n              })\n          : undefined\n      }\n      renderItem={({ item, index }) =>\n        (() => {\n          const context: DataExplorerDisplayCollectionItemContext<TSource> = {\n            item,\n            index: index ?? 0,\n            itemId: item.id,\n            selected: selectedIds?.includes(item.id) ?? false,\n            activeViewId,\n            layout,\n          };\n\n          return renderItem\n            ? renderItem(item, context.index, context)\n            : renderDefaultItem(context, onOpenItem, {\n                cardProps,\n                listItemProps,\n                appearance,\n                renderMedia,\n                renderActions,\n              });\n        })()\n      }\n      onOpenItem={onOpenItem}\n      onSelectionChange={onSelectionChange}\n    />\n  );\n}\n","import {\n  useCallback,\n  useEffect,\n  useLayoutEffect,\n  useRef,\n  useState,\n} from 'react';\nimport type { MouseEvent, PointerEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport type { DataExplorerImagePreviewProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\ntype NaturalSize = { width: number; height: number };\n\nconst DEFAULT_ZOOM_STEP = 1.18;\nconst DEFAULT_STAGE_PADDING = 16;\nconst MAX_SAFE_SCALE = 1e6;\nconst MIN_SAFE_SCALE = 1e-6;\n\nconst clamp = (value: number, min: number, max: number) =>\n  Math.min(max, Math.max(min, value));\n\nconst isNoDragTarget = (target: EventTarget | null) =>\n  target instanceof Element && Boolean(target.closest('[data-no-drag=\"true\"]'));\n\nfunction ResetIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M3 12a9 9 0 1 0 3-6.7\" />\n      <path d=\"M3 4v6h6\" />\n    </svg>\n  );\n}\n\nfunction PlusIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M12 5v14\" />\n      <path d=\"M5 12h14\" />\n    </svg>\n  );\n}\n\nfunction MinusIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M5 12h14\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerImagePreview({\n  src,\n  alt = 'Preview image',\n  empty = 'No image preview',\n  actions,\n  actionContext,\n  toolbarActions,\n  zoomStep = DEFAULT_ZOOM_STEP,\n  stagePadding = DEFAULT_STAGE_PADDING,\n  minScale = MIN_SAFE_SCALE,\n  maxScale = MAX_SAFE_SCALE,\n  controlsVisible = true,\n  zoomLabelVisible = false,\n  resetLabel = 'Reset image view',\n  zoomInLabel = 'Zoom in',\n  zoomOutLabel = 'Zoom out',\n  appearance,\n  className,\n  classNames,\n  onLoad,\n  onError,\n}: DataExplorerImagePreviewProps) {\n  const theme = resolveDataExplorerAppearance(\n    appearance ?? { background: 'dark-stage' },\n  );\n  const imageSrc = typeof src === 'string' ? src.trim() : '';\n  const stageRef = useRef<HTMLDivElement>(null);\n  const stageSizeRef = useRef<{ width: number; height: number } | null>(null);\n  const viewRef = useRef({ scale: 1, translateX: stagePadding, translateY: stagePadding });\n  const draggingRef = useRef<\n    | {\n        pointerId: number;\n        startClientX: number;\n        startClientY: number;\n        startTranslateX: number;\n        startTranslateY: number;\n      }\n    | undefined\n  >(undefined);\n  const [naturalSize, setNaturalSize] = useState<NaturalSize | null>(null);\n  const [dragging, setDragging] = useState(false);\n  const [{ scale, translateX, translateY }, setView] = useState(() => ({\n    scale: 1,\n    translateX: stagePadding,\n    translateY: stagePadding,\n  }));\n\n  useEffect(() => {\n    viewRef.current = { scale, translateX, translateY };\n  }, [scale, translateX, translateY]);\n\n  useEffect(() => {\n    setNaturalSize(null);\n    setView({ scale: 1, translateX: stagePadding, translateY: stagePadding });\n  }, [imageSrc, stagePadding]);\n\n  const normalizedMinScale = Number.isFinite(minScale)\n    ? Math.max(MIN_SAFE_SCALE, minScale)\n    : MIN_SAFE_SCALE;\n  const normalizedMaxScale = Number.isFinite(maxScale)\n    ? Math.max(normalizedMinScale, maxScale)\n    : MAX_SAFE_SCALE;\n  const normalizedZoomStep =\n    Number.isFinite(zoomStep) && zoomStep > 1 ? zoomStep : DEFAULT_ZOOM_STEP;\n  const normalizedStagePadding =\n    Number.isFinite(stagePadding) && stagePadding >= 0\n      ? stagePadding\n      : DEFAULT_STAGE_PADDING;\n\n  const resetView = useCallback(\n    (nextNaturalSize?: NaturalSize) => {\n      const stage = stageRef.current;\n      const size = nextNaturalSize ?? naturalSize;\n      if (!stage || !size) return;\n\n      const availableWidth = Math.max(\n        0,\n        stage.clientWidth - normalizedStagePadding * 2,\n      );\n      const availableHeight = Math.max(\n        0,\n        stage.clientHeight - normalizedStagePadding * 2,\n      );\n      if (\n        availableWidth <= 0 ||\n        availableHeight <= 0 ||\n        size.width <= 0 ||\n        size.height <= 0\n      ) {\n        return;\n      }\n\n      const fitScale = Math.min(\n        availableWidth / size.width,\n        availableHeight / size.height,\n      );\n      const nextScale = clamp(\n        fitScale,\n        normalizedMinScale,\n        normalizedMaxScale,\n      );\n      const fittedWidth = size.width * nextScale;\n      const fittedHeight = size.height * nextScale;\n\n      setView({\n        scale: nextScale,\n        translateX: (stage.clientWidth - fittedWidth) / 2,\n        translateY: (stage.clientHeight - fittedHeight) / 2,\n      });\n    },\n    [naturalSize, normalizedMaxScale, normalizedMinScale, normalizedStagePadding],\n  );\n\n  const compensateStageResize = useCallback((width: number, height: number) => {\n    if (!Number.isFinite(width) || !Number.isFinite(height)) return;\n    if (width <= 0 || height <= 0) return;\n\n    const previous = stageSizeRef.current;\n    stageSizeRef.current = { width, height };\n    if (!previous || !imageSrc) return;\n\n    const deltaX = (width - previous.width) / 2;\n    const deltaY = (height - previous.height) / 2;\n    if (deltaX === 0 && deltaY === 0) return;\n\n    setView((current) => ({\n      scale: current.scale,\n      translateX: current.translateX + deltaX,\n      translateY: current.translateY + deltaY,\n    }));\n  }, [imageSrc]);\n\n  useLayoutEffect(() => {\n    const stage = stageRef.current;\n    if (!stage) return;\n\n    compensateStageResize(stage.clientWidth, stage.clientHeight);\n\n    if (typeof ResizeObserver !== 'undefined') {\n      const observer = new ResizeObserver((entries) => {\n        const entry = entries[0];\n        if (!entry) return;\n        compensateStageResize(entry.contentRect.width, entry.contentRect.height);\n      });\n      observer.observe(stage);\n      return () => observer.disconnect();\n    }\n\n    const handleResize = () => {\n      compensateStageResize(stage.clientWidth, stage.clientHeight);\n    };\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, [compensateStageResize]);\n\n  const zoomAtPoint = useCallback(\n    (factor: number, stageX: number, stageY: number) => {\n      if (!Number.isFinite(factor) || factor === 1) return;\n      if (!Number.isFinite(stageX) || !Number.isFinite(stageY)) return;\n\n      setView((current) => {\n        const nextScale = clamp(\n          current.scale * factor,\n          normalizedMinScale,\n          normalizedMaxScale,\n        );\n        if (!Number.isFinite(nextScale) || nextScale === current.scale) {\n          return current;\n        }\n\n        const scaleRatio = nextScale / current.scale;\n        return {\n          scale: nextScale,\n          translateX: stageX - (stageX - current.translateX) * scaleRatio,\n          translateY: stageY - (stageY - current.translateY) * scaleRatio,\n        };\n      });\n    },\n    [normalizedMaxScale, normalizedMinScale],\n  );\n\n  useEffect(() => {\n    const stage = stageRef.current;\n    if (!stage || !imageSrc || !naturalSize) return;\n\n    const handleWheel = (event: WheelEvent) => {\n      if (event.ctrlKey) return;\n\n      event.preventDefault();\n      const rect = stage.getBoundingClientRect();\n      const stageX = event.clientX - rect.left;\n      const stageY = event.clientY - rect.top;\n      const factor = Math.pow(normalizedZoomStep, -event.deltaY / 100);\n      zoomAtPoint(factor, stageX, stageY);\n    };\n\n    stage.addEventListener('wheel', handleWheel, { passive: false });\n    return () => stage.removeEventListener('wheel', handleWheel);\n  }, [imageSrc, naturalSize, normalizedZoomStep, zoomAtPoint]);\n\n  const handlePointerDown = useCallback(\n    (event: PointerEvent<HTMLDivElement>) => {\n      if (event.button !== 0) return;\n      if (!imageSrc || !naturalSize) return;\n      if (isNoDragTarget(event.target)) return;\n\n      const stage = stageRef.current;\n      if (!stage) return;\n\n      event.preventDefault();\n      stage.setPointerCapture(event.pointerId);\n      draggingRef.current = {\n        pointerId: event.pointerId,\n        startClientX: event.clientX,\n        startClientY: event.clientY,\n        startTranslateX: viewRef.current.translateX,\n        startTranslateY: viewRef.current.translateY,\n      };\n      setDragging(true);\n    },\n    [imageSrc, naturalSize],\n  );\n\n  const handlePointerMove = useCallback((event: PointerEvent<HTMLDivElement>) => {\n    const drag = draggingRef.current;\n    if (!drag || drag.pointerId !== event.pointerId) return;\n\n    event.preventDefault();\n    setView({\n      scale: viewRef.current.scale,\n      translateX: drag.startTranslateX + event.clientX - drag.startClientX,\n      translateY: drag.startTranslateY + event.clientY - drag.startClientY,\n    });\n  }, []);\n\n  const endDrag = useCallback((event: PointerEvent<HTMLDivElement>) => {\n    const drag = draggingRef.current;\n    if (!drag || drag.pointerId !== event.pointerId) return;\n\n    draggingRef.current = undefined;\n    setDragging(false);\n\n    const stage = stageRef.current;\n    if (stage?.hasPointerCapture(event.pointerId)) {\n      stage.releasePointerCapture(event.pointerId);\n    }\n  }, []);\n\n  const handleDoubleClick = useCallback(\n    (event: MouseEvent<HTMLDivElement>) => {\n      if (!imageSrc || !naturalSize) return;\n      if (isNoDragTarget(event.target)) return;\n      resetView();\n    },\n    [imageSrc, naturalSize, resetView],\n  );\n\n  const handleZoomButtonClick = useCallback(\n    (factor: number) => {\n      const stage = stageRef.current;\n      if (!stage || !naturalSize) return;\n      zoomAtPoint(factor, stage.clientWidth / 2, stage.clientHeight / 2);\n    },\n    [naturalSize, zoomAtPoint],\n  );\n\n  return (\n    <div\n      ref={stageRef}\n      className={cn(\n        theme.slots.previewRoot,\n        imageSrc && naturalSize\n          ? dragging\n            ? 'cursor-grabbing'\n            : 'cursor-grab'\n          : 'cursor-default',\n        classNames?.root,\n        className,\n      )}\n      onPointerDown={handlePointerDown}\n      onPointerMove={handlePointerMove}\n      onPointerUp={endDrag}\n      onPointerCancel={endDrag}\n      onDoubleClick={handleDoubleClick}\n      style={theme.styles.previewRoot}\n    >\n      {imageSrc ? (\n        <div\n          className={cn(\n            'absolute left-0 top-0 will-change-transform',\n            classNames?.imageLayer,\n          )}\n          style={{\n            transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\n            transformOrigin: '0 0',\n          }}\n        >\n          <img\n            src={imageSrc}\n            alt={alt}\n            draggable={false}\n            className={cn(\n              'pointer-events-none max-h-none max-w-none select-none',\n              classNames?.image,\n            )}\n            onLoad={(event) => {\n              const width = event.currentTarget.naturalWidth;\n              const height = event.currentTarget.naturalHeight;\n              if (!width || !height) return;\n              const size = { width, height };\n              setNaturalSize(size);\n              resetView(size);\n              onLoad?.(size);\n            }}\n            onError={onError}\n          />\n        </div>\n      ) : (\n        <div\n          className={cn(\n            theme.slots.previewPlaceholder,\n            classNames?.placeholder,\n          )}\n        >\n          {empty}\n        </div>\n      )}\n\n      {toolbarActions?.length || actions ? (\n        <div\n          data-no-drag=\"true\"\n          className={cn(\n            theme.slots.previewActions,\n            classNames?.actions,\n          )}\n        >\n          {toolbarActions?.length ? (\n            <DataExplorerToolbarActions\n              context={actionContext}\n              actions={toolbarActions}\n              layout=\"inline\"\n              appearance={appearance ?? { background: 'dark-stage' }}\n            />\n          ) : null}\n          {actions}\n        </div>\n      ) : null}\n\n      {controlsVisible ? (\n        <div\n          data-no-drag=\"true\"\n          className={cn(\n            theme.slots.previewControls,\n            classNames?.controls,\n          )}\n        >\n          {zoomLabelVisible ? (\n            <span\n              className={cn(\n                theme.slots.previewZoomLabel,\n                classNames?.zoomLabel,\n              )}\n            >\n              {Math.round(scale * 100)}%\n            </span>\n          ) : null}\n          <button\n            type=\"button\"\n            aria-label={zoomOutLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => handleZoomButtonClick(1 / normalizedZoomStep)}\n          >\n            <MinusIcon />\n          </button>\n          <button\n            type=\"button\"\n            aria-label={zoomInLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => handleZoomButtonClick(normalizedZoomStep)}\n          >\n            <PlusIcon />\n          </button>\n          <button\n            type=\"button\"\n            aria-label={resetLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => resetView()}\n          >\n            <ResetIcon />\n          </button>\n        </div>\n      ) : null}\n    </div>\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 type { DataExplorerPageProps } from './types';\nimport {\n  DataExplorerAppearanceProvider,\n  useDataExplorerAppearance,\n} from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nexport function DataExplorerPage({\n  sidebar,\n  tree,\n  toolbar,\n  controls,\n  notices,\n  content,\n  view,\n  detail,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerPageProps) {\n  const resolvedAppearance = useDataExplorerAppearance(appearance);\n  const theme = resolvedAppearance\n    ? resolveDataExplorerAppearance(resolvedAppearance)\n    : undefined;\n  const sidebarNode = tree ?? sidebar;\n  const toolbarNode = controls ?? toolbar;\n  const contentNode = view ?? content;\n\n  return (\n    <DataExplorerAppearanceProvider appearance={resolvedAppearance}>\n      <div\n        className={cn(\n          'flex h-full min-h-0 overflow-hidden',\n          theme?.slots.surfaceRoot,\n          classNames?.root,\n          className,\n        )}\n        style={theme?.styles.surfaceRoot}\n      >\n      {sidebarNode ? (\n        <div\n          className={cn(\n            'min-h-0 shrink-0 overflow-hidden',\n            classNames?.sidebar,\n            classNames?.tree,\n          )}\n        >\n          {sidebarNode}\n        </div>\n      ) : null}\n\n      <div\n        className={cn(\n          'relative flex min-h-0 flex-1 flex-col overflow-hidden',\n          classNames?.main,\n        )}\n      >\n        {toolbarNode ? (\n          <div\n            className={cn('shrink-0', classNames?.toolbar, classNames?.controls)}\n          >\n            {toolbarNode}\n          </div>\n        ) : null}\n\n        {notices ? (\n          <div className={cn('shrink-0', classNames?.notices)}>{notices}</div>\n        ) : null}\n\n        <div\n          className={cn(\n            'flex min-h-0 flex-1 flex-col overflow-hidden',\n            classNames?.content,\n            classNames?.view,\n          )}\n        >\n          {contentNode}\n        </div>\n\n        {detail ? <div className={cn(classNames?.detail)}>{detail}</div> : null}\n      </div>\n      </div>\n    </DataExplorerAppearanceProvider>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport { DataExplorerDisplayMedia } from './DataExplorerDisplayMedia';\nimport type {\n  DataExplorerDisplayItem,\n  DataExplorerRecordCardProps,\n} from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction DefaultCheckbox<TSource>({\n  item,\n  selected,\n  label,\n  className,\n  onToggleSelection,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  selected: boolean;\n  label?: string;\n  className?: string;\n  onToggleSelection?: (item: DataExplorerDisplayItem<TSource>) => void;\n}) {\n  if (!onToggleSelection) {\n    return null;\n  }\n\n  return (\n    <input\n      type=\"checkbox\"\n      checked={selected}\n      aria-label={label}\n      className={cn('h-4 w-4 shrink-0 accent-primary', className)}\n      onChange={() => onToggleSelection(item)}\n      onClick={(event) => event.stopPropagation()}\n    />\n  );\n}\n\nfunction DefaultFavorite<TSource>({\n  item,\n  active,\n  label,\n  className,\n  onToggleFavorite,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  active: boolean;\n  label?: string;\n  className?: string;\n  onToggleFavorite?: (item: DataExplorerDisplayItem<TSource>) => void;\n}) {\n  if (!onToggleFavorite) {\n    return null;\n  }\n\n  return (\n    <button\n      type=\"button\"\n      aria-pressed={active}\n      title={label}\n      className={cn(\n        'inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground',\n        active && 'text-[hsl(var(--warning,45_93%_47%))]',\n        className,\n      )}\n      onClick={(event) => {\n        event.stopPropagation();\n        onToggleFavorite(item);\n      }}\n    >\n      <svg\n        aria-hidden=\"true\"\n        viewBox=\"0 0 24 24\"\n        className=\"h-4 w-4\"\n        fill={active ? 'currentColor' : 'none'}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n      >\n        <path d=\"m12 2 3.1 6.3 6.9 1-5 4.9 1.2 6.8-6.2-3.3L5.8 21 7 14.2 2 9.3l6.9-1L12 2Z\" />\n      </svg>\n      <span className=\"sr-only\">{label}</span>\n    </button>\n  );\n}\n\nfunction renderKeywords<TSource>({\n  item,\n  limit,\n  classNames,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  limit: number;\n  classNames?: DataExplorerRecordCardProps<TSource>['classNames'];\n}) {\n  const keywords = item.keywords ?? [];\n  if (keywords.length === 0) {\n    return null;\n  }\n\n  const visible = keywords.slice(0, limit);\n  const rest = Math.max(0, keywords.length - visible.length);\n\n  return (\n    <div className={cn('mt-2 flex flex-wrap gap-2', classNames?.keywords)}>\n      {visible.map((keyword, index) => (\n        <span\n          key={index}\n          className={cn(\n            'max-w-full truncate rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground',\n            classNames?.keyword,\n          )}\n          title={typeof keyword === 'string' ? keyword : undefined}\n        >\n          {keyword}\n        </span>\n      ))}\n      {rest > 0 ? (\n        <span\n          className={cn(\n            'rounded-full border border-border px-2 py-0.5 text-xs text-muted-foreground',\n            classNames?.keywordOverflow,\n          )}\n        >\n          +{rest}\n        </span>\n      ) : null}\n    </div>\n  );\n}\n\nexport function DataExplorerRecordCard<TSource = unknown>({\n  item,\n  selected = item.selected ?? false,\n  active,\n  disabled = item.disabled,\n  hasMedia,\n  showHeaderWithMedia = false,\n  selectionVisible,\n  favoriteVisible,\n  overlayControlsAlwaysVisible,\n  favoriteActive = false,\n  favoriteLabel = 'Favorite',\n  favoriteActiveLabel = 'Unfavorite',\n  selectLabel = 'Select item',\n  unselectLabel = 'Unselect item',\n  actions,\n  media,\n  footer,\n  checkbox,\n  favorite,\n  keywordLimit = 3,\n  appearance,\n  className,\n  classNames,\n  onClick,\n  onToggleSelection,\n  onToggleFavorite,\n}: DataExplorerRecordCardProps<TSource>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedHasMedia = hasMedia ?? Boolean(media ?? item.media);\n  const shouldRenderHeader = !resolvedHasMedia || showHeaderWithMedia;\n  const shouldShowSelection =\n    selectionVisible ?? Boolean(selected || onToggleSelection);\n  const shouldShowFavorite =\n    favoriteVisible ?? Boolean(favorite || onToggleFavorite);\n  const favoriteTitle = favoriteActive ? favoriteActiveLabel : favoriteLabel;\n  const selectionLabel = selected ? unselectLabel : selectLabel;\n  const renderedSelection =\n    checkbox ??\n    (shouldShowSelection ? (\n      <DefaultCheckbox\n        item={item}\n        selected={selected}\n        label={selectionLabel}\n        className={classNames?.selectionControl}\n        onToggleSelection={onToggleSelection}\n      />\n    ) : null);\n  const renderedFavorite =\n    favorite ??\n    (shouldShowFavorite ? (\n      <DefaultFavorite\n        item={item}\n        active={favoriteActive}\n        label={favoriteTitle}\n        className={classNames?.favoriteControl}\n        onToggleFavorite={onToggleFavorite}\n      />\n    ) : null);\n  const renderedMedia =\n    media ??\n    (item.media ? (\n      <DataExplorerDisplayMedia media={item.media} fallbackTitle={item.title} />\n    ) : undefined);\n  const header = shouldRenderHeader ? (\n    <div className={cn('flex flex-col', classNames?.header)}>\n      <div\n        className={cn(\n          'flex min-w-0 items-center justify-between gap-2',\n          classNames?.headerMain,\n        )}\n      >\n        <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n          {renderedSelection}\n          <div className=\"min-w-0 flex-1\">\n            {item.title ? (\n              <h3\n                className={cn(\n                  'truncate text-sm font-semibold leading-none',\n                  classNames?.title,\n                )}\n              >\n                {item.title}\n              </h3>\n            ) : null}\n          </div>\n        </div>\n        {renderedFavorite || actions ? (\n          <div className=\"flex shrink-0 items-center gap-1\">\n            {renderedFavorite}\n            {actions}\n          </div>\n        ) : null}\n      </div>\n      {renderKeywords({ item, limit: keywordLimit, classNames })}\n    </div>\n  ) : null;\n  const overlay =\n    resolvedHasMedia && (renderedSelection || renderedFavorite || actions) ? (\n      <div className={cn('absolute inset-x-2 top-2 z-10', classNames?.overlay)}>\n        <div\n          className={cn(\n            'flex items-start justify-between gap-1 transition-opacity',\n            selected || overlayControlsAlwaysVisible\n              ? 'opacity-100'\n              : 'opacity-0 group-hover:opacity-100',\n            classNames?.overlayControls,\n          )}\n        >\n          {renderedSelection ?? <span />}\n          <div className=\"flex items-center gap-1\">\n            {renderedFavorite}\n            {actions ? (\n              <div className={cn(classNames?.floatingActions)}>{actions}</div>\n            ) : null}\n          </div>\n        </div>\n      </div>\n    ) : null;\n\n  return (\n    <DataExplorerDisplayCard\n      item={item}\n      selected={selected}\n      disabled={disabled}\n      appearance={appearance}\n      className={cn(\n        theme.slots.recordCardRoot,\n        active && theme.slots.recordCardActive,\n        classNames?.root,\n        className,\n      )}\n      classNames={{\n        overlay: classNames?.overlay,\n        header: cn(resolvedHasMedia ? 'p-3' : 'p-3 pb-2', classNames?.header),\n        media: cn('p-0 bg-muted/30', classNames?.media),\n        footer: classNames?.footer,\n      }}\n      header={header}\n      overlay={overlay}\n      media={\n        renderedMedia ? (\n          <div className={cn('relative overflow-hidden', classNames?.mediaFrame)}>\n            {renderedMedia}\n          </div>\n        ) : undefined\n      }\n      footer={footer}\n      children={null}\n      onClick={onClick}\n    />\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Check, ChevronDown, Loader2, Search, X } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport type { DataExplorerRecordPickerProps, DataExplorerRecordPickerOption } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nconst normalizeValues = (value: string | string[] | undefined, multiple: boolean): string[] => {\n  const values = multiple ? (Array.isArray(value) ? value : value ? [value] : []) : typeof value === 'string' ? [value] : [];\n  return Array.from(new Set(values.filter((item) => typeof item === 'string' && item.length > 0)));\n};\n\nconst getOptionText = (option: DataExplorerRecordPickerOption) =>\n  option.textValue ?? (typeof option.label === 'string' ? option.label : option.value);\n\nexport function DataExplorerRecordPicker({\n  value,\n  activeValue,\n  options = [],\n  createOption,\n  multiple = false,\n  placeholder = 'Select a record',\n  triggerLabel,\n  triggerIcon,\n  searchPlaceholder = 'Search records',\n  emptyState = 'No records found',\n  loadingState,\n  loadingMoreState,\n  errorState,\n  loading = false,\n  loadingMore = false,\n  disabled = false,\n  open,\n  defaultOpen = false,\n  searchValue,\n  defaultSearchValue = '',\n  appearance,\n  className,\n  classNames,\n  triggerProps,\n  dataAttributes,\n  onOpenChange,\n  onListScroll,\n  onSearchValueChange,\n  onValueChange,\n}: DataExplorerRecordPickerProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n  const [uncontrolledSearch, setUncontrolledSearch] = useState(defaultSearchValue);\n  const isControlledOpen = open !== undefined;\n  const isOpen = isControlledOpen ? open : uncontrolledOpen;\n  const isControlledSearch = searchValue !== undefined;\n  const query = isControlledSearch ? searchValue : uncontrolledSearch;\n  const selectedValues = useMemo(() => normalizeValues(value, multiple), [multiple, value]);\n  const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n  const selectedOptions = selectedValues\n    .map((selectedValue) => options.find((option) => option.value === selectedValue))\n    .filter((option): option is DataExplorerRecordPickerOption => Boolean(option));\n  const visibleOptions = createOption ? [createOption, ...options] : options;\n  const triggerValue = selectedOptions.length\n    ? multiple && selectedOptions.length > 1\n      ? `${selectedOptions.slice(0, 2).map((option) => getOptionText(option)).join(', ')} +${selectedOptions.length - 2}`\n      : getOptionText(selectedOptions[0])\n    : placeholder;\n\n  useEffect(() => {\n    if (!isOpen) return;\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') onOpenChange?.(false);\n    };\n    window.addEventListener('keydown', handleKeyDown);\n    return () => window.removeEventListener('keydown', handleKeyDown);\n  }, [isOpen, onOpenChange]);\n\n  const setOpen = (nextOpen: boolean) => {\n    if (disabled) return;\n    if (!isControlledOpen) setUncontrolledOpen(nextOpen);\n    onOpenChange?.(nextOpen);\n  };\n\n  const setQuery = (nextQuery: string) => {\n    if (!isControlledSearch) setUncontrolledSearch(nextQuery);\n    onSearchValueChange?.(nextQuery);\n  };\n\n  const handleOptionClick = (option: DataExplorerRecordPickerOption) => {\n    if (disabled || option.disabled) return;\n    if (multiple) {\n      const nextValues = selectedSet.has(option.value)\n        ? selectedValues.filter((selectedValue) => selectedValue !== option.value)\n        : [...selectedValues, option.value];\n      onValueChange?.(nextValues);\n      return;\n    }\n    onValueChange?.(option.value);\n    setOpen(false);\n  };\n\n  const removeValue = (selectedValue: string) => {\n    if (disabled) return;\n    onValueChange?.(selectedValues.filter((valueItem) => valueItem !== selectedValue));\n  };\n\n  return (\n    <div {...dataAttributes?.root} className={cn('relative min-w-0 w-full', classNames?.root, className)}>\n      <Popover.Root open={isOpen} onOpenChange={setOpen}>\n        <Popover.Trigger asChild>\n          <button\n            {...triggerProps}\n            {...dataAttributes?.trigger}\n            type=\"button\"\n            disabled={disabled}\n            aria-label={triggerLabel}\n            aria-expanded={isOpen}\n            className={cn(theme.slots.controlSelectTrigger, classNames?.trigger)}\n          >\n            {triggerIcon}\n            <span {...dataAttributes?.triggerValue} className={cn(theme.slots.controlSelectValue, !selectedOptions.length && 'text-muted-foreground', classNames?.triggerValue)}>{triggerValue}</span>\n            <ChevronDown className=\"h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n          </button>\n        </Popover.Trigger>\n        <Popover.Portal>\n          <Popover.Content\n            {...dataAttributes?.content}\n            align=\"start\"\n            sideOffset={6}\n            className={cn('z-50 w-[min(30rem,calc(100vw-2rem))] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md', classNames?.content)}\n            onOpenAutoFocus={(event) => event.preventDefault()}\n          >\n            <label className={cn('flex h-9 items-center gap-2 rounded-md border border-border bg-background px-2 text-sm', classNames?.search)}>\n              <Search className=\"h-4 w-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n              <input\n                autoFocus\n                value={query}\n                onChange={(event) => setQuery(event.target.value)}\n                placeholder={searchPlaceholder}\n                aria-label={searchPlaceholder}\n                className=\"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground\"\n              />\n            </label>\n            <div\n              className={cn('mt-2 max-h-72 overflow-y-auto', classNames?.list)}\n              {...dataAttributes?.list}\n              role=\"listbox\"\n              aria-multiselectable={multiple || undefined}\n              onScroll={onListScroll}\n            >\n              {loading ? (\n                <div {...dataAttributes?.loading} className={cn('flex min-h-16 items-center justify-center gap-2 px-3 py-4 text-sm text-muted-foreground', classNames?.status)}>\n                  <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n                  {loadingState ?? 'Loading records...'}\n                </div>\n              ) : errorState ? (\n                <div {...dataAttributes?.error} className={cn('px-3 py-4 text-sm text-destructive-text', classNames?.status)}>{errorState}</div>\n              ) : visibleOptions.length === 0 ? (\n                <div {...dataAttributes?.empty} className={cn('px-3 py-4 text-sm text-muted-foreground', classNames?.status)}>{emptyState}</div>\n              ) : (\n                <>\n                  {visibleOptions.map((option) => {\n                    const selected = selectedSet.has(option.value);\n                    return (\n                      <button\n                        key={option.value}\n                        {...dataAttributes?.option}\n                        type=\"button\"\n                        role=\"option\"\n                        aria-selected={selected}\n                        aria-current={activeValue !== undefined && option.value === activeValue ? 'true' : undefined}\n                        disabled={option.disabled}\n                        onClick={() => handleOptionClick(option)}\n                        className={cn(\n                          'flex w-full items-start gap-2 rounded-sm px-2.5 py-2 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50',\n                          selected && 'bg-accent/60',\n                          classNames?.option,\n                        )}\n                      >\n                        <span className={cn('mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center', classNames?.optionIndicator)}>\n                          {selected ? <Check className=\"h-4 w-4\" aria-hidden=\"true\" /> : null}\n                        </span>\n                        <span className=\"min-w-0 flex-1\">\n                          <span className={cn('block truncate', classNames?.optionLabel)}>{option.label}</span>\n                          {option.description ? <span className={cn('mt-0.5 block truncate text-xs text-muted-foreground', classNames?.optionDescription)}>{option.description}</span> : null}\n                        </span>\n                      </button>\n                    );\n                  })}\n                  {loadingMore ? (\n                    <div\n                      {...dataAttributes?.loadingMore}\n                      className={cn(\n                        'flex items-center justify-center gap-2 px-3 py-2 text-xs text-muted-foreground',\n                        classNames?.status,\n                      )}\n                    >\n                      <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden=\"true\" />\n                      {loadingMoreState ?? 'Loading more records...'}\n                    </div>\n                  ) : null}\n                </>\n              )}\n            </div>\n          </Popover.Content>\n        </Popover.Portal>\n      </Popover.Root>\n      {multiple && selectedOptions.length > 0 ? (\n        <div className={cn('mt-2 flex flex-wrap gap-1.5', classNames?.selectedList)}>\n          {selectedOptions.map((option) => (\n            <span key={option.value} className={cn('inline-flex max-w-full items-center gap-1 rounded-full border border-border bg-muted px-2 py-1 text-xs', classNames?.selectedItem)}>\n              <span className={cn('min-w-0 truncate', classNames?.selectedItemLabel)}>{option.label}</span>\n              <button\n                type=\"button\"\n                aria-label={`Remove ${getOptionText(option)}`}\n                onClick={() => removeValue(option.value)}\n                className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-accent hover:text-foreground', classNames?.selectedItemRemove)}\n              >\n                <X className=\"h-3 w-3\" aria-hidden=\"true\" />\n              </button>\n            </span>\n          ))}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { UploadCloud } from 'lucide-react';\nimport { useRef, useState, type DragEvent, type ReactNode } from 'react';\n\nimport type { DataExplorerUploadSurfaceProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerUploadSurface({\n  accept,\n  multiple = false,\n  disabled = false,\n  busy = false,\n  title = 'Upload files',\n  description,\n  hint,\n  busyLabel = 'Uploading...',\n  icon,\n  inputProps,\n  className,\n  classNames,\n  onFilesSelected,\n}: DataExplorerUploadSurfaceProps) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [isDragging, setIsDragging] = useState(false);\n\n  const emitFiles = (files: FileList | File[]) => {\n    if (disabled || busy) return;\n    const selected = Array.from(files);\n    if (selected.length > 0) onFilesSelected?.(selected);\n  };\n\n  const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n    event.preventDefault();\n    setIsDragging(false);\n    emitFiles(event.dataTransfer.files);\n  };\n\n  const renderText = (value: ReactNode, fallbackClassName: string, slot?: string) =>\n    value ? <span data-slot={slot} className={cn('max-w-full [overflow-wrap:anywhere]', fallbackClassName)}>{value}</span> : null;\n\n  return (\n    <div\n      data-monkeys-component=\"data-explorer-upload-surface\"\n      data-state={busy ? 'busy' : isDragging ? 'dragging' : 'idle'}\n      className={cn(\n        'rounded-[var(--radius)] border border-dashed border-border bg-muted/20 p-6 text-center transition-colors',\n        isDragging && 'border-primary/60 bg-primary/5',\n        (disabled || busy) && 'pointer-events-none opacity-60',\n        classNames?.root,\n        className,\n      )}\n      onDragEnter={(event) => {\n        event.preventDefault();\n        if (!disabled && !busy) setIsDragging(true);\n      }}\n      onDragOver={(event) => event.preventDefault()}\n      onDragLeave={(event) => {\n        event.preventDefault();\n        if (event.currentTarget === event.target) setIsDragging(false);\n      }}\n      onDrop={handleDrop}\n    >\n      <input\n        {...inputProps}\n        ref={inputRef}\n        className=\"sr-only\"\n        type=\"file\"\n        accept={accept}\n        multiple={multiple}\n        disabled={disabled || busy}\n        onChange={(event) => {\n          emitFiles(event.target.files ?? []);\n          event.target.value = '';\n        }}\n      />\n      <button\n        type=\"button\"\n        className={cn('mx-auto flex min-w-0 flex-col items-center gap-2 text-center', classNames?.button)}\n        disabled={disabled || busy}\n        onClick={() => inputRef.current?.click()}\n      >\n        <span className={cn('text-muted-foreground', classNames?.icon)}>\n          {busy ? <span className=\"inline-block h-7 w-7 animate-spin rounded-full border-2 border-primary/25 border-t-primary\" aria-hidden=\"true\" /> : icon ?? <UploadCloud className=\"h-7 w-7\" aria-hidden=\"true\" />}\n        </span>\n        {renderText(busy ? busyLabel : title, 'text-sm font-semibold text-foreground', 'title')}\n        {renderText(description, 'max-w-xl text-xs leading-5 text-muted-foreground', 'description')}\n        {renderText(hint, 'max-w-xl text-xs leading-5 text-muted-foreground', 'hint')}\n      </button>\n    </div>\n  );\n}\n","import type { FormEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport type { DataExplorerToolbarShellProps } from './types';\nimport { cn } from './utils';\n\nfunction DefaultSearchIcon() {\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=\"11\" cy=\"11\" r=\"7\" />\n      <path d=\"m20 20-3.5-3.5\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerToolbarShell<TContext = unknown>({\n  rootRef,\n  dataAttributes,\n  context,\n  leading,\n  leadingActions,\n  searchVisible = true,\n  searchValue = '',\n  searchPlaceholder = 'Search data...',\n  searchIcon,\n  viewOptions = [],\n  activeViewId,\n  actions,\n  toolbarActions,\n  appearance,\n  children,\n  className,\n  classNames,\n  onSearchChange,\n  onSearchSubmit,\n  onViewChange,\n}: DataExplorerToolbarShellProps<TContext>) {\n  const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n    event.preventDefault();\n    onSearchSubmit?.(searchValue);\n  };\n  const resolvedAppearance = useDataExplorerAppearance(appearance);\n  const theme = resolveDataExplorerAppearance(resolvedAppearance);\n\n  return (\n    <div\n      ref={rootRef}\n      {...dataAttributes}\n      className={cn(\n        theme.slots.toolbarRoot,\n        classNames?.root,\n        className,\n      )}\n      style={theme.styles.toolbarRoot}\n    >\n      {leading || leadingActions?.length ? (\n        <div className={cn(theme.slots.toolbarLeading, classNames?.leading)}>\n          {leading}\n          {leadingActions?.length ? (\n            <DataExplorerToolbarActions\n              context={context}\n              actions={leadingActions}\n              layout=\"inline\"\n              appearance={resolvedAppearance}\n              classNames={{\n                action: classNames?.action,\n                menuContent: classNames?.menuContent,\n                menuItem: classNames?.menuItem,\n              }}\n            />\n          ) : null}\n        </div>\n      ) : null}\n\n      {searchVisible ? (\n        <form\n          className={cn(\n            theme.slots.toolbarSearch,\n            classNames?.search,\n          )}\n          style={theme.styles.toolbarSearch}\n          onSubmit={handleSubmit}\n        >\n          <span\n            className={cn(\n              theme.slots.toolbarSearchIcon,\n              classNames?.searchIcon,\n            )}\n          >\n            {searchIcon ?? <DefaultSearchIcon />}\n          </span>\n          <input\n            value={searchValue}\n            placeholder={searchPlaceholder}\n            className={cn(\n              theme.slots.toolbarSearchInput,\n              classNames?.searchInput,\n            )}\n            onChange={(event) => onSearchChange?.(event.currentTarget.value)}\n          />\n        </form>\n      ) : null}\n\n      {viewOptions.length > 0 ? (\n        <div\n          className={cn(\n            theme.slots.toolbarViewSwitch,\n            classNames?.viewSwitch,\n          )}\n          style={theme.styles.toolbarViewSwitch}\n        >\n          {viewOptions.map((option) => {\n            const active = option.id === activeViewId;\n            return (\n              <button\n                key={option.id}\n                type=\"button\"\n                disabled={option.disabled}\n                className={cn(\n                  theme.slots.toolbarViewButton,\n                  active && theme.slots.toolbarViewButtonActive,\n                  classNames?.viewButton,\n                )}\n                onClick={() => onViewChange?.(option.id)}\n              >\n                {option.icon}\n                {option.label ? <span>{option.label}</span> : null}\n              </button>\n            );\n          })}\n        </div>\n      ) : null}\n\n      {toolbarActions?.length ? (\n        <DataExplorerToolbarActions\n          context={context}\n          actions={toolbarActions}\n          layout=\"toolbar\"\n          appearance={appearance}\n          classNames={{\n            root: classNames?.actions,\n            action: classNames?.action,\n            menuContent: classNames?.menuContent,\n            menuItem: classNames?.menuItem,\n          }}\n        />\n      ) : actions || children ? (\n        <div className={cn(theme.slots.toolbarActions, classNames?.actions)}>\n          {actions}\n          {children}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import type { ReactNode } from 'react';\n\nimport type { DataExplorerTreeProps } from './types';\nimport { cn } from './utils';\n\nfunction defaultGetChildren<TNode>(node: TNode): TNode[] | undefined {\n  if (!node || typeof node !== 'object') {\n    return undefined;\n  }\n  const candidate = (node as { children?: unknown }).children;\n  return Array.isArray(candidate) ? (candidate as TNode[]) : undefined;\n}\n\nexport function DataExplorerTree<TNode = unknown, TContext = unknown>({\n  nodes = [],\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  selectedNodeId,\n  getNodeId,\n  getChildren = defaultGetChildren,\n  renderNode,\n  onSelect,\n}: DataExplorerTreeProps<TNode, TContext>) {\n  const resolvedNodes = Array.isArray(nodes) ? nodes : [];\n\n  const renderTreeNodes = (currentNodes: TNode[], depth: number): ReactNode =>\n    currentNodes.map((node, index) => {\n      const nodeId = getNodeId ? getNodeId(node, index) : `${depth}-${index}`;\n      const childNodes = getChildren(node, index, depth) ?? [];\n      const hasChildren = childNodes.length > 0;\n      const selected = String(selectedNodeId ?? '') === String(nodeId);\n      const renderedChildren = hasChildren ? renderTreeNodes(childNodes, depth + 1) : null;\n\n      if (!renderNode) {\n        return renderedChildren;\n      }\n\n      return (\n        <div key={nodeId} className=\"min-w-0\">\n          {renderNode({\n            node,\n            index,\n            depth,\n            context,\n            capabilities,\n            childNodes,\n            hasChildren,\n            selected,\n            onSelect,\n            renderChildren: () => renderedChildren,\n          })}\n        </div>\n      );\n    });\n\n  if (resolvedNodes.length === 0) {\n    if (!empty) {\n      return null;\n    }\n    return <div className={cn(classNames?.empty)}>{empty}</div>;\n  }\n\n  return (\n    <div className={cn('min-w-0', classNames?.root, className)}>\n      {renderTreeNodes(resolvedNodes, 0)}\n    </div>\n  );\n}\n","import type { DataExplorerTreeShellProps } from './types';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nexport function DataExplorerTreeShell({\n  title,\n  subtitle,\n  toolbar,\n  footer,\n  children,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerTreeShellProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasHeader = !!title || !!subtitle || !!toolbar;\n\n  return (\n    <section\n      className={cn(\n        theme.slots.treeShellRoot,\n        classNames?.root,\n        className,\n      )}\n    >\n      {hasHeader ? (\n        <div\n          className={cn(\n            theme.slots.treeShellHeader,\n            classNames?.header,\n          )}\n        >\n          <div className=\"min-w-0 flex-1\">\n            {title ? (\n              <div className={cn(theme.slots.treeShellTitle, classNames?.title)}>\n                {title}\n              </div>\n            ) : null}\n            {subtitle ? (\n              <div\n                className={cn(\n                  theme.slots.treeShellSubtitle,\n                  classNames?.subtitle,\n                )}\n              >\n                {subtitle}\n              </div>\n            ) : null}\n          </div>\n\n          {toolbar ? (\n            <div className={cn(theme.slots.treeShellToolbar, classNames?.toolbar)}>\n              {toolbar}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n\n      <div className={cn(theme.slots.treeShellBody, classNames?.body)}>\n        {children}\n      </div>\n\n      {footer ? (\n        <div className={cn(theme.slots.treeShellFooter, classNames?.footer)}>{footer}</div>\n      ) : null}\n    </section>\n  );\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 { DataExplorerViewCollection } from './DataExplorerViewCollection';\nimport type {\n  DataExplorerViewDefinition,\n  DataExplorerViewId,\n  DataExplorerViewProps,\n  DataExplorerViewRenderProps,\n} from './types';\n\nfunction resolveActiveViewDefinition<\n  TItem,\n  TContext,\n  TViewId extends DataExplorerViewId,\n>(\n  views: Array<DataExplorerViewDefinition<TItem, TContext, TViewId>>,\n  activeViewId?: TViewId,\n  fallbackViewId?: TViewId,\n) {\n  const visibleViews = views.filter((view) => !view.hidden);\n  if (visibleViews.length === 0) {\n    return undefined;\n  }\n\n  if (activeViewId) {\n    const matched = visibleViews.find((view) => view.id === activeViewId);\n    if (matched) {\n      return matched;\n    }\n  }\n\n  if (fallbackViewId) {\n    const fallback = visibleViews.find((view) => view.id === fallbackViewId);\n    if (fallback) {\n      return fallback;\n    }\n  }\n\n  return visibleViews[0];\n}\n\nexport function DataExplorerView<\n  TItem = unknown,\n  TContext = unknown,\n  TViewId extends DataExplorerViewId = DataExplorerViewId,\n>({\n  items,\n  views = [],\n  activeViewId,\n  fallbackViewId,\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  layout,\n  collection,\n  selectedIds = [],\n  getItemId,\n  itemDefinition,\n  renderItem,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerViewProps<TItem, TContext, TViewId>) {\n  const resolvedItems = Array.isArray(items) ? items : [];\n  const resolvedView = resolveActiveViewDefinition(views, activeViewId, fallbackViewId);\n  const resolvedActiveViewId = (resolvedView?.id ?? activeViewId ?? fallbackViewId ?? '') as TViewId;\n  const resolvedCollection =\n    collection || resolvedView?.collection\n      ? {\n          ...collection,\n          ...resolvedView?.collection,\n          classNames: {\n            ...collection?.classNames,\n            ...resolvedView?.collection?.classNames,\n          },\n        }\n      : undefined;\n  const resolvedLayout = resolvedView?.layout ?? resolvedView?.collection?.layout ?? layout ?? collection?.layout;\n  const resolvedLoading = resolvedView?.collection?.loading ?? collection?.loading ?? loading;\n  const resolvedLoadingNode = resolvedView?.collection?.loadingNode ?? collection?.loadingNode ?? loadingNode;\n  const resolvedFooter = resolvedView?.collection?.footer ?? collection?.footer ?? footer;\n  const resolvedOverlay = resolvedView?.collection?.overlay ?? collection?.overlay ?? overlay;\n  const resolvedEmpty =\n    typeof resolvedView?.empty === 'function'\n      ? resolvedView.empty({\n          items: resolvedItems,\n          activeViewId: resolvedActiveViewId,\n          context,\n          capabilities,\n          className,\n          empty,\n          loading,\n          loadingNode,\n          footer,\n          overlay,\n          layout,\n          collection: resolvedCollection,\n          selectedIds,\n          getItemId,\n          itemDefinition,\n          renderItem,\n          onOpenItem,\n          onSelectionChange,\n        })\n      : resolvedView?.empty ?? empty;\n\n  const renderProps: DataExplorerViewRenderProps<TItem, TContext, TViewId> = {\n    items: resolvedItems,\n    activeViewId: resolvedActiveViewId,\n    context,\n    capabilities,\n    className,\n    empty: resolvedEmpty,\n    loading: resolvedLoading,\n    loadingNode: resolvedLoadingNode,\n    footer: resolvedFooter,\n    overlay: resolvedOverlay,\n    layout: resolvedLayout,\n    collection: resolvedCollection,\n    selectedIds,\n    getItemId,\n    itemDefinition: resolvedView?.itemDefinition ?? itemDefinition,\n    renderItem: resolvedView?.renderItem ?? renderItem,\n    onOpenItem,\n    onSelectionChange,\n  };\n\n  if (resolvedView?.render) {\n    return <>{resolvedView.render(renderProps)}</>;\n  }\n\n  return (\n    <DataExplorerViewCollection<TItem, TContext, TViewId>\n      items={resolvedItems}\n      activeViewId={resolvedActiveViewId}\n      context={context}\n      capabilities={capabilities}\n      className={resolvedCollection?.className ?? className}\n      classNames={{\n        ...classNames,\n        ...resolvedCollection?.classNames,\n      }}\n      empty={resolvedEmpty}\n      loading={renderProps.loading}\n      loadingNode={renderProps.loadingNode}\n      footer={renderProps.footer}\n      overlay={renderProps.overlay}\n      layout={renderProps.layout}\n      scrollable={resolvedCollection?.scrollable}\n      wrapItems={resolvedCollection?.wrapItems}\n      measuredGrid={resolvedCollection?.measuredGrid}\n      itemsStyle={resolvedCollection?.itemsStyle}\n      itemStyle={resolvedCollection?.itemStyle}\n      selectedIds={selectedIds}\n      getItemId={getItemId}\n      itemDefinition={renderProps.itemDefinition}\n      renderItem={renderProps.renderItem}\n      getItemClassName={resolvedView?.getItemClassName}\n      onOpenItem={onOpenItem}\n      onSelectionChange={onSelectionChange}\n    />\n  );\n}\n","import type { DataExplorerViewShellProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerViewShell({\n  header,\n  footer,\n  overlay,\n  empty,\n  isEmpty = false,\n  children,\n  className,\n  classNames,\n}: DataExplorerViewShellProps) {\n  return (\n    <section\n      className={cn(\n        'relative flex min-h-0 flex-1 flex-col overflow-hidden',\n        classNames?.root,\n        className,\n      )}\n    >\n      {header ? (\n        <div className={cn('shrink-0', classNames?.header)}>{header}</div>\n      ) : null}\n\n      <div\n        className={cn(\n          'flex min-h-0 flex-1 flex-col overflow-hidden',\n          classNames?.body,\n        )}\n      >\n        {isEmpty && empty ? (\n          <div\n            className={cn(\n              'flex h-full items-center justify-center p-6 text-sm text-muted-foreground',\n              classNames?.empty,\n            )}\n          >\n            {empty}\n          </div>\n        ) : (\n          children\n        )}\n      </div>\n\n      {footer ? (\n        <div className={cn('shrink-0', classNames?.footer)}>{footer}</div>\n      ) : null}\n\n      {overlay ? (\n        <div className={cn('absolute inset-0', classNames?.overlay)}>{overlay}</div>\n      ) : null}\n    </section>\n  );\n}\n"]}