@inf-monkeys-tech/monkeys-design 1.0.38 → 1.0.39
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/agent-workbench/index.js +9 -0
- package/dist/components/agent-workbench/index.js.map +1 -1
- package/dist/components/agent-workbench/index.mjs +9 -0
- package/dist/components/agent-workbench/index.mjs.map +1 -1
- package/dist/components/base/index.js +9 -0
- package/dist/components/base/index.js.map +1 -1
- package/dist/components/base/index.mjs +9 -0
- package/dist/components/base/index.mjs.map +1 -1
- package/dist/components/data-explorer/index.js +9 -0
- package/dist/components/data-explorer/index.js.map +1 -1
- package/dist/components/data-explorer/index.mjs +9 -0
- package/dist/components/data-explorer/index.mjs.map +1 -1
- package/dist/components/layout/index.js +9 -0
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/layout/index.mjs +9 -0
- package/dist/components/layout/index.mjs.map +1 -1
- package/dist/components/runtime/index.js +9 -0
- package/dist/components/runtime/index.js.map +1 -1
- package/dist/components/runtime/index.mjs +9 -0
- package/dist/components/runtime/index.mjs.map +1 -1
- package/dist/components/toast/index.d.mts +1 -1
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/index.js +9 -0
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/index.mjs +9 -0
- package/dist/components/toast/index.mjs.map +1 -1
- package/dist/components/toolbar/index.js +9 -0
- package/dist/components/toolbar/index.js.map +1 -1
- package/dist/components/toolbar/index.mjs +9 -0
- package/dist/components/toolbar/index.mjs.map +1 -1
- package/dist/components/workbench/index.d.mts +218 -6
- package/dist/components/workbench/index.d.ts +218 -6
- package/dist/components/workbench/index.js +1088 -97
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +1089 -99
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +838 -100
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +838 -101
- package/dist/index.mjs.map +1 -1
- package/dist/locale/index.d.mts +20 -2
- package/dist/locale/index.d.ts +20 -2
- package/dist/locale/index.js +22 -0
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/index.mjs +22 -0
- package/dist/locale/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +2 -2
- package/dist/provider/index.d.ts +2 -2
- package/dist/provider/index.js +22 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +22 -0
- package/dist/provider/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/{types-b8d18b1454c2.d.mts → types-453d18eab188.d.mts} +10 -0
- package/dist/{types-b8d18b1454c2.d.ts → types-453d18eab188.d.ts} +10 -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/components/data-explorer/DataExplorerCollectionFooter.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/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../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","LoadingIcon","activeEntry","useState","useRef","useEffect","useCallback","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","useMemo","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 { DataExplorerCollectionFooterProps } from './types';\nimport { resolveDataExplorerAppearance } 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-3 w-3 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 function DataExplorerCollectionFooter({\n selectedCount,\n loadedStart,\n loadedEnd,\n total,\n currentPage = 1,\n pageSize = Math.max(1, loadedEnd || 1),\n pageSizeOptions = [],\n loading,\n selectedLabel,\n loadedLabel,\n pageSizeLabel = 'Page size',\n pageText,\n tone = 'default',\n appearance,\n className,\n classNames,\n onJump,\n onPageSizeChange,\n}: DataExplorerCollectionFooterProps) {\n const theme = resolveDataExplorerAppearance(\n appearance ?? (tone === 'default' ? undefined : { preset: tone }),\n );\n const maxPage = total > 0 ? Math.max(1, Math.ceil(total / pageSize)) : 1;\n const hasRange =\n typeof loadedStart === 'number' && loadedStart > 0 && loadedEnd >= loadedStart;\n const resolvedSelectedLabel =\n selectedLabel ??\n (typeof selectedCount === 'number' ? `已选择 ${selectedCount} 项` : undefined);\n const resolvedLoadedLabel =\n loadedLabel ??\n (hasRange\n ? `已加载 ${loadedStart} - ${loadedEnd} / ${total} 条数据`\n : `已加载 ${loadedEnd} / ${total} 条数据`);\n const resolvedPageText = pageText ?? `第 ${currentPage} / ${maxPage} 页`;\n const canAdjustPageSize =\n pageSizeOptions.length > 0 && typeof onPageSizeChange === 'function';\n\n return (\n <div\n className={cn(\n theme.slots.footerRoot,\n classNames?.root,\n className,\n )}\n style={theme.styles.footerRoot}\n >\n <div\n className={cn(\n theme.slots.footerSummary,\n classNames?.summary,\n )}\n >\n {resolvedSelectedLabel ? (\n <>\n <span>{resolvedSelectedLabel}</span>\n <span>·</span>\n </>\n ) : null}\n {onJump ? (\n <button\n type=\"button\"\n className={cn(\n theme.slots.footerJumpButton,\n classNames?.jumpButton,\n )}\n onClick={onJump}\n >\n <span>{resolvedLoadedLabel}</span>\n <span>({resolvedPageText})</span>\n {loading ? <LoadingIcon /> : null}\n </button>\n ) : (\n <span className=\"inline-flex items-center gap-1\">\n <span>{resolvedLoadedLabel}</span>\n <span>({resolvedPageText})</span>\n {loading ? <LoadingIcon /> : null}\n </span>\n )}\n </div>\n\n {canAdjustPageSize ? (\n <div className={cn('ml-auto', classNames?.pageSizeControl)}>\n <label className=\"sr-only\">{pageSizeLabel}</label>\n <select\n value={String(pageSize)}\n className={cn(\n theme.slots.footerPageSizeSelect,\n classNames?.pageSizeButton,\n )}\n onChange={(event) => {\n const next = Number(event.currentTarget.value);\n if (!Number.isFinite(next)) {\n return;\n }\n onPageSizeChange?.(next);\n }}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={String(size)}>\n {size}\n </option>\n ))}\n </select>\n </div>\n ) : null}\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 { cn } from './utils';\n\nexport function DataExplorerPage({\n sidebar,\n tree,\n toolbar,\n controls,\n notices,\n content,\n view,\n detail,\n className,\n classNames,\n}: DataExplorerPageProps) {\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 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 type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n agentWorkbench: {\n label: 'Session activity',\n reasoning: 'Reasoning',\n plan: 'Plan',\n taskNoDetail: 'No additional details',\n modes: { 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 noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n 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 processed: 'Processed',\n processedFor: ({ duration }) => `Worked for ${duration}`,\n completedCount: ({ completed, total }) => `${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 },\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: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n 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 interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import * 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 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 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 : classNames?.nodeActions,\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 className={cn(theme.slots.treeNode, classNames?.node, node.className)}\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?.nodeSelected,\n node.disabled && classNames?.nodeDisabled,\n isDragging && classNames?.nodeDragging,\n classNames?.nodeButton,\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(theme.slots.treeNodeToggle, classNames?.nodeToggle)}\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 className={cn(theme.slots.treeNodeIcon, classNames?.nodeIcon)}>\n {node.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className={cn(theme.slots.treeNodeLabel, classNames?.nodeLabel)}>\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 className={cn(theme.slots.treeNodeChildren, classNames?.nodeChildren)}>\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=\"tree\"\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 return (\n <section\n key={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 classNames?.groupHeader,\n classNames?.groupHeaderButton,\n )}\n >\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 text-left\"\n aria-expanded={group.collapsible === false ? undefined : groupExpanded}\n onClick={() => {\n if (group.collapsible === false) return;\n setGroupExpanded(group.id, !groupExpanded);\n }}\n >\n {group.collapsible === false ? (\n <span className={theme.slots.treeNodeToggle} />\n ) : (\n <span className={theme.slots.treeNodeToggle}>\n <ChevronIcon expanded={groupExpanded} />\n </span>\n )}\n {group.icon ? (\n <span className={cn(theme.slots.treeNodeIcon, classNames?.nodeIcon)}>\n {group.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n {group.label ? (\n <span className={cn(theme.slots.treeNodeLabel, classNames?.nodeLabel)}>\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 {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div className={cn(theme.slots.treeGroupContent, classNames?.groupContent)}>\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/components/data-explorer/DataExplorerCollectionFooter.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/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../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","LoadingIcon","activeEntry","useState","useRef","useEffect","useCallback","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","useMemo","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 { DataExplorerCollectionFooterProps } from './types';\nimport { resolveDataExplorerAppearance } 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-3 w-3 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 function DataExplorerCollectionFooter({\n selectedCount,\n loadedStart,\n loadedEnd,\n total,\n currentPage = 1,\n pageSize = Math.max(1, loadedEnd || 1),\n pageSizeOptions = [],\n loading,\n selectedLabel,\n loadedLabel,\n pageSizeLabel = 'Page size',\n pageText,\n tone = 'default',\n appearance,\n className,\n classNames,\n onJump,\n onPageSizeChange,\n}: DataExplorerCollectionFooterProps) {\n const theme = resolveDataExplorerAppearance(\n appearance ?? (tone === 'default' ? undefined : { preset: tone }),\n );\n const maxPage = total > 0 ? Math.max(1, Math.ceil(total / pageSize)) : 1;\n const hasRange =\n typeof loadedStart === 'number' && loadedStart > 0 && loadedEnd >= loadedStart;\n const resolvedSelectedLabel =\n selectedLabel ??\n (typeof selectedCount === 'number' ? `已选择 ${selectedCount} 项` : undefined);\n const resolvedLoadedLabel =\n loadedLabel ??\n (hasRange\n ? `已加载 ${loadedStart} - ${loadedEnd} / ${total} 条数据`\n : `已加载 ${loadedEnd} / ${total} 条数据`);\n const resolvedPageText = pageText ?? `第 ${currentPage} / ${maxPage} 页`;\n const canAdjustPageSize =\n pageSizeOptions.length > 0 && typeof onPageSizeChange === 'function';\n\n return (\n <div\n className={cn(\n theme.slots.footerRoot,\n classNames?.root,\n className,\n )}\n style={theme.styles.footerRoot}\n >\n <div\n className={cn(\n theme.slots.footerSummary,\n classNames?.summary,\n )}\n >\n {resolvedSelectedLabel ? (\n <>\n <span>{resolvedSelectedLabel}</span>\n <span>·</span>\n </>\n ) : null}\n {onJump ? (\n <button\n type=\"button\"\n className={cn(\n theme.slots.footerJumpButton,\n classNames?.jumpButton,\n )}\n onClick={onJump}\n >\n <span>{resolvedLoadedLabel}</span>\n <span>({resolvedPageText})</span>\n {loading ? <LoadingIcon /> : null}\n </button>\n ) : (\n <span className=\"inline-flex items-center gap-1\">\n <span>{resolvedLoadedLabel}</span>\n <span>({resolvedPageText})</span>\n {loading ? <LoadingIcon /> : null}\n </span>\n )}\n </div>\n\n {canAdjustPageSize ? (\n <div className={cn('ml-auto', classNames?.pageSizeControl)}>\n <label className=\"sr-only\">{pageSizeLabel}</label>\n <select\n value={String(pageSize)}\n className={cn(\n theme.slots.footerPageSizeSelect,\n classNames?.pageSizeButton,\n )}\n onChange={(event) => {\n const next = Number(event.currentTarget.value);\n if (!Number.isFinite(next)) {\n return;\n }\n onPageSizeChange?.(next);\n }}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={String(size)}>\n {size}\n </option>\n ))}\n </select>\n </div>\n ) : null}\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 { cn } from './utils';\n\nexport function DataExplorerPage({\n sidebar,\n tree,\n toolbar,\n controls,\n notices,\n content,\n view,\n detail,\n className,\n classNames,\n}: DataExplorerPageProps) {\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 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 type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n 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 },\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 noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n 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 processed: 'Processed',\n processedFor: ({ duration }) => `Worked for ${duration}`,\n completedCount: ({ completed, total }) => `${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 },\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: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n 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 interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import * 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 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 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 : classNames?.nodeActions,\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 className={cn(theme.slots.treeNode, classNames?.node, node.className)}\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?.nodeSelected,\n node.disabled && classNames?.nodeDisabled,\n isDragging && classNames?.nodeDragging,\n classNames?.nodeButton,\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(theme.slots.treeNodeToggle, classNames?.nodeToggle)}\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 className={cn(theme.slots.treeNodeIcon, classNames?.nodeIcon)}>\n {node.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className={cn(theme.slots.treeNodeLabel, classNames?.nodeLabel)}>\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 className={cn(theme.slots.treeNodeChildren, classNames?.nodeChildren)}>\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=\"tree\"\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 return (\n <section\n key={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 classNames?.groupHeader,\n classNames?.groupHeaderButton,\n )}\n >\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 text-left\"\n aria-expanded={group.collapsible === false ? undefined : groupExpanded}\n onClick={() => {\n if (group.collapsible === false) return;\n setGroupExpanded(group.id, !groupExpanded);\n }}\n >\n {group.collapsible === false ? (\n <span className={theme.slots.treeNodeToggle} />\n ) : (\n <span className={theme.slots.treeNodeToggle}>\n <ChevronIcon expanded={groupExpanded} />\n </span>\n )}\n {group.icon ? (\n <span className={cn(theme.slots.treeNodeIcon, classNames?.nodeIcon)}>\n {group.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n {group.label ? (\n <span className={cn(theme.slots.treeNodeLabel, classNames?.nodeLabel)}>\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 {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div className={cn(theme.slots.treeGroupContent, classNames?.groupContent)}>\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"]}
|