@inf-monkeys-tech/monkeys-design 1.0.95 → 1.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-explorer/index.d.mts +2 -2
- package/dist/components/data-explorer/index.d.ts +2 -2
- package/dist/components/data-explorer/index.js +14 -1
- package/dist/components/data-explorer/index.js.map +1 -1
- package/dist/components/data-explorer/index.mjs +14 -1
- package/dist/components/data-explorer/index.mjs.map +1 -1
- package/dist/components/navigation-sidebar/index.d.mts +1 -1
- package/dist/components/navigation-sidebar/index.d.ts +1 -1
- package/dist/components/navigation-sidebar/index.js +12 -0
- package/dist/components/navigation-sidebar/index.js.map +1 -1
- package/dist/components/navigation-sidebar/index.mjs +12 -0
- package/dist/components/navigation-sidebar/index.mjs.map +1 -1
- package/dist/components/workbench/index.js +12 -0
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +12 -0
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -1
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +1 -1
- package/dist/provider/index.d.ts +1 -1
- package/dist/theme-21107546ded5.d.mts +1 -1
- package/dist/theme-cfefa48a0db1.d.ts +1 -1
- package/dist/{types-72b7966c2155.d.mts → types-72c1ec970e96.d.mts} +2 -0
- package/dist/{types-72b7966c2155.d.ts → types-72c1ec970e96.d.ts} +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../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/data-explorer/DataExplorerCollectionFooter.tsx","../../../src/components/data-explorer/DataExplorerFilterBar.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/data-explorer/DataExplorerPage.tsx","../../../src/components/data-explorer/DataExplorerRecordCard.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":["DataExplorerButton","jsx","jsxs","CheckIcon","DropdownMenu","ChevronDownIcon","DropdownMenu2","Fragment","cn","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","getPresetDefaults","slotKeys","mergeSlots","mergeStyles","forwardRef","BasePagination","LoadingIcon","useState","useMemo","activeEntry","useRef","useEffect","useCallback","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","DropdownMenu4"],"mappings":"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","file":"index.mjs","sourcesContent":["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 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 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 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 densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n compact: {\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 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 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 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 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 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 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 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 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 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 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 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 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 return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nexport function resolveDataExplorerAppearance(\n appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n const preset = appearance?.preset ?? 'default';\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 return {\n preset,\n density,\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 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 {\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(appearance);\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 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(appearance);\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 * 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(appearance);\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 * 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(appearance);\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 { 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(appearance);\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 },\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 { 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}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function 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","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',\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 …\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","import { BaseListFooter } from '../base/BaseListFooter';\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, className, classNames, onJump, 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 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 type { DataExplorerDetailFieldProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerDetailField<TContext = unknown>({\n field,\n label = field?.label,\n icon = field?.icon,\n value = field?.value,\n children,\n context,\n className,\n valueClassName = field?.valueClassName,\n classNames,\n}: DataExplorerDetailFieldProps<TContext>) {\n const resolvedClassNames = {\n ...field?.classNames,\n ...classNames,\n };\n const content =\n children ??\n (field?.render ? field.render(context as TContext) : value);\n\n return (\n <div\n title={field?.title}\n className={cn(\n 'space-y-1',\n resolvedClassNames.root,\n field?.className,\n className,\n )}\n >\n <div\n className={cn(\n 'flex 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>{label}</span>\n </div>\n <div\n className={cn(\n 'text-[15px] leading-6 text-foreground',\n resolvedClassNames.value,\n valueClassName,\n )}\n >\n {content}\n </div>\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) {\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 { 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 preview,\n previewStyle,\n previewPadded = false,\n previewCentered = true,\n sections = [],\n rightPanel,\n context,\n navigation,\n closeLabel = 'Close',\n closeIcon,\n onClose,\n appearance,\n className,\n classNames,\n}: DataExplorerDetailShellProps<TContext>) {\n const theme = resolveDataExplorerAppearance(appearance);\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 {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 <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 </div>\n </div>\n\n <div\n className={cn(\n 'grid min-h-0 flex-1 xl:grid-cols-[minmax(0,1fr)_380px] 2xl:grid-cols-[minmax(0,1fr)_400px]',\n classNames?.body,\n )}\n >\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\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 {\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(appearance);\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 { 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(appearance);\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 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(appearance);\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 text-sm text-muted-foreground',\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 shrink-0 items-center gap-2\">\n {meta ? (\n <div\n className={cn(\n '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 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","import type { DataExplorerPageProps } from './types';\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 theme = appearance ? resolveDataExplorerAppearance(appearance) : undefined;\n const sidebarNode = tree ?? sidebar;\n const toolbarNode = controls ?? toolbar;\n const contentNode = view ?? content;\n\n return (\n <div\n className={cn(\n 'flex h-full min-h-0 overflow-hidden',\n theme?.slots.cardRoot,\n classNames?.root,\n className,\n )}\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 );\n}\n","import { 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(appearance);\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 type { FormEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\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 context,\n leading,\n leadingActions,\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 theme = resolveDataExplorerAppearance(appearance);\n\n return (\n <div\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={appearance}\n classNames={{\n action: classNames?.action,\n menuContent: classNames?.menuContent,\n menuItem: classNames?.menuItem,\n }}\n />\n ) : null}\n </div>\n ) : null}\n\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\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 { cn } from './utils';\n\nexport function DataExplorerTreeShell({\n title,\n subtitle,\n toolbar,\n footer,\n children,\n className,\n classNames,\n}: DataExplorerTreeShellProps) {\n const hasHeader = !!title || !!subtitle || !!toolbar;\n\n return (\n <section\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden',\n classNames?.root,\n className,\n )}\n >\n {hasHeader ? (\n <div\n className={cn(\n 'flex shrink-0 items-start justify-between gap-3 px-4 py-3',\n classNames?.header,\n )}\n >\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <div className={cn('truncate text-sm font-semibold', classNames?.title)}>\n {title}\n </div>\n ) : null}\n {subtitle ? (\n <div\n className={cn(\n 'mt-1 text-sm text-muted-foreground',\n classNames?.subtitle,\n )}\n >\n {subtitle}\n </div>\n ) : null}\n </div>\n\n {toolbar ? (\n <div className={cn('flex shrink-0 items-center gap-2', classNames?.toolbar)}>\n {toolbar}\n </div>\n ) : null}\n </div>\n ) : null}\n\n <div className={cn('min-h-0 flex-1 overflow-hidden', classNames?.body)}>\n {children}\n </div>\n\n {footer ? (\n <div className={cn('shrink-0', classNames?.footer)}>{footer}</div>\n ) : null}\n </section>\n );\n}\n","import * 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 {\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 { cn, resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n TGroupSource,\n TNodeSource,\n TContext\n>;\n\ntype TreeNode<TNodeSource, TGroupSource = unknown, 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('h-3.5 w-3.5 transition-transform', expanded && 'rotate-90')}\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<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>();\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 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(appearance);\n const actionLabel = labels?.actions ?? internalLabels.actions;\n const expandLabel = labels?.expand ?? internalLabels.expand;\n const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n const loadingContent = loadingNode ?? labels?.loading ?? internalLabels.loading;\n const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n const hasExplicitGroups = Array.isArray(groups);\n const resolvedGroups = useMemo<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 },\n [groups, hasExplicitGroups, nodes],\n );\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 | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\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<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\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 <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 = 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 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 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}>{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 </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 || 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={{ paddingLeft: `${(node.indentLevel ?? depth) * indentSize + 8}px` }}\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 (!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(theme.slots.treeNodeDragHandle, classNames?.nodeDragHandle)}\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 className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)} />\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 className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {node.meta}\n </span>\n ) : null}\n {node.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\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(error ?? labels?.error, theme.slots.treeError, classNames?.error)}\n </div>\n );\n }\n\n const hasAnyNodes = resolvedGroups.some((group) => (group.nodes ?? []).length > 0);\n const hasAnyGroupState = resolvedGroups.some((group) => group.status === 'loading' || group.error);\n const shouldRenderGlobalEmpty =\n !hasAnyNodes && !hasAnyGroupState && (!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 ? '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(theme.slots.treeGroup, classNames?.group, group.className)}\n >\n {!group.hideHeader ? (\n <div\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={!group.selectable && groupCollapsible ? groupExpanded : undefined}\n onClick={() => {\n if (group.selectable) {\n onSelectGroup?.(group, context);\n return;\n }\n if (groupCollapsible) 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 className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {group.meta}\n </span>\n ) : null}\n {group.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {group.badge}\n </span>\n ) : null}\n </button>\n {groupCollapsible ? (\n <button\n type=\"button\"\n className={cn(theme.slots.treeNodeToggle, classNames?.expander)}\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={theme.slots.treeNodeToggle} />\n )}\n {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div\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"]}
|
|
1
|
+
{"version":3,"sources":["../../../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/data-explorer/DataExplorerCollectionFooter.tsx","../../../src/components/data-explorer/DataExplorerFilterBar.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/data-explorer/DataExplorerPage.tsx","../../../src/components/data-explorer/DataExplorerRecordCard.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":["DataExplorerButton","jsx","jsxs","CheckIcon","DropdownMenu","ChevronDownIcon","DropdownMenu2","Fragment","cn","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","getPresetDefaults","slotKeys","mergeSlots","mergeStyles","forwardRef","BasePagination","LoadingIcon","useState","useMemo","activeEntry","useRef","useEffect","useCallback","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","DropdownMenu4"],"mappings":"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","file":"index.mjs","sourcesContent":["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 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 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 densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n compact: {\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 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 return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nexport function resolveDataExplorerAppearance(\n appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n const preset = appearance?.preset ?? 'default';\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 return {\n preset,\n density,\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 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 {\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(appearance);\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 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(appearance);\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 * 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(appearance);\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 * 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(appearance);\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 { 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(appearance);\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 },\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 { 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}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function 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","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',\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 …\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","import { BaseListFooter } from '../base/BaseListFooter';\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, className, classNames, onJump, 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 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 type { DataExplorerDetailFieldProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerDetailField<TContext = unknown>({\n field,\n label = field?.label,\n icon = field?.icon,\n value = field?.value,\n children,\n context,\n className,\n valueClassName = field?.valueClassName,\n classNames,\n}: DataExplorerDetailFieldProps<TContext>) {\n const resolvedClassNames = {\n ...field?.classNames,\n ...classNames,\n };\n const content =\n children ??\n (field?.render ? field.render(context as TContext) : value);\n\n return (\n <div\n title={field?.title}\n className={cn(\n 'space-y-1',\n resolvedClassNames.root,\n field?.className,\n className,\n )}\n >\n <div\n className={cn(\n 'flex 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>{label}</span>\n </div>\n <div\n className={cn(\n 'text-[15px] leading-6 text-foreground',\n resolvedClassNames.value,\n valueClassName,\n )}\n >\n {content}\n </div>\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) {\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 { 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 preview,\n previewStyle,\n previewPadded = false,\n previewCentered = true,\n sections = [],\n rightPanel,\n context,\n navigation,\n closeLabel = 'Close',\n closeIcon,\n onClose,\n appearance,\n className,\n classNames,\n}: DataExplorerDetailShellProps<TContext>) {\n const theme = resolveDataExplorerAppearance(appearance);\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 {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 <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 </div>\n </div>\n\n <div\n className={cn(\n 'grid min-h-0 flex-1 xl:grid-cols-[minmax(0,1fr)_380px] 2xl:grid-cols-[minmax(0,1fr)_400px]',\n classNames?.body,\n )}\n >\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\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 {\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(appearance);\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 { 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(appearance);\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 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(appearance);\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 text-sm text-muted-foreground',\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 shrink-0 items-center gap-2\">\n {meta ? (\n <div\n className={cn(\n '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 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","import type { DataExplorerPageProps } from './types';\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 theme = appearance ? resolveDataExplorerAppearance(appearance) : undefined;\n const sidebarNode = tree ?? sidebar;\n const toolbarNode = controls ?? toolbar;\n const contentNode = view ?? content;\n\n return (\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 );\n}\n","import { 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(appearance);\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 type { FormEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\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 context,\n leading,\n leadingActions,\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 theme = resolveDataExplorerAppearance(appearance);\n\n return (\n <div\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={appearance}\n classNames={{\n action: classNames?.action,\n menuContent: classNames?.menuContent,\n menuItem: classNames?.menuItem,\n }}\n />\n ) : null}\n </div>\n ) : null}\n\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\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 { cn } from './utils';\n\nexport function DataExplorerTreeShell({\n title,\n subtitle,\n toolbar,\n footer,\n children,\n className,\n classNames,\n}: DataExplorerTreeShellProps) {\n const hasHeader = !!title || !!subtitle || !!toolbar;\n\n return (\n <section\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden',\n classNames?.root,\n className,\n )}\n >\n {hasHeader ? (\n <div\n className={cn(\n 'flex shrink-0 items-start justify-between gap-3 px-4 py-3',\n classNames?.header,\n )}\n >\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <div className={cn('truncate text-sm font-semibold', classNames?.title)}>\n {title}\n </div>\n ) : null}\n {subtitle ? (\n <div\n className={cn(\n 'mt-1 text-sm text-muted-foreground',\n classNames?.subtitle,\n )}\n >\n {subtitle}\n </div>\n ) : null}\n </div>\n\n {toolbar ? (\n <div className={cn('flex shrink-0 items-center gap-2', classNames?.toolbar)}>\n {toolbar}\n </div>\n ) : null}\n </div>\n ) : null}\n\n <div className={cn('min-h-0 flex-1 overflow-hidden', classNames?.body)}>\n {children}\n </div>\n\n {footer ? (\n <div className={cn('shrink-0', classNames?.footer)}>{footer}</div>\n ) : null}\n </section>\n );\n}\n","import * 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 {\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 { cn, resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n TGroupSource,\n TNodeSource,\n TContext\n>;\n\ntype TreeNode<TNodeSource, TGroupSource = unknown, 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('h-3.5 w-3.5 transition-transform', expanded && 'rotate-90')}\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<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>();\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 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(appearance);\n const actionLabel = labels?.actions ?? internalLabels.actions;\n const expandLabel = labels?.expand ?? internalLabels.expand;\n const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n const loadingContent = loadingNode ?? labels?.loading ?? internalLabels.loading;\n const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n const hasExplicitGroups = Array.isArray(groups);\n const resolvedGroups = useMemo<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 },\n [groups, hasExplicitGroups, nodes],\n );\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 | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\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<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\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 <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 = 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 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 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}>{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 </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 || 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={{ paddingLeft: `${(node.indentLevel ?? depth) * indentSize + 8}px` }}\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 (!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(theme.slots.treeNodeDragHandle, classNames?.nodeDragHandle)}\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 className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)} />\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 className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {node.meta}\n </span>\n ) : null}\n {node.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\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(error ?? labels?.error, theme.slots.treeError, classNames?.error)}\n </div>\n );\n }\n\n const hasAnyNodes = resolvedGroups.some((group) => (group.nodes ?? []).length > 0);\n const hasAnyGroupState = resolvedGroups.some((group) => group.status === 'loading' || group.error);\n const shouldRenderGlobalEmpty =\n !hasAnyNodes && !hasAnyGroupState && (!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 ? '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(theme.slots.treeGroup, classNames?.group, group.className)}\n >\n {!group.hideHeader ? (\n <div\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={!group.selectable && groupCollapsible ? groupExpanded : undefined}\n onClick={() => {\n if (group.selectable) {\n onSelectGroup?.(group, context);\n return;\n }\n if (groupCollapsible) 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 className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {group.meta}\n </span>\n ) : null}\n {group.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {group.badge}\n </span>\n ) : null}\n </button>\n {groupCollapsible ? (\n <button\n type=\"button\"\n className={cn(theme.slots.treeNodeToggle, classNames?.expander)}\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={theme.slots.treeNodeToggle} />\n )}\n {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div\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"]}
|