@inf-monkeys-tech/monkeys-design 1.0.95 → 1.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-explorer/index.d.mts +2 -2
- package/dist/components/data-explorer/index.d.ts +2 -2
- package/dist/components/data-explorer/index.js +14 -1
- package/dist/components/data-explorer/index.js.map +1 -1
- package/dist/components/data-explorer/index.mjs +14 -1
- package/dist/components/data-explorer/index.mjs.map +1 -1
- package/dist/components/navigation-sidebar/index.d.mts +1 -1
- package/dist/components/navigation-sidebar/index.d.ts +1 -1
- package/dist/components/navigation-sidebar/index.js +12 -0
- package/dist/components/navigation-sidebar/index.js.map +1 -1
- package/dist/components/navigation-sidebar/index.mjs +12 -0
- package/dist/components/navigation-sidebar/index.mjs.map +1 -1
- package/dist/components/workbench/index.js +12 -0
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +12 -0
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -1
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +1 -1
- package/dist/provider/index.d.ts +1 -1
- package/dist/theme-21107546ded5.d.mts +1 -1
- package/dist/theme-cfefa48a0db1.d.ts +1 -1
- package/dist/{types-72b7966c2155.d.mts → types-72c1ec970e96.d.mts} +2 -0
- package/dist/{types-72b7966c2155.d.ts → types-72c1ec970e96.d.ts} +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/data-explorer/utils.ts","../../../src/components/data-explorer/theme.ts","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/navigation-sidebar/NavigationSidebar.tsx"],"names":["cn","useMemo","jsx","jsxs","MoreIcon","DropdownMenu2","useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import 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 type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n locale: \"en-US\",\n messages: {\n pagination: {\n navigation: \"Pagination\",\n first: \"First\",\n previous: \"Previous\",\n next: \"Next\",\n last: \"Last\",\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: \"0 results\",\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n selected: ({ count }) => `${count} selected`,\n pageSize: \"Items per page\",\n },\n dialog: {\n close: \"Close dialog\",\n },\n dropdownMenu: {\n actions: \"Actions\",\n },\n loading: {\n spinner: \"Loading\",\n },\n layout: {\n resizePanels: \"Resize panels\",\n },\n steps: {\n label: \"Progress\",\n current: \"Current\",\n completed: \"Completed\",\n error: \"Error\",\n disabled: \"Disabled\",\n },\n numberInput: {\n increment: \"Increase value\",\n decrement: \"Decrease value\",\n },\n passwordInput: {\n showPassword: \"Show password\",\n hidePassword: \"Hide password\",\n },\n multiSelect: {\n placeholder: \"Select options\",\n empty: \"No options\",\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : \"Sort column\",\n loadingRow: \"Loading table row\",\n },\n toolbar: {\n theme: {\n label: \"Appearance\",\n toggle: \"Toggle theme\",\n auto: \"Auto\",\n light: \"Light\",\n dark: \"Dark\",\n },\n language: {\n label: \"Language\",\n switch: \"Switch language\",\n },\n },\n toast: {\n errorTitle: \"Error\",\n warningTitle: \"Warning\",\n defaultErrorDescription: \"Something went wrong.\",\n defaultWarningDescription: \"Please check and try again.\",\n },\n dataExplorer: {\n viewTree: {\n actions: \"More actions\",\n expand: \"Expand\",\n collapse: \"Collapse\",\n loading: \"Loading...\",\n empty: \"No views\",\n error: \"Unable to load views\",\n },\n },\n workbench: {\n collection: {\n label: \"Collection\",\n loading: \"Loading items\",\n empty: \"No items\",\n loadError: \"Unable to load items\",\n refreshError: \"Unable to refresh items\",\n retry: \"Retry\",\n loadingMore: \"Loading more items\",\n permission: \"You do not have permission to view this content\",\n offline: \"You appear to be offline\",\n requestAccess: \"Request access\",\n },\n interactiveTable: {\n columnActions: \"Column actions\",\n freezeColumn: \"Freeze to left\",\n freezeEndColumn: \"Freeze to right\",\n unfreezeColumn: \"Unfreeze from left\",\n unfreezeEndColumn: \"Unfreeze from right\",\n unfreezeAllColumns: \"Unfreeze all columns\",\n resetColumnWidth: \"Reset column width\",\n frozenColumnTitle: \"Frozen column\",\n },\n },\n agentWorkbench: {\n label: \"Session activity\",\n reasoning: \"Reasoning\",\n plan: \"Plan\",\n taskNoDetail: \"No additional details\",\n modes: { chat: \"Chat\", work: \"Work\" },\n composer: {\n send: \"Send message\",\n stop: \"Stop generating\",\n queue: \"Queue message\",\n attach: \"Add photos or files\",\n voice: \"Start voice input\",\n webSearch: \"Web search\",\n chatMode: \"Chat mode\",\n model: \"Model\",\n reasoning: \"Reasoning effort\",\n permissions: \"Permissions\",\n removeAttachment: \"Remove attachment\",\n editQueued: \"Edit queued message\",\n deleteQueued: \"Delete queued message\",\n moveUp: \"Move message up\",\n moveDown: \"Move message down\",\n queued: \"Queued messages\",\n uploading: \"Uploading\",\n uploadFailed: \"Upload failed\",\n retryAttachment: \"Retry attachment upload\",\n noModels: \"No models available\",\n message: \"Message\",\n attachmentOnly: \"Attachment\",\n reasoningOptions: {\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n xhigh: \"Extra high\",\n },\n permissionOptions: {\n \"approval-required\": \"Approval required\",\n \"auto-approve\": \"Auto approve\",\n \"full-access\": \"Full access\",\n },\n },\n quickStart: {\n label: \"Quick start\",\n back: \"Back\",\n addFile: \"Add file\",\n },\n tool: {\n input: \"Input\",\n output: \"Output\",\n status: {\n pending: \"Pending\",\n running: \"Running\",\n completed: \"Completed\",\n failed: \"Error\",\n denied: \"Denied\",\n },\n },\n approval: {\n approve: \"Approve\",\n reject: \"Reject\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n },\n artifact: {\n pending: \"Preparing\",\n ready: \"Ready\",\n failed: \"Failed\",\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: \"Stopping...\",\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n process: {\n running: \"Working\",\n queued: \"Queued\",\n waitingApproval: \"Waiting for approval\",\n failed: \"Failed\",\n stopped: \"Stopped\",\n processed: \"Processed\",\n processedFor: ({ duration }) => `Worked for ${duration}`,\n completedCount: ({ completed, total }) =>\n `${completed}/${total} completed`,\n },\n artifactWorkspace: {\n outputs: \"Outputs\",\n sources: \"Sources\",\n viewAll: \"View all\",\n toggleSummary: \"Toggle files\",\n tabs: \"Open files\",\n closeTab: ({ name }) => `Close ${name}`,\n closeWorkspace: \"Close workspace\",\n download: ({ name }) => `Download ${name}`,\n openExternal: ({ name }) => `Open ${name} in a new window`,\n loading: \"Loading preview...\",\n failed: \"Preview unavailable\",\n retry: \"Try again\",\n },\n usage: {\n label: \"Context usage\",\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: \"Search agents and sessions\",\n searchSessions: \"Search sessions\",\n searchShortcut: \"Focus search\",\n clearSearch: \"Clear search\",\n tabsLabel: \"Agent workbench navigation\",\n agents: \"Agents\",\n sessions: \"Sessions\",\n newAgent: \"New Agent\",\n newSession: \"New Session\",\n capabilities: \"Capabilities & Extensions\",\n settings: \"Agent Settings\",\n allAgents: \"All Agents\",\n recentSessions: \"Recent Sessions\",\n chat: \"Chat\",\n work: \"Work\",\n chats: \"Chats\",\n builtIn: \"Built-in\",\n noDescription: \"No description\",\n loading: \"Loading...\",\n emptyAgents: \"No agents yet\",\n emptySessions: \"No sessions yet\",\n noResults: \"No matching results\",\n retry: \"Retry\",\n pin: \"Pin\",\n unpin: \"Unpin\",\n rename: \"Rename\",\n delete: \"Delete\",\n actions: \"Actions\",\n save: \"Save\",\n cancel: \"Cancel\",\n running: \"Running\",\n completed: \"Completed\",\n failed: \"Failed\",\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: \"Task details\",\n description: \"Summary and workspace activity\",\n duration: \"Duration\",\n updated: \"Updated\",\n model: \"Model\",\n mode: \"Mode\",\n permissions: \"Permissions\",\n tokenUsage: \"Token usage\",\n summary: \"Summary\",\n summaryEmpty: \"No summary is available yet.\",\n summaryFailed: \"The summary could not be generated.\",\n highlights: \"Highlights\",\n pendingItems: \"Pending items\",\n tabs: {\n label: \"Task detail views\",\n summary: \"Summary\",\n workspace: \"Workspace\",\n },\n status: {\n queued: \"Queued\",\n running: \"Running\",\n waiting_approval: \"Waiting for approval\",\n stopping: \"Stopping\",\n stopped: \"Stopped\",\n completed: \"Completed\",\n failed: \"Failed\",\n },\n state: {\n loading: {\n title: \"Loading task details\",\n description: \"Restoring the latest session activity.\",\n },\n empty: {\n title: \"No task selected\",\n description: \"Select a task to inspect its details.\",\n },\n error: {\n title: \"Unable to load task details\",\n description: \"Try again after the session is available.\",\n },\n },\n actions: {\n close: \"Close task details\",\n copySummary: \"Copy summary\",\n retry: \"Retry\",\n retrySummary: \"Retry summary\",\n resume: \"Resume\",\n continueInNewTask: \"Continue in new task\",\n editAndRerun: \"Edit and rerun\",\n export: \"Export\",\n },\n workspace: {\n diffs: \"Code changes\",\n files: \"Files\",\n terminals: \"Terminals\",\n tests: \"Tests\",\n artifacts: \"Artifacts\",\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: {\n added: \"Added\",\n modified: \"Modified\",\n deleted: \"Deleted\",\n renamed: \"Renamed\",\n },\n fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n collection: {\n ...base.workbench.collection,\n ...override.workbench?.collection,\n },\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n quickStart: {\n ...base.agentWorkbench.quickStart,\n ...override.agentWorkbench?.quickStart,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n process: {\n ...base.agentWorkbench.process,\n ...override.agentWorkbench?.process,\n },\n artifactWorkspace: {\n ...base.agentWorkbench.artifactWorkspace,\n ...override.agentWorkbench?.artifactWorkspace,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n showTotal?: boolean;\n showPageSize?: boolean;\n pageSizeOptions?: number[];\n paginationMode?: MonkeysListFooterPaginationMode;\n alignment?: MonkeysListFooterAlignment;\n density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n loading?: { variant?: MonkeysLoadingStateVariant };\n empty?: { variant?: MonkeysEmptyStateVariant };\n error?: { showRetry?: boolean };\n permission?: { showRequestAccess?: boolean };\n density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n statusStates?: MonkeysStatusStatesConfig;\n listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { DragEvent, ReactNode } from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport {\n getDataExplorerMenuItemToneClassName,\n resolveDataExplorerAppearance,\n} from './theme';\nimport type {\n DataExplorerViewTreeAction,\n DataExplorerViewTreeActionContext,\n DataExplorerViewTreeGroup,\n DataExplorerViewTreeNode,\n DataExplorerViewTreeProps,\n DataExplorerViewTreeReorderPayload,\n} from './types';\nimport { cn, resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n TGroupSource,\n TNodeSource,\n TContext\n>;\n\ntype TreeNode<TNodeSource, TGroupSource = unknown, TContext = unknown> =\n DataExplorerViewTreeNode<TNodeSource, TGroupSource, TContext>;\n\ntype FlattenedNode<TNodeSource, TGroupSource, TContext> = {\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n parentId?: string;\n index: number;\n};\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className={cn('h-3.5 w-3.5 transition-transform', expanded && 'rotate-90')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n );\n}\n\nfunction GripIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"1\" />\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"18\" r=\"1\" />\n <circle cx=\"15\" cy=\"6\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"18\" r=\"1\" />\n </svg>\n );\n}\n\nfunction collectDefaultExpandedNodeIds<TNodeSource, TGroupSource, TContext>(\n nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n defaults: Set<string>,\n) {\n for (const node of nodes ?? []) {\n if (node.defaultExpanded) {\n defaults.add(node.id);\n }\n collectDefaultExpandedNodeIds(node.children, defaults);\n }\n}\n\nfunction buildDefaultNodeExpandedSet<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n defaultExpandedNodeIds: string[] | undefined,\n) {\n const defaults = new Set(defaultExpandedNodeIds ?? []);\n for (const group of groups) {\n collectDefaultExpandedNodeIds(group.nodes, defaults);\n }\n return defaults;\n}\n\nfunction buildDefaultGroupExpandedSet<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n defaultExpandedGroupIds: string[] | undefined,\n) {\n const defaults = new Set(defaultExpandedGroupIds ?? []);\n for (const group of groups) {\n if (group.hideHeader || group.defaultExpanded !== false) {\n defaults.add(group.id);\n }\n }\n return defaults;\n}\n\nfunction flattenNodes<TNodeSource, TGroupSource, TContext>(\n nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n parentId: string | undefined,\n entries: Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>,\n) {\n for (const [index, node] of (nodes ?? []).entries()) {\n entries.set(node.id, { node, group, parentId, index });\n flattenNodes(node.children, group, node.id, entries);\n }\n}\n\nfunction buildFlattenedNodeMap<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n) {\n const entries = new Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>();\n for (const group of groups) {\n flattenNodes(group.nodes, group, undefined, entries);\n }\n return entries;\n}\n\nfunction getNodeActions<TNodeSource, TGroupSource, TContext>(\n node: TreeNode<TNodeSource, TGroupSource, TContext>,\n globalActions:\n | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n | undefined,\n) {\n return [\n ...(globalActions ?? []),\n ...((node.actions ?? []) as Array<\n DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n >),\n ];\n}\n\nfunction getGroupActions<TNodeSource, TGroupSource, TContext>(\n group: TreeGroup<TGroupSource, TNodeSource, TContext>,\n globalActions:\n | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n | undefined,\n) {\n return [\n ...(globalActions ?? []),\n ...((group.actions ?? []) as Array<\n DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n >),\n ];\n}\n\nexport function DataExplorerViewTree<\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>({\n groups,\n nodes,\n context,\n selectedNodeId,\n selectedGroupId,\n expandedNodeIds,\n defaultExpandedNodeIds,\n expandedGroupIds,\n defaultExpandedGroupIds,\n resetExpansionKey,\n nodeActions,\n groupActions,\n indentSize = 16,\n empty,\n loading = false,\n loadingNode,\n error,\n labels,\n reorderMode = 'none',\n appearance,\n className,\n classNames,\n onSelectNode,\n onSelectGroup,\n onExpandedNodeIdsChange,\n onExpandedGroupIdsChange,\n onAction,\n onReorderNodes,\n}: DataExplorerViewTreeProps<TNodeSource, TGroupSource, TContext>) {\n const internalLabels = useMonkeysLocaleMessages().dataExplorer.viewTree;\n const theme = resolveDataExplorerAppearance(appearance);\n const actionLabel = labels?.actions ?? internalLabels.actions;\n const expandLabel = labels?.expand ?? internalLabels.expand;\n const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n const loadingContent = loadingNode ?? labels?.loading ?? internalLabels.loading;\n const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n const hasExplicitGroups = Array.isArray(groups);\n const resolvedGroups = useMemo<Array<TreeGroup<TGroupSource, TNodeSource, TContext>>>(\n () => {\n if (hasExplicitGroups) {\n return groups;\n }\n return [\n {\n id: '__root__',\n hideHeader: true,\n defaultExpanded: true,\n nodes: Array.isArray(nodes) ? nodes : [],\n },\n ];\n },\n [groups, hasExplicitGroups, nodes],\n );\n const flattenedNodeMap = useMemo(\n () => buildFlattenedNodeMap(resolvedGroups),\n [resolvedGroups],\n );\n const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(\n () => buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n );\n const [internalExpandedGroupIds, setInternalExpandedGroupIds] = useState(\n () => buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n );\n const [draggingNodeId, setDraggingNodeId] = useState<string | undefined>();\n const [dragOverNodeId, setDragOverNodeId] = useState<string | undefined>();\n\n useEffect(() => {\n setInternalExpandedNodeIds(\n buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n );\n setInternalExpandedGroupIds(\n buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n );\n }, [defaultExpandedGroupIds, defaultExpandedNodeIds, resetExpansionKey]);\n\n const resolvedExpandedNodeIds =\n expandedNodeIds !== undefined\n ? new Set(expandedNodeIds)\n : internalExpandedNodeIds;\n const resolvedExpandedGroupIds =\n expandedGroupIds !== undefined\n ? new Set(expandedGroupIds)\n : internalExpandedGroupIds;\n\n const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n const next = new Set(resolvedExpandedNodeIds);\n if (expanded) {\n next.add(nodeId);\n } else {\n next.delete(nodeId);\n }\n if (expandedNodeIds === undefined) {\n setInternalExpandedNodeIds(next);\n }\n onExpandedNodeIdsChange?.([...next]);\n };\n\n const setGroupExpanded = (groupId: string, expanded: boolean) => {\n const next = new Set(resolvedExpandedGroupIds);\n if (expanded) {\n next.add(groupId);\n } else {\n next.delete(groupId);\n }\n if (expandedGroupIds === undefined) {\n setInternalExpandedGroupIds(next);\n }\n onExpandedGroupIdsChange?.([...next]);\n };\n\n const createActionContext = (\n action: DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\n ): DataExplorerViewTreeActionContext<TNodeSource, TGroupSource, TContext> =>\n target.type === 'node'\n ? {\n type: 'node',\n action,\n node: target.node,\n group: target.group,\n context,\n }\n : {\n type: 'group',\n action,\n group: target.group,\n context,\n };\n\n const renderActions = (\n actions: Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\n ) => {\n const visibleActions = actions.filter((action) => {\n const payload = createActionContext(action, target);\n return resolveDataExplorerValue(action.visible, payload) ?? true;\n });\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n title={actionLabel}\n aria-label={actionLabel}\n className={cn(\n theme.slots.menuTrigger,\n target.type === 'group'\n ? theme.slots.treeGroupActions\n : theme.slots.treeNodeActions,\n target.type === 'group'\n ? classNames?.groupActions\n : cn(classNames?.nodeActions, classNames?.itemActions),\n )}\n onClick={(event) => event.stopPropagation()}\n >\n <MoreIcon />\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align=\"end\"\n sideOffset={6}\n className={cn(theme.slots.menuContent, classNames?.menuContent)}\n style={theme.styles.menuContent}\n onClick={(event) => event.stopPropagation()}\n >\n {visibleActions.map((action) => {\n const payload = createActionContext(action, target);\n const disabled =\n (resolveDataExplorerValue(action.disabled, payload) ?? false) ||\n (resolveDataExplorerValue(action.loading, payload) ?? false);\n const active = resolveDataExplorerValue(action.active, payload) ?? false;\n\n if (action.render) {\n return <div key={action.id}>{action.render(payload)}</div>;\n }\n\n return (\n <div key={action.id}>\n {action.separatorBefore ? (\n <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n ) : null}\n <DropdownMenu.Item\n title={action.title}\n disabled={disabled}\n className={cn(\n theme.slots.menuItem,\n getDataExplorerMenuItemToneClassName(theme, action.tone),\n active && 'bg-accent text-accent-foreground',\n classNames?.menuItem,\n )}\n style={theme.styles.menuItem}\n onSelect={() => {\n if (disabled) return;\n void action.onAction?.(payload);\n void onAction?.(payload);\n }}\n >\n {action.icon ? (\n <span className={theme.slots.menuItemIcon}>{action.icon}</span>\n ) : null}\n <span className={theme.slots.menuItemLabel}>{action.label}</span>\n </DropdownMenu.Item>\n {action.separatorAfter ? (\n <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n ) : null}\n </div>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n };\n\n const handleDrop = (\n event: DragEvent<HTMLElement>,\n overNode: TreeNode<TNodeSource, TGroupSource, TContext>,\n ) => {\n event.preventDefault();\n const activeNodeId =\n draggingNodeId || event.dataTransfer.getData('application/x-data-explorer-node');\n if (!activeNodeId || activeNodeId === overNode.id || !onReorderNodes) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const activeEntry = flattenedNodeMap.get(activeNodeId);\n const overEntry = flattenedNodeMap.get(overNode.id);\n if (!activeEntry || !overEntry) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const sameParent =\n activeEntry.parentId === overEntry.parentId &&\n activeEntry.group?.id === overEntry.group?.id;\n if (reorderMode === 'same-parent' && !sameParent) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const payload: DataExplorerViewTreeReorderPayload<\n TNodeSource,\n TGroupSource,\n TContext\n > = {\n activeNode: activeEntry.node,\n overNode: overEntry.node,\n activeGroup: activeEntry.group,\n overGroup: overEntry.group,\n activeParentId: activeEntry.parentId,\n overParentId: overEntry.parentId,\n oldIndex: activeEntry.index,\n newIndex: overEntry.index,\n sameParent,\n context,\n };\n void onReorderNodes(payload);\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n };\n\n const renderNode = (\n node: TreeNode<TNodeSource, TGroupSource, TContext>,\n group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n depth: number,\n ): ReactNode => {\n const childNodes = Array.isArray(node.children) ? node.children : [];\n const hasChildren = childNodes.length > 0;\n const isExpanded =\n node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n const isSelected = selectedNodeId === node.id;\n const isSelectable = node.selectable !== false && !node.disabled;\n const isReorderable =\n reorderMode !== 'none' && !!onReorderNodes && node.reorderable !== false;\n const isDragging = draggingNodeId === node.id;\n const isDragOver = dragOverNodeId === node.id && draggingNodeId !== node.id;\n const actions = getNodeActions(node, nodeActions);\n\n return (\n <div\n key={node.id}\n data-data-explorer-entry=\"node\"\n data-data-explorer-node-id={node.id}\n data-data-explorer-group-id={group?.id}\n className={cn(\n theme.slots.treeNode,\n classNames?.node,\n classNames?.item,\n node.className,\n )}\n onDragOver={(event) => {\n if (!draggingNodeId || !isReorderable) return;\n event.preventDefault();\n setDragOverNodeId(node.id);\n }}\n onDragLeave={() => {\n if (dragOverNodeId === node.id) {\n setDragOverNodeId(undefined);\n }\n }}\n onDrop={(event) => handleDrop(event, node)}\n >\n <div\n className={cn(\n theme.slots.treeNodeButton,\n isSelected && theme.slots.treeNodeSelected,\n node.disabled && theme.slots.treeNodeDisabled,\n isDragging && theme.slots.treeNodeDragging,\n isDragOver && 'ring-1 ring-primary/30',\n isSelected && classNames?.itemSelected,\n isSelected && classNames?.nodeSelected,\n node.disabled && classNames?.nodeDisabled,\n isDragging && classNames?.nodeDragging,\n classNames?.nodeButton,\n classNames?.itemButton,\n )}\n style={{ paddingLeft: `${(node.indentLevel ?? depth) * indentSize + 8}px` }}\n role=\"treeitem\"\n aria-selected={isSelected || undefined}\n aria-disabled={node.disabled || undefined}\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-label={node.ariaLabel}\n tabIndex={isSelectable ? 0 : -1}\n onClick={() => {\n if (!isSelectable) return;\n onSelectNode?.(node, context);\n }}\n onKeyDown={(event) => {\n if (!isSelectable) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelectNode?.(node, context);\n }}\n >\n {isReorderable ? (\n <span\n draggable\n className={cn(theme.slots.treeNodeDragHandle, classNames?.nodeDragHandle)}\n onClick={(event) => event.stopPropagation()}\n onDragStart={(event) => {\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData(\n 'application/x-data-explorer-node',\n node.id,\n );\n setDraggingNodeId(node.id);\n }}\n onDragEnd={() => {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n }}\n >\n <GripIcon />\n </span>\n ) : null}\n {hasChildren ? (\n <button\n type=\"button\"\n className={cn(\n theme.slots.treeNodeToggle,\n classNames?.nodeToggle,\n classNames?.expander,\n )}\n aria-label={isExpanded ? collapseLabel : expandLabel}\n onClick={(event) => {\n event.stopPropagation();\n setNodeExpanded(node.id, !isExpanded);\n }}\n >\n <ChevronIcon expanded={isExpanded} />\n </button>\n ) : (\n <span className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)} />\n )}\n {node.icon ? (\n <span\n className={cn(\n theme.slots.treeNodeIcon,\n classNames?.nodeIcon,\n classNames?.itemIcon,\n )}\n >\n {node.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span\n className={cn(\n theme.slots.treeNodeLabel,\n classNames?.nodeLabel,\n classNames?.itemLabel,\n )}\n >\n {node.label}\n </span>\n {node.description ? (\n <span\n className={cn(\n theme.slots.treeNodeDescription,\n classNames?.nodeDescription,\n )}\n >\n {node.description}\n </span>\n ) : null}\n </span>\n {node.meta ? (\n <span className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {node.meta}\n </span>\n ) : null}\n {node.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {node.badge}\n </span>\n ) : null}\n {renderActions(actions, { type: 'node', node, group })}\n </div>\n {hasChildren && isExpanded ? (\n <div\n className={cn(\n theme.slots.treeNodeChildren,\n classNames?.nodeChildren,\n classNames?.list,\n )}\n >\n {childNodes.map((child) => renderNode(child, group, depth + 1))}\n </div>\n ) : null}\n </div>\n );\n };\n\n const renderPlaceholder = (\n content: ReactNode,\n slotClassName: string,\n classNameOverride: string | undefined,\n ) => <div className={cn(slotClassName, classNameOverride)}>{content}</div>;\n\n if (loading) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(\n loadingContent,\n theme.slots.treeLoading,\n classNames?.loading,\n )}\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(error ?? labels?.error, theme.slots.treeError, classNames?.error)}\n </div>\n );\n }\n\n const hasAnyNodes = resolvedGroups.some((group) => (group.nodes ?? []).length > 0);\n const hasAnyGroupState = resolvedGroups.some((group) => group.status === 'loading' || group.error);\n const shouldRenderGlobalEmpty =\n !hasAnyNodes && !hasAnyGroupState && (!hasExplicitGroups || resolvedGroups.length === 0);\n if (shouldRenderGlobalEmpty) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(\n emptyContent,\n theme.slots.treeEmpty,\n classNames?.empty,\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn(theme.slots.treeRoot, classNames?.root, className)}\n role={hasAnyNodes ? 'tree' : undefined}\n >\n {resolvedGroups.map((group) => {\n const groupExpanded =\n group.hideHeader ||\n group.collapsible === false ||\n resolvedExpandedGroupIds.has(group.id);\n const groupNodeCount = group.nodes?.length ?? 0;\n const actions = getGroupActions(group, groupActions);\n const groupSelected = selectedGroupId === group.id;\n const groupCollapsible = group.collapsible !== false;\n return (\n <section\n key={group.id}\n data-data-explorer-entry=\"group\"\n data-data-explorer-group-id={group.id}\n className={cn(theme.slots.treeGroup, classNames?.group, group.className)}\n >\n {!group.hideHeader ? (\n <div\n className={cn(\n theme.slots.treeGroupHeader,\n theme.slots.treeGroupHeaderButton,\n groupSelected && theme.slots.treeNodeSelected,\n classNames?.groupHeader,\n classNames?.groupHeaderButton,\n groupSelected && classNames?.itemSelected,\n )}\n >\n <button\n type=\"button\"\n className={cn(\n 'flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring',\n classNames?.groupLabel,\n )}\n aria-pressed={group.selectable ? groupSelected : undefined}\n aria-expanded={!group.selectable && groupCollapsible ? groupExpanded : undefined}\n onClick={() => {\n if (group.selectable) {\n onSelectGroup?.(group, context);\n return;\n }\n if (groupCollapsible) setGroupExpanded(group.id, !groupExpanded);\n }}\n >\n {group.icon ? (\n <span\n className={cn(\n theme.slots.treeNodeIcon,\n classNames?.nodeIcon,\n classNames?.itemIcon,\n )}\n >\n {group.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n {group.label ? (\n <span\n className={cn(\n theme.slots.treeNodeLabel,\n classNames?.nodeLabel,\n classNames?.itemLabel,\n )}\n >\n {group.label}\n </span>\n ) : null}\n {group.description ? (\n <span\n className={cn(\n theme.slots.treeNodeDescription,\n classNames?.nodeDescription,\n )}\n >\n {group.description}\n </span>\n ) : null}\n </span>\n {group.meta ? (\n <span className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {group.meta}\n </span>\n ) : null}\n {group.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {group.badge}\n </span>\n ) : null}\n </button>\n {groupCollapsible ? (\n <button\n type=\"button\"\n className={cn(theme.slots.treeNodeToggle, classNames?.expander)}\n aria-label={groupExpanded ? collapseLabel : expandLabel}\n aria-expanded={groupExpanded}\n onClick={() => setGroupExpanded(group.id, !groupExpanded)}\n >\n <ChevronIcon expanded={groupExpanded} />\n </button>\n ) : (\n <span className={theme.slots.treeNodeToggle} />\n )}\n {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div\n className={cn(\n theme.slots.treeGroupContent,\n classNames?.groupContent,\n classNames?.list,\n )}\n >\n {group.loading || group.status === 'loading'\n ? renderPlaceholder(\n loadingContent,\n theme.slots.treeLoading,\n classNames?.loading,\n )\n : group.error || group.status === 'error'\n ? renderPlaceholder(\n group.error ?? labels?.error ?? internalLabels.error,\n theme.slots.treeError,\n classNames?.error,\n )\n : groupNodeCount > 0\n ? group.nodes?.map((node) => renderNode(node, group, 0))\n : renderPlaceholder(\n group.empty ?? emptyContent,\n theme.slots.treeEmpty,\n classNames?.empty,\n )}\n </div>\n ) : null}\n </section>\n );\n })}\n </div>\n );\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ElementType,\n type ForwardedRef,\n type KeyboardEvent,\n type MouseEvent,\n type MutableRefObject,\n type PointerEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n} from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { DataExplorerViewTree } from \"../data-explorer\";\nimport type {\n NavigationSidebarActiveVariant,\n NavigationSidebarAppearance,\n NavigationSidebarCatalogItem,\n NavigationSidebarCatalogProps,\n NavigationSidebarCatalogSection,\n NavigationSidebarClassNames,\n NavigationSidebarCommonProps,\n NavigationSidebarProps,\n NavigationSidebarRouteChild,\n NavigationSidebarRouteItem,\n NavigationSidebarRouteProps,\n NavigationSidebarStorage,\n NavigationSidebarTreeProps,\n} from \"./types\";\n\ninterface LayoutBounds {\n defaultWidth: number;\n minWidth: number;\n maxWidth: number;\n collapsedWidth: number;\n collapseThreshold: number;\n}\n\ninterface StoredLayout {\n collapsed: boolean;\n width: number;\n}\n\nfunction CollapseIcon({ collapsed }: { collapsed: boolean }) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <path\n d={\n collapsed\n ? \"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n : \"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n }\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction SearchIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n <path\n d=\"m12.2 12.2 3.3 3.3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n >\n <path\n d=\"m6 6 8 8m0-8-8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n className=\"h-4 w-4\"\n fill=\"currentColor\"\n >\n <circle cx=\"5\" cy=\"10\" r=\"1.2\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.2\" />\n <circle cx=\"15\" cy=\"10\" r=\"1.2\" />\n </svg>\n );\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<T | null>).current = node;\n }\n}\n\nfunction requireFiniteNumber(name: string, value: number) {\n if (!Number.isFinite(value)) {\n throw new RangeError(`NavigationSidebar ${name} must be a finite number.`);\n }\n}\n\nfunction resolveLayoutBounds(\n props: NavigationSidebarCommonProps,\n): LayoutBounds {\n const minWidth = props.minWidth ?? 180;\n const maxWidth = props.maxWidth ?? 420;\n const defaultWidth = props.defaultWidth ?? 256;\n const collapsedWidth = props.collapsedWidth ?? 60;\n const collapseThreshold = props.collapseThreshold ?? 140;\n\n requireFiniteNumber(\"minWidth\", minWidth);\n requireFiniteNumber(\"maxWidth\", maxWidth);\n requireFiniteNumber(\"defaultWidth\", defaultWidth);\n requireFiniteNumber(\"collapsedWidth\", collapsedWidth);\n requireFiniteNumber(\"collapseThreshold\", collapseThreshold);\n\n if (minWidth <= 0)\n throw new RangeError(\n \"NavigationSidebar minWidth must be greater than zero.\",\n );\n if (maxWidth < minWidth)\n throw new RangeError(\n \"NavigationSidebar maxWidth must be greater than or equal to minWidth.\",\n );\n if (collapsedWidth < 0)\n throw new RangeError(\n \"NavigationSidebar collapsedWidth cannot be negative.\",\n );\n if (collapseThreshold < 0)\n throw new RangeError(\n \"NavigationSidebar collapseThreshold cannot be negative.\",\n );\n\n return {\n defaultWidth,\n minWidth,\n maxWidth,\n collapsedWidth,\n collapseThreshold,\n };\n}\n\nfunction clampWidth(\n width: number,\n bounds: Pick<LayoutBounds, \"minWidth\" | \"maxWidth\">,\n) {\n return Math.min(Math.max(width, bounds.minWidth), bounds.maxWidth);\n}\n\nfunction reportStorageError(\n error: unknown,\n onStorageError: ((error: unknown) => void) | undefined,\n) {\n if (onStorageError) {\n onStorageError(error);\n return;\n }\n if (typeof console !== \"undefined\") {\n console.warn(\"NavigationSidebar could not persist layout state.\", error);\n }\n}\n\nfunction resolveStorage(storage: NavigationSidebarStorage | undefined) {\n if (storage) return storage;\n if (typeof window === \"undefined\") return undefined;\n return window.localStorage;\n}\n\nfunction readStoredLayout(\n props: NavigationSidebarCommonProps,\n bounds: LayoutBounds,\n): StoredLayout {\n const fallback = {\n collapsed: props.defaultCollapsed ?? false,\n width: clampWidth(bounds.defaultWidth, bounds),\n };\n if (!props.storageKey) return fallback;\n\n const storage = resolveStorage(props.storage);\n if (!storage) return fallback;\n\n try {\n const rawValue = storage.getItem(props.storageKey);\n if (!rawValue) return fallback;\n const parsedValue = JSON.parse(rawValue) as Partial<StoredLayout>;\n return {\n collapsed:\n typeof parsedValue.collapsed === \"boolean\"\n ? parsedValue.collapsed\n : fallback.collapsed,\n width:\n typeof parsedValue.width === \"number\" &&\n Number.isFinite(parsedValue.width)\n ? clampWidth(parsedValue.width, bounds)\n : fallback.width,\n };\n } catch (error) {\n reportStorageError(error, props.onStorageError);\n return fallback;\n }\n}\n\nfunction getNodeTitle(label: ReactNode, explicitTitle: string | undefined) {\n if (explicitTitle) return explicitTitle;\n return typeof label === \"string\" ? label : undefined;\n}\n\nfunction activeVariantClassName(activeVariant: NavigationSidebarActiveVariant) {\n if (activeVariant === \"solid\")\n return \"border-primary bg-primary text-primary-foreground shadow-sm\";\n if (activeVariant === \"outline\")\n return \"border-primary/55 bg-background text-foreground ring-1 ring-primary/20\";\n if (activeVariant === \"muted\")\n return \"border-transparent bg-muted text-foreground\";\n return \"border-primary/25 bg-primary/10 text-foreground\";\n}\n\nfunction resolveAppearance(\n appearance: NavigationSidebarAppearance | undefined,\n) {\n const density = appearance?.density ?? \"default\";\n const surface = appearance?.surface ?? \"panel\";\n const activeVariant = appearance?.activeVariant ?? \"soft\";\n return {\n density,\n surface,\n activeVariant,\n root: cn(\n surface === \"plain\" && \"border-transparent bg-transparent shadow-none\",\n surface === \"panel\" &&\n \"border-border/70 bg-card text-card-foreground shadow-sm\",\n surface === \"frosted\" &&\n \"border-border/55 bg-card/80 text-card-foreground shadow-sm backdrop-blur-xl\",\n surface === \"outlined\" &&\n \"border-border bg-background text-foreground shadow-none\",\n ),\n itemHeight:\n density === \"compact\"\n ? \"min-h-9\"\n : density === \"comfortable\"\n ? \"min-h-14\"\n : \"min-h-11\",\n itemPadding:\n density === \"compact\"\n ? \"px-2 py-1.5\"\n : density === \"comfortable\"\n ? \"px-3 py-3\"\n : \"px-3 py-2\",\n };\n}\n\ninterface EntryButtonProps {\n item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n active: boolean;\n collapsed: boolean;\n itemAs?: ElementType;\n appearance: ReturnType<typeof resolveAppearance>;\n classNames?: NavigationSidebarClassNames;\n mobile?: boolean;\n onSelect?: () => void;\n}\n\nfunction EntryButton({\n item,\n active,\n collapsed,\n itemAs,\n appearance,\n classNames,\n mobile = false,\n onSelect,\n}: EntryButtonProps) {\n const ItemComponent = itemAs ?? (item.href ? \"a\" : \"button\");\n const title = getNodeTitle(item.label, item.title);\n const domProps = item.domProps ?? {};\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.onClick?.(event);\n onSelect?.();\n };\n const componentProps = {\n ...domProps,\n ...(item.to ? { to: item.to } : {}),\n ...(item.href ? { href: item.href } : {}),\n ...(ItemComponent === \"button\" ? { type: \"button\" } : {}),\n title,\n \"aria-current\": active ? \"page\" : undefined,\n \"aria-disabled\": item.disabled || undefined,\n tabIndex: item.disabled ? -1 : domProps.tabIndex,\n onClick: handleClick,\n };\n\n return (\n <ItemComponent\n {...componentProps}\n data-navigation-sidebar-item-id={item.id}\n data-active={active ? \"true\" : \"false\"}\n className={cn(\n \"group/navigation-item relative flex w-full min-w-0 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n appearance.itemHeight,\n appearance.itemPadding,\n active\n ? activeVariantClassName(appearance.activeVariant)\n : \"text-muted-foreground hover:border-border/70 hover:bg-muted/60 hover:text-foreground\",\n collapsed && !mobile && \"justify-center px-0\",\n item.disabled && \"pointer-events-none opacity-50\",\n classNames?.item,\n active && classNames?.itemActive,\n mobile && classNames?.mobileItem,\n domProps.className,\n item.className,\n )}\n >\n {hasRenderableNode(item.icon) ? (\n <span\n className={cn(\n \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n classNames?.itemIcon,\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n ) : null}\n {mobile || !collapsed ? (\n <span\n className={cn(\n \"flex min-w-0 flex-1 flex-col\",\n classNames?.itemContent,\n )}\n >\n <span\n className={cn(\n \"min-w-0 truncate font-semibold\",\n classNames?.itemLabel,\n )}\n >\n {item.label}\n </span>\n {hasRenderableNode(item.description) ? (\n <span\n className={cn(\n \"mt-0.5 truncate text-xs font-normal\",\n classNames?.itemDescription,\n )}\n >\n {item.description}\n </span>\n ) : null}\n </span>\n ) : null}\n {(mobile || !collapsed) && hasRenderableNode(item.meta) ? (\n <span\n className={cn(\n \"shrink-0 text-xs text-muted-foreground\",\n classNames?.itemMeta,\n )}\n >\n {item.meta}\n </span>\n ) : null}\n {(mobile || !collapsed) && hasRenderableNode(item.endContent) ? (\n <span className={cn(\"shrink-0\", classNames?.itemEndContent)}>\n {item.endContent}\n </span>\n ) : null}\n </ItemComponent>\n );\n}\n\nfunction filterCatalogItems(\n items: NavigationSidebarCatalogItem[],\n activeFilterId: string | undefined,\n) {\n if (!activeFilterId) return items;\n return items.filter(\n (item) =>\n !item.filterIds?.length || item.filterIds.includes(activeFilterId),\n );\n}\n\nfunction CatalogContent({\n props,\n collapsed,\n appearance,\n}: {\n props: NavigationSidebarCatalogProps;\n collapsed: boolean;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n const {\n items = [],\n sections = [],\n filters = [],\n activeFilterId,\n activeItemId,\n onFilterSelect,\n itemAs,\n layout = \"single\",\n empty,\n ariaLabel,\n classNames,\n } = props;\n const filteredItems = filterCatalogItems(items, activeFilterId);\n const filteredSections = sections\n .map((section) => ({\n ...section,\n items: filterCatalogItems(section.items, activeFilterId),\n }))\n .filter((section) => section.items.length > 0);\n const hasItems = filteredItems.length > 0 || filteredSections.length > 0;\n\n const filtersNode =\n filters.length > 0 && !collapsed ? (\n <div\n role=\"group\"\n className={cn(\n layout === \"split\"\n ? \"flex min-w-32 flex-col gap-1 border-r border-border/60 pr-2\"\n : \"flex flex-wrap gap-1\",\n classNames?.filterList,\n )}\n aria-label={ariaLabel ? `${ariaLabel} filters` : undefined}\n >\n {filters.map((filter) => {\n const active = filter.id === activeFilterId;\n return (\n <button\n key={filter.id}\n type=\"button\"\n title={\n filter.title ??\n (typeof filter.label === \"string\" ? filter.label : undefined)\n }\n aria-pressed={active}\n disabled={filter.disabled}\n className={cn(\n \"inline-flex min-h-8 items-center gap-2 rounded-md px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n active && \"bg-muted text-foreground\",\n classNames?.filterItem,\n active && classNames?.filterItemActive,\n )}\n onClick={() => onFilterSelect?.(filter)}\n >\n {hasRenderableNode(filter.icon) ? (\n <span aria-hidden=\"true\">{filter.icon}</span>\n ) : null}\n <span className=\"truncate\">{filter.label}</span>\n </button>\n );\n })}\n </div>\n ) : null;\n\n const listNode = hasItems ? (\n <div className={cn(\"min-w-0 flex-1\", classNames?.list)}>\n {filteredItems.length > 0 ? (\n <ul className=\"grid list-none gap-1 p-0\">\n {filteredItems.map((item) => (\n <li key={item.id}>\n <EntryButton\n item={item}\n active={item.active ?? item.id === activeItemId}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n ) : null}\n {filteredSections.map((section) => (\n <section\n key={section.id}\n className={cn(\n \"mt-3 first:mt-0\",\n classNames?.section,\n section.className,\n )}\n >\n {!collapsed && hasRenderableNode(section.label) ? (\n <div\n className={cn(\n \"mb-1 px-2 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\",\n classNames?.sectionLabel,\n section.labelClassName,\n )}\n >\n {section.label}\n </div>\n ) : null}\n <ul className=\"grid list-none gap-1 p-0\">\n {section.items.map((item) => (\n <li key={item.id}>\n <EntryButton\n item={item}\n active={item.active ?? item.id === activeItemId}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n </section>\n ))}\n </div>\n ) : (\n <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n {empty}\n </div>\n );\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(layout === \"split\" && !collapsed && \"flex min-w-0 gap-2\")}\n >\n {filtersNode}\n {listNode}\n </nav>\n );\n}\n\nfunction ChildEntry({\n child,\n parent,\n active,\n interactive,\n onSelect,\n classNames,\n}: {\n child: NavigationSidebarRouteChild;\n parent: NavigationSidebarRouteItem;\n active: boolean;\n interactive: boolean;\n onSelect?: (\n child: NavigationSidebarRouteChild,\n parent: NavigationSidebarRouteItem,\n ) => void;\n classNames?: NavigationSidebarClassNames;\n}) {\n const Component = interactive ? \"button\" : \"div\";\n const domProps = child.domProps ?? {};\n return (\n <Component\n {...domProps}\n {...(interactive ? { type: \"button\" } : {})}\n data-navigation-sidebar-child-id={child.id}\n aria-current={interactive && active ? \"page\" : undefined}\n aria-disabled={child.disabled || undefined}\n title={getNodeTitle(child.label, child.title)}\n disabled={interactive ? child.disabled : undefined}\n className={cn(\n \"flex min-h-9 w-full min-w-0 items-center gap-2 rounded-md border border-transparent px-2 text-left text-xs font-medium outline-none transition-[background-color,border-color,color] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n active\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"text-muted-foreground hover:border-border hover:bg-muted/60 hover:text-foreground\",\n child.disabled && \"pointer-events-none opacity-50\",\n classNames?.childItem,\n active && classNames?.childItemActive,\n domProps.className,\n child.className,\n )}\n onClick={\n interactive && !child.disabled\n ? () => onSelect?.(child, parent)\n : undefined\n }\n >\n {hasRenderableNode(child.icon) ? (\n <span\n className=\"flex size-4 shrink-0 items-center justify-center\"\n aria-hidden=\"true\"\n >\n {child.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{child.label}</span>\n </Component>\n );\n}\n\nfunction CollapsedChildMenu({\n item,\n activeChildId,\n label,\n onChildSelect,\n classNames,\n}: {\n item: NavigationSidebarRouteItem;\n activeChildId?: string;\n label: string;\n onChildSelect: (\n child: NavigationSidebarRouteChild,\n parent: NavigationSidebarRouteItem,\n ) => void;\n classNames?: NavigationSidebarClassNames;\n}) {\n const enabledChildren = (item.children ?? []).filter(\n (child) => !child.disabled,\n );\n if (enabledChildren.length === 0) return null;\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-8 w-6 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\",\n classNames?.childMenuTrigger,\n )}\n aria-label={`${label}: ${typeof item.label === \"string\" ? item.label : item.id}`}\n title={label}\n >\n <MoreIcon />\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"right\"\n align=\"start\"\n sideOffset={8}\n className={cn(\n \"z-50 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none\",\n classNames?.childMenuContent,\n )}\n >\n {item.children?.map((child) => (\n <DropdownMenu.Item\n key={child.id}\n disabled={child.disabled}\n data-navigation-sidebar-child-id={child.id}\n data-active={child.id === activeChildId ? \"true\" : \"false\"}\n className={cn(\n \"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n child.id === activeChildId &&\n \"bg-accent text-accent-foreground\",\n )}\n onSelect={() => onChildSelect(child, item)}\n >\n {hasRenderableNode(child.icon) ? (\n <span aria-hidden=\"true\">{child.icon}</span>\n ) : null}\n <span className=\"truncate\">{child.label}</span>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nfunction RouteContent({\n props,\n collapsed,\n appearance,\n}: {\n props: NavigationSidebarRouteProps;\n collapsed: boolean;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n const {\n routeItems,\n activeItemId,\n activeChildId,\n itemAs,\n onItemSelect,\n onChildSelect,\n collapsedChildMenuLabel = \"Open submenu\",\n ariaLabel,\n classNames,\n } = props;\n return (\n <nav aria-label={ariaLabel}>\n <ul className={cn(\"grid list-none gap-2 p-0\", classNames?.list)}>\n {routeItems.map((item) => {\n const active = item.id === activeItemId;\n return (\n <li key={item.id} className=\"grid min-w-0 gap-1\">\n <div\n className={cn(\n collapsed &&\n Boolean(item.children?.length) &&\n Boolean(onChildSelect) &&\n \"flex min-w-0 items-center gap-0.5\",\n )}\n >\n <EntryButton\n item={item}\n active={active}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n onSelect={onItemSelect ? () => onItemSelect(item) : undefined}\n />\n {collapsed && onChildSelect ? (\n <CollapsedChildMenu\n item={item}\n activeChildId={activeChildId}\n label={collapsedChildMenuLabel}\n onChildSelect={onChildSelect}\n classNames={classNames}\n />\n ) : null}\n </div>\n {!collapsed && item.children?.length ? (\n <ul\n className={cn(\n \"ml-5 grid list-none gap-0.5 border-l border-border/70 py-1 pl-3\",\n classNames?.childList,\n )}\n >\n {item.children.map((child) => (\n <li key={child.id}>\n <ChildEntry\n child={child}\n parent={item}\n active={child.id === activeChildId}\n interactive={Boolean(onChildSelect)}\n onSelect={onChildSelect}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n\nfunction flattenCatalogItems(\n items: NavigationSidebarCatalogItem[],\n sections: NavigationSidebarCatalogSection[],\n activeFilterId: string | undefined,\n) {\n return [\n ...filterCatalogItems(items, activeFilterId),\n ...sections.flatMap((section) =>\n filterCatalogItems(section.items, activeFilterId),\n ),\n ];\n}\n\nfunction MobileNavigation({\n props,\n appearance,\n}: {\n props: NavigationSidebarCatalogProps | NavigationSidebarRouteProps;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n if (!props.mobile || props.mobile.mode !== \"horizontal\") return null;\n const classNames = props.classNames;\n const items =\n props.kind === \"catalog\"\n ? flattenCatalogItems(\n props.items ?? [],\n props.sections ?? [],\n props.activeFilterId,\n )\n : props.routeItems;\n return (\n <nav\n aria-label={props.ariaLabel}\n className={cn(\n \"flex gap-2 overflow-x-auto pb-1\",\n classNames?.mobileNav,\n props.mobile.className,\n )}\n >\n {items.map((item) => (\n <EntryButton\n key={item.id}\n item={item}\n active={\n props.kind === \"catalog\"\n ? ((item as NavigationSidebarCatalogItem).active ??\n item.id === props.activeItemId)\n : item.id === props.activeItemId\n }\n collapsed={false}\n itemAs={props.itemAs}\n appearance={appearance}\n classNames={{\n ...classNames,\n mobileItem: cn(classNames?.mobileItem, props.mobile?.itemClassName),\n }}\n mobile\n onSelect={\n props.kind === \"route\" && props.onItemSelect\n ? () => props.onItemSelect?.(item as NavigationSidebarRouteItem)\n : undefined\n }\n />\n ))}\n </nav>\n );\n}\n\nfunction NavigationSidebarInner<\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>(\n props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext>,\n ref: ForwardedRef<HTMLElement>,\n) {\n const bounds = resolveLayoutBounds(props);\n if (props.width !== undefined) requireFiniteNumber(\"width\", props.width);\n const initialLayoutRef = useRef<StoredLayout | null>(null);\n if (!initialLayoutRef.current) {\n initialLayoutRef.current = readStoredLayout(props, bounds);\n }\n\n const sidebarRef = useRef<HTMLElement | null>(null);\n const [internalCollapsed, setInternalCollapsed] = useState(\n initialLayoutRef.current.collapsed,\n );\n const [internalWidth, setInternalWidth] = useState(\n initialLayoutRef.current.width,\n );\n const [internalSearchValue, setInternalSearchValue] = useState(\n props.search?.defaultValue ?? \"\",\n );\n const [isResizing, setIsResizing] = useState(false);\n const resolvedCollapsed = props.collapsed ?? internalCollapsed;\n const resolvedWidth = clampWidth(props.width ?? internalWidth, bounds);\n const resolvedSearchValue = props.search?.value ?? internalSearchValue;\n const isCollapsedControlled = props.collapsed !== undefined;\n const isWidthControlled = props.width !== undefined;\n const appearance = useMemo(\n () => resolveAppearance(props.appearance),\n [props.appearance],\n );\n const collapsible = props.collapsible ?? true;\n const resizable = props.resizable ?? true;\n const collapsePlacement = collapsible\n ? (props.collapsePlacement ?? \"header\")\n : \"none\";\n const collapseLabel = props.collapseLabel ?? \"Collapse sidebar\";\n const expandLabel = props.expandLabel ?? \"Expand sidebar\";\n const resizeLabel = props.resizeLabel ?? \"Resize sidebar\";\n const contentVisible = !resolvedCollapsed || bounds.collapsedWidth > 0;\n\n const setSidebarRef = (node: HTMLElement | null) => {\n sidebarRef.current = node;\n assignRef(ref, node);\n };\n\n const updateCollapsed = useCallback(\n (nextCollapsed: boolean) => {\n if (!collapsible && nextCollapsed) return;\n if (!isCollapsedControlled) setInternalCollapsed(nextCollapsed);\n props.onCollapsedChange?.(nextCollapsed);\n },\n [collapsible, isCollapsedControlled, props.onCollapsedChange],\n );\n\n const updateWidth = useCallback(\n (nextWidth: number) => {\n const clampedWidth = clampWidth(nextWidth, bounds);\n if (!isWidthControlled) setInternalWidth(clampedWidth);\n props.onWidthChange?.(clampedWidth);\n },\n [bounds.maxWidth, bounds.minWidth, isWidthControlled, props.onWidthChange],\n );\n\n useEffect(() => {\n if (!props.storageKey) return;\n const storage = resolveStorage(props.storage);\n if (!storage) return;\n try {\n storage.setItem(\n props.storageKey,\n JSON.stringify({\n collapsed: resolvedCollapsed,\n width: resolvedWidth,\n }),\n );\n } catch (error) {\n reportStorageError(error, props.onStorageError);\n }\n }, [\n props.onStorageError,\n props.storage,\n props.storageKey,\n resolvedCollapsed,\n resolvedWidth,\n ]);\n\n useEffect(() => {\n if (!isResizing) return undefined;\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n const handlePointerMove = (event: globalThis.PointerEvent) => {\n const sidebar = sidebarRef.current;\n if (!sidebar) return;\n const nextWidth = event.clientX - sidebar.getBoundingClientRect().left;\n if (collapsible && nextWidth < bounds.collapseThreshold) {\n updateCollapsed(true);\n return;\n }\n updateCollapsed(false);\n updateWidth(nextWidth);\n };\n const handlePointerUp = () => setIsResizing(false);\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n };\n }, [\n bounds.collapseThreshold,\n collapsible,\n isResizing,\n updateCollapsed,\n updateWidth,\n ]);\n\n const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n event.preventDefault();\n if (event.key === \"ArrowLeft\") {\n const nextWidth = resolvedWidth - 24;\n if (collapsible && nextWidth < bounds.collapseThreshold) {\n updateCollapsed(true);\n } else {\n updateWidth(nextWidth);\n }\n return;\n }\n if (resolvedCollapsed) updateCollapsed(false);\n updateWidth(Math.max(resolvedWidth + 24, bounds.minWidth));\n };\n\n const collapseButton = (extraClassName?: string) => (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n props.classNames?.collapseButton,\n extraClassName,\n )}\n aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n title={resolvedCollapsed ? expandLabel : collapseLabel}\n aria-expanded={!resolvedCollapsed}\n onClick={() => updateCollapsed(!resolvedCollapsed)}\n >\n <CollapseIcon collapsed={resolvedCollapsed} />\n </button>\n );\n\n const hasHeader =\n hasRenderableNode(props.title) ||\n hasRenderableNode(props.headerLeading) ||\n hasRenderableNode(props.headerActions) ||\n collapsePlacement === \"header\";\n\n const renderContent = () => {\n if (props.kind === \"catalog\") {\n return (\n <CatalogContent\n props={props}\n collapsed={resolvedCollapsed}\n appearance={appearance}\n />\n );\n }\n if (props.kind === \"route\") {\n return (\n <RouteContent\n props={props}\n collapsed={resolvedCollapsed}\n appearance={appearance}\n />\n );\n }\n const treeProps = (\n props as NavigationSidebarTreeProps<TNodeSource, TGroupSource, TContext>\n ).tree;\n return <DataExplorerViewTree {...treeProps} />;\n };\n\n return (\n <>\n <aside\n {...props.rootDomProps}\n ref={setSidebarRef}\n aria-label={props.ariaLabel}\n data-monkeys-component={props.dataComponent ?? \"navigation-sidebar\"}\n data-navigation-sidebar-kind={props.kind}\n data-collapsed={resolvedCollapsed ? \"true\" : \"false\"}\n className={cn(\n \"relative flex h-full min-h-0 shrink-0 flex-col overflow-visible rounded-[calc(var(--radius)+0.25rem)] border transition-[width,opacity] duration-300 motion-reduce:transition-none\",\n appearance.root,\n props.desktopClassName,\n props.classNames?.root,\n props.rootDomProps?.className,\n props.className,\n )}\n style={{\n ...props.style,\n width:\n props.widthMode === \"fill\"\n ? undefined\n : resolvedCollapsed\n ? bounds.collapsedWidth\n : resolvedWidth,\n transition: isResizing ? \"none\" : props.style?.transition,\n }}\n >\n {resizable ? (\n <button\n type=\"button\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-valuemin={bounds.minWidth}\n aria-valuemax={bounds.maxWidth}\n aria-valuenow={resolvedWidth}\n aria-label={resizeLabel}\n title={resizeLabel}\n className={cn(\n \"group/resize absolute -right-1.5 bottom-0 top-0 z-40 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n props.classNames?.resizeHandle,\n )}\n onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setIsResizing(true);\n }}\n onKeyDown={handleResizeKeyDown}\n >\n <span className=\"pointer-events-none absolute bottom-3 right-1/2 top-3 w-px translate-x-1/2 rounded-full bg-border opacity-0 transition-opacity group-hover/resize:opacity-100 group-focus-visible/resize:opacity-100\" />\n </button>\n ) : null}\n\n {collapsePlacement === \"edge\"\n ? collapseButton(\n \"absolute -right-3 top-1/2 z-50 -translate-y-1/2 border border-border bg-background shadow-sm\",\n )\n : null}\n\n {contentVisible ? (\n <div className=\"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden\">\n {hasHeader ? (\n <div\n className={cn(\n \"flex min-h-12 min-w-0 items-center gap-2 border-b border-border/60 px-3\",\n resolvedCollapsed && \"justify-center px-1\",\n props.classNames?.header,\n )}\n >\n {hasRenderableNode(props.headerLeading) ? (\n <span\n className={cn(\n \"flex shrink-0 items-center justify-center\",\n props.classNames?.headerLeading,\n )}\n >\n {props.headerLeading}\n </span>\n ) : null}\n {!resolvedCollapsed && hasRenderableNode(props.title) ? (\n <div\n className={cn(\n \"min-w-0 flex-1 truncate text-sm font-semibold\",\n props.classNames?.title,\n )}\n >\n {props.title}\n </div>\n ) : null}\n {!resolvedCollapsed &&\n hasRenderableNode(props.headerActions) ? (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-1\",\n props.classNames?.headerActions,\n )}\n >\n {props.headerActions}\n </div>\n ) : null}\n {collapsePlacement === \"header\" ? collapseButton() : null}\n </div>\n ) : null}\n\n {!resolvedCollapsed && props.search ? (\n <div className={cn(\"p-3 pb-2\", props.classNames?.search)}>\n <div className=\"flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-muted-foreground focus-within:ring-2 focus-within:ring-ring\">\n <span\n className={cn(\n \"flex shrink-0\",\n props.classNames?.searchIcon,\n )}\n aria-hidden=\"true\"\n >\n {props.search.icon ?? <SearchIcon />}\n </span>\n <input\n type=\"search\"\n value={resolvedSearchValue}\n placeholder={props.search.placeholder}\n aria-label={props.search.ariaLabel}\n className={cn(\n \"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground\",\n props.classNames?.searchInput,\n )}\n onChange={(event) => {\n const nextValue = event.currentTarget.value;\n if (props.search?.value === undefined)\n setInternalSearchValue(nextValue);\n props.search?.onValueChange?.(nextValue);\n }}\n />\n {resolvedSearchValue && props.search.clearLabel ? (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n props.classNames?.searchClear,\n )}\n aria-label={props.search.clearLabel}\n title={props.search.clearLabel}\n onClick={() => {\n if (props.search?.value === undefined)\n setInternalSearchValue(\"\");\n props.search?.onValueChange?.(\"\");\n }}\n >\n <ClearIcon />\n </button>\n ) : null}\n </div>\n </div>\n ) : null}\n\n <div\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto p-3\",\n resolvedCollapsed && \"px-1.5\",\n props.classNames?.content,\n )}\n >\n {renderContent()}\n </div>\n\n {hasRenderableNode(props.footer) ||\n collapsePlacement === \"footer\" ? (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-2 border-t border-border/70 p-3\",\n resolvedCollapsed && \"justify-center px-1\",\n props.classNames?.footer,\n )}\n >\n {!resolvedCollapsed && hasRenderableNode(props.footer) ? (\n <div className=\"min-w-0 flex-1\">{props.footer}</div>\n ) : null}\n {collapsePlacement === \"footer\" ? collapseButton() : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </aside>\n {props.kind !== \"tree\" ? (\n <MobileNavigation props={props} appearance={appearance} />\n ) : null}\n </>\n );\n}\n\nexport type NavigationSidebarComponent = <\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>(\n props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext> &\n RefAttributes<HTMLElement>,\n) => ReactElement | null;\n\nexport const NavigationSidebar = forwardRef(\n NavigationSidebarInner,\n) as NavigationSidebarComponent;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/data-explorer/utils.ts","../../../src/components/data-explorer/theme.ts","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/navigation-sidebar/NavigationSidebar.tsx"],"names":["cn","useMemo","jsx","jsxs","MoreIcon","DropdownMenu2","useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import type { DataExplorerResolver } from './types';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return parts.filter(Boolean).join(' ');\n}\n\nexport function resolveDataExplorerValue<TValue, TContext>(\n value: DataExplorerResolver<TValue, TContext> | undefined,\n context: TContext | undefined,\n): TValue | undefined {\n if (typeof value === 'function') {\n return (value as (resolvedContext: TContext) => TValue)(context as TContext);\n }\n\n return value;\n}\n","import type {\n DataExplorerAppearance,\n DataExplorerBackground,\n DataExplorerBorder,\n DataExplorerControlTone,\n DataExplorerDensity,\n DataExplorerRadius,\n DataExplorerResolvedTheme,\n DataExplorerThemeStyles,\n DataExplorerThemePresetId,\n DataExplorerThemeSlots,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<DataExplorerThemeSlots>;\n\nconst emptyStyles: DataExplorerThemeStyles = {};\n\nconst baseSlots: ResolvedSlots = {\n surfaceRoot:\n 'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden rounded-md border border-border bg-background shadow-sm',\n toolbarRoot:\n 'flex flex-wrap items-center gap-2 border-b border-border bg-background px-4 py-3',\n toolbarLeading: 'flex items-center gap-2',\n toolbarSearch:\n 'flex h-10 min-w-52 flex-1 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm',\n toolbarSearchIcon: 'inline-flex shrink-0 text-muted-foreground',\n toolbarSearchInput:\n 'min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground',\n toolbarViewSwitch:\n 'flex items-center rounded-md border border-border bg-background p-0.5',\n toolbarViewButton:\n 'inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n toolbarViewButtonActive: 'bg-muted text-foreground',\n toolbarActions: 'flex items-center gap-2',\n actionBarRoot: 'flex min-w-0 flex-wrap items-center gap-2',\n actionBarLeading: 'flex shrink-0 items-center gap-2',\n actionBarActions: 'flex min-w-0 flex-1 flex-wrap items-center gap-2',\n actionBarTrailing: 'flex shrink-0 items-center gap-2',\n actionButtonBase:\n 'inline-flex h-9 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n actionButtonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n actionButtonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n actionButtonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n actionButtonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n actionButtonActive: 'ring-1 ring-primary/30',\n actionButtonDisabled: 'cursor-not-allowed opacity-60',\n actionIconButton: 'w-9 px-0',\n actionToggleActive: 'border-primary/30 bg-primary/10 text-primary',\n controlButton:\n 'inline-flex h-10 min-w-0 items-center justify-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n controlButtonIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n controlButtonLabel: 'min-w-0 truncate',\n controlSelectTrigger:\n 'inline-flex h-10 min-w-28 items-center justify-between gap-3 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n controlSelectValue: 'flex min-w-0 items-center gap-1 truncate',\n controlCheckbox:\n 'inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n controlCheckboxIndicator:\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary',\n controlCheckboxLabel: 'min-w-0 truncate',\n menuTrigger:\n 'inline-flex h-8 w-8 items-center justify-center rounded-md text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n menuContent:\n 'z-50 min-w-36 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n menuItemPrimary: 'text-primary focus:text-primary',\n menuItemDanger: 'text-destructive-text focus:text-destructive-text',\n menuItemMuted: 'text-muted-foreground',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'truncate',\n cardRoot:\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background transition-shadow',\n cardInteractive: 'cursor-pointer hover:shadow-sm',\n cardSelected: 'ring-2 ring-primary',\n cardDisabled: 'opacity-60',\n cardHeader: 'p-4',\n cardMedia: 'shrink-0 overflow-hidden',\n cardFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n recordCardRoot: 'group relative border-border/70 transition-shadow hover:shadow-sm',\n recordCardActive: 'z-10 ring-2 ring-monkeys-500',\n footerRoot: 'flex items-center border-t border-border bg-background px-4 py-3',\n footerSummary:\n 'flex items-center gap-1 whitespace-nowrap text-sm text-muted-foreground',\n footerJumpButton:\n 'inline-flex items-center gap-1 text-muted-foreground underline-offset-4 hover:text-foreground hover:underline',\n footerPageSizeSelect:\n 'h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground',\n previewRoot:\n 'relative h-full min-h-0 w-full flex-1 select-none self-stretch overflow-hidden bg-slate-950',\n previewPlaceholder:\n 'flex h-full w-full items-center justify-center rounded-xl bg-white/5 px-6 text-center text-sm text-white/60',\n previewActions: 'absolute right-4 top-4 z-20 flex flex-col gap-2',\n previewControls: 'absolute bottom-4 right-4 z-20 flex flex-col gap-2',\n previewZoomLabel:\n 'min-w-[3rem] rounded-full border border-white/15 bg-black/30 px-1 py-1 text-center text-xs font-medium text-white/70 shadow-lg backdrop-blur',\n previewControlButton:\n 'inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition hover:bg-black/45',\n previewNavigationButton:\n 'absolute top-1/2 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition-colors hover:bg-black/45 disabled:pointer-events-none disabled:opacity-40',\n detailRoot: 'flex h-full flex-col overflow-hidden bg-background',\n detailHeader:\n 'flex items-center justify-between gap-3 border-b border-border bg-background px-4 py-4 sm:px-5',\n detailLeading:\n 'flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground',\n detailNavigation:\n 'hidden items-center gap-1 rounded-lg border border-border bg-background px-1 py-1 md:flex',\n detailNavigationButton:\n 'flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n detailCloseButton:\n 'flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n detailPreviewPanel:\n 'min-h-0 overflow-hidden border-b border-border bg-background xl:border-b-0',\n detailPreviewFrame:\n 'relative h-full min-h-0 w-full overflow-hidden bg-background',\n detailRightPanel:\n 'min-h-0 min-w-0 border-t border-border bg-background xl:border-l xl:border-t-0',\n detailRightPanelBody:\n 'h-full overflow-y-auto overscroll-contain bg-background p-5',\n treeRoot: 'min-w-0 space-y-1 overflow-hidden text-sm',\n treeGroup: 'min-w-0 space-y-1',\n treeGroupHeader: 'group/tree-group flex min-w-0 items-center gap-1',\n treeGroupHeaderButton:\n 'flex h-9 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left font-medium text-muted-foreground transition-colors hover:bg-accent/55 hover:text-foreground',\n treeGroupContent: 'min-w-0 space-y-0.5',\n treeGroupActions:\n 'shrink-0 opacity-0 transition-opacity group-hover/tree-group:opacity-100 data-[state=open]:opacity-100',\n treeNode: 'min-w-0',\n treeNodeButton:\n 'group/tree-node flex min-h-9 w-full min-w-0 items-center gap-1 rounded-md pr-1 text-left text-sm text-foreground transition-colors hover:bg-accent/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1',\n treeNodeSelected: 'bg-accent text-accent-foreground',\n treeNodeDisabled: 'cursor-not-allowed opacity-55',\n treeNodeDragging: 'opacity-50',\n treeNodeToggle:\n 'inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n treeNodeIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground group-hover/tree-node:text-foreground',\n treeNodeLabel: 'min-w-0 truncate',\n treeNodeDescription: 'mt-0.5 truncate text-xs text-muted-foreground',\n treeNodeMeta: 'ml-2 shrink-0 text-xs text-muted-foreground',\n treeNodeBadge:\n 'ml-2 shrink-0 rounded-full border border-border bg-muted px-1.5 py-0.5 text-[11px] leading-none text-muted-foreground',\n treeNodeActions:\n 'ml-1 shrink-0 opacity-0 transition-opacity group-hover/tree-node:opacity-100 data-[state=open]:opacity-100',\n treeNodeChildren: 'mt-0.5 min-w-0 space-y-0.5',\n treeNodeDragHandle:\n 'inline-flex h-5 w-5 shrink-0 cursor-grab items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-foreground active:cursor-grabbing group-hover/tree-node:opacity-100',\n treeEmpty: 'px-3 py-2 text-xs text-muted-foreground',\n treeError: 'px-3 py-2 text-xs text-destructive-text',\n treeLoading: 'px-3 py-2 text-xs text-muted-foreground',\n};\n\nconst densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n compact: {\n toolbarRoot: 'px-3 py-2',\n toolbarSearch: 'h-9 min-w-48',\n toolbarViewButton: 'h-8 min-w-8 text-xs',\n actionButtonBase: 'h-8 px-2.5 text-xs',\n actionIconButton: 'h-8 w-8 px-0',\n controlButton: 'h-9 px-2.5 text-xs',\n controlSelectTrigger: 'h-9 min-w-24 px-2.5 text-xs',\n controlCheckbox: 'h-8 px-2.5 text-xs',\n menuTrigger: 'h-8 w-8',\n footerRoot: 'px-3 py-2',\n footerPageSizeSelect: 'h-8 text-xs',\n treeGroupHeaderButton: 'h-8 text-xs',\n treeNodeButton: 'min-h-8 text-xs',\n treeEmpty: 'py-1.5 text-xs',\n treeError: 'py-1.5 text-xs',\n treeLoading: 'py-1.5 text-xs',\n },\n default: {},\n comfortable: {\n toolbarRoot: 'px-5 py-4',\n toolbarSearch: 'h-11',\n toolbarViewButton: 'h-10 min-w-10',\n actionButtonBase: 'h-10 px-3.5',\n actionIconButton: 'h-10 w-10 px-0',\n controlButton: 'h-11 px-3.5',\n controlSelectTrigger: 'h-11 min-w-32 px-3.5',\n controlCheckbox: 'h-10 px-3.5',\n menuTrigger: 'h-9 w-9',\n footerRoot: 'px-5 py-3.5',\n treeGroupHeaderButton: 'h-10',\n treeNodeButton: 'min-h-10',\n },\n};\n\nconst radiusSlots: Record<DataExplorerRadius, Partial<DataExplorerThemeSlots>> = {\n none: {\n surfaceRoot: 'rounded-none',\n toolbarSearch: 'rounded-none',\n toolbarViewSwitch: 'rounded-none',\n toolbarViewButton: 'rounded-none',\n actionButtonBase: 'rounded-none',\n controlButton: 'rounded-none',\n controlSelectTrigger: 'rounded-none',\n controlCheckbox: 'rounded-none',\n controlCheckboxIndicator: 'rounded-none',\n menuTrigger: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n cardRoot: 'rounded-none',\n footerPageSizeSelect: 'rounded-none',\n detailLeading: 'rounded-none',\n detailNavigation: 'rounded-none',\n detailNavigationButton: 'rounded-none',\n detailCloseButton: 'rounded-none',\n treeGroupHeaderButton: 'rounded-none',\n treeNodeButton: 'rounded-none',\n treeNodeToggle: 'rounded-none',\n treeNodeBadge: 'rounded-none',\n treeNodeDragHandle: 'rounded-none',\n },\n sm: {\n surfaceRoot: 'rounded-sm',\n toolbarSearch: 'rounded-sm',\n toolbarViewSwitch: 'rounded-sm',\n toolbarViewButton: 'rounded-sm',\n actionButtonBase: 'rounded-sm',\n controlButton: 'rounded-sm',\n controlSelectTrigger: 'rounded-sm',\n controlCheckbox: 'rounded-sm',\n controlCheckboxIndicator: 'rounded-sm',\n menuTrigger: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n cardRoot: 'rounded-sm',\n treeGroupHeaderButton: 'rounded-sm',\n treeNodeButton: 'rounded-sm',\n treeNodeToggle: 'rounded-sm',\n treeNodeBadge: 'rounded-sm',\n treeNodeDragHandle: 'rounded-sm',\n },\n md: {},\n lg: {\n surfaceRoot: 'rounded-xl',\n toolbarSearch: 'rounded-lg',\n toolbarViewSwitch: 'rounded-lg',\n toolbarViewButton: 'rounded-lg',\n actionButtonBase: 'rounded-lg',\n controlButton: 'rounded-lg',\n controlSelectTrigger: 'rounded-lg',\n controlCheckbox: 'rounded-lg',\n controlCheckboxIndicator: 'rounded-md',\n menuTrigger: 'rounded-lg',\n menuContent: 'rounded-lg',\n cardRoot: 'rounded-xl',\n treeGroupHeaderButton: 'rounded-lg',\n treeNodeButton: 'rounded-lg',\n treeNodeToggle: 'rounded-md',\n treeNodeBadge: 'rounded-lg',\n treeNodeDragHandle: 'rounded-md',\n },\n xl: {\n surfaceRoot: 'rounded-2xl',\n toolbarSearch: 'rounded-xl',\n toolbarViewSwitch: 'rounded-xl',\n toolbarViewButton: 'rounded-xl',\n actionButtonBase: 'rounded-xl',\n controlButton: 'rounded-xl',\n controlSelectTrigger: 'rounded-xl',\n controlCheckbox: 'rounded-xl',\n controlCheckboxIndicator: 'rounded-lg',\n menuTrigger: 'rounded-xl',\n menuContent: 'rounded-xl',\n cardRoot: 'rounded-2xl',\n treeGroupHeaderButton: 'rounded-xl',\n treeNodeButton: 'rounded-xl',\n treeNodeToggle: 'rounded-lg',\n treeNodeBadge: 'rounded-xl',\n treeNodeDragHandle: 'rounded-lg',\n },\n full: {\n surfaceRoot: 'rounded-2xl',\n toolbarSearch: 'rounded-full',\n toolbarViewSwitch: 'rounded-full',\n toolbarViewButton: 'rounded-full',\n actionButtonBase: 'rounded-full',\n controlButton: 'rounded-full',\n controlSelectTrigger: 'rounded-full',\n controlCheckbox: 'rounded-full',\n controlCheckboxIndicator: 'rounded-full',\n menuTrigger: 'rounded-full',\n cardRoot: 'rounded-2xl',\n treeGroupHeaderButton: 'rounded-full',\n treeNodeButton: 'rounded-full',\n treeNodeToggle: 'rounded-full',\n treeNodeBadge: 'rounded-full',\n treeNodeDragHandle: 'rounded-full',\n },\n};\n\nconst borderSlots: Record<DataExplorerBorder, Partial<DataExplorerThemeSlots>> = {\n none: {\n surfaceRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n toolbarSearch: 'border-transparent',\n toolbarViewSwitch: 'border-transparent',\n actionButtonBase: 'border-transparent',\n controlButton: 'border-transparent',\n controlSelectTrigger: 'border-transparent',\n controlCheckbox: 'border-transparent',\n cardRoot: 'border-transparent',\n footerRoot: 'border-transparent',\n detailHeader: 'border-transparent',\n detailPreviewPanel: 'border-transparent',\n detailRightPanel: 'border-transparent',\n },\n subtle: {\n surfaceRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n toolbarSearch: 'border-border/60',\n toolbarViewSwitch: 'border-border/60',\n actionButtonDefault: 'border-border/60',\n controlButton: 'border-border/60',\n controlSelectTrigger: 'border-border/60',\n controlCheckbox: 'border-border/60',\n cardRoot: 'border-border/60',\n footerRoot: 'border-border/60',\n },\n solid: {},\n strong: {\n surfaceRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n toolbarSearch: 'border-foreground/20',\n toolbarViewSwitch: 'border-foreground/20',\n actionButtonDefault: 'border-foreground/20',\n controlButton: 'border-foreground/20',\n controlSelectTrigger: 'border-foreground/20',\n controlCheckbox: 'border-foreground/20',\n cardRoot: 'border-foreground/20',\n footerRoot: 'border-foreground/20',\n },\n};\n\nconst backgroundSlots: Record<DataExplorerBackground, Partial<DataExplorerThemeSlots>> = {\n plain: {},\n muted: {\n surfaceRoot: 'bg-card',\n toolbarRoot: 'bg-muted/20',\n toolbarSearch: 'bg-background',\n toolbarViewSwitch: 'bg-background',\n controlButton: 'bg-background',\n controlSelectTrigger: 'bg-background',\n controlCheckbox: 'bg-background',\n cardRoot: 'bg-card',\n footerRoot: 'bg-muted/20',\n detailHeader: 'bg-muted/20',\n },\n soft: {\n surfaceRoot: 'bg-background/95 shadow-sm',\n toolbarRoot: 'bg-background/95',\n actionButtonDefault: 'bg-muted/30 hover:bg-muted/55',\n controlButton: 'bg-muted/30 hover:bg-muted/55',\n controlSelectTrigger: 'bg-muted/30 hover:bg-muted/55',\n controlCheckbox: 'bg-muted/30 hover:bg-muted/55',\n cardRoot: 'bg-background/95 shadow-sm',\n footerRoot: 'bg-background/95',\n },\n glass: {\n surfaceRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n toolbarRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n toolbarSearch: 'border-white/10 bg-white/5',\n toolbarViewSwitch: 'border-white/10 bg-white/5',\n actionButtonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n controlButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n controlSelectTrigger:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n controlCheckbox:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n controlCheckboxIndicator: 'border-white/15 bg-white/10',\n cardRoot: 'border-white/10 bg-white/[0.06] shadow-none',\n footerRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n },\n 'dark-stage': {\n previewRoot: 'bg-slate-950',\n previewPlaceholder: 'bg-white/5 text-white/60',\n actionButtonBase:\n 'inline-flex h-9 items-center justify-center gap-2 rounded-full border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45 focus-visible:ring-offset-0',\n actionButtonDefault:\n 'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n controlButton:\n 'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n controlSelectTrigger:\n 'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n controlCheckbox:\n 'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n actionButtonPrimary:\n 'border-white/25 bg-white/20 text-white shadow-lg backdrop-blur hover:bg-white/28',\n actionButtonMuted:\n 'border-white/10 bg-black/20 text-white/70 shadow-lg backdrop-blur hover:bg-black/[0.35] hover:text-white',\n actionIconButton: 'h-9 w-9 px-0',\n },\n};\n\nconst presetDefaults: Record<\n DataExplorerThemePresetId,\n Pick<DataExplorerAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'md',\n border: 'subtle',\n background: 'plain',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'soft',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n flat: {\n density: 'compact',\n radius: 'none',\n border: 'solid',\n background: 'plain',\n },\n glass: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'solid',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<DataExplorerThemeSlots>> = {\n soft: {\n actionButtonBase: 'font-medium',\n controlButton: 'font-medium',\n controlSelectTrigger: 'font-medium',\n controlCheckbox: 'font-medium',\n menuTrigger: 'rounded-full',\n cardRoot: 'border-border/70',\n },\n compact: {\n toolbarRoot: 'gap-2',\n actionButtonBase: 'text-xs',\n controlButton: 'text-xs',\n controlSelectTrigger: 'text-xs',\n controlCheckbox: 'text-xs',\n footerRoot: 'text-xs',\n },\n 'tinted-glass': {\n actionButtonDefault:\n 'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n actionButtonPrimary:\n 'border-primary/30 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n actionButtonMuted:\n 'border-border/50 bg-muted/20 text-muted-foreground hover:bg-muted/45 hover:text-foreground',\n controlButton:\n 'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n controlSelectTrigger:\n 'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n controlCheckbox:\n 'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n controlCheckboxIndicator: 'border-border/60 bg-background/10 text-primary',\n menuContent: 'border-border bg-popover text-popover-foreground shadow-2xl',\n menuSeparator: 'bg-border',\n menuItem: 'focus:bg-accent focus:text-accent-foreground',\n cardSelected: 'ring-2 ring-primary',\n previewRoot: 'bg-background',\n treeGroupHeaderButton:\n 'text-muted-foreground hover:bg-accent/60 hover:text-foreground',\n treeNodeButton:\n 'text-foreground hover:bg-accent/60 hover:text-accent-foreground focus-visible:ring-ring',\n treeNodeSelected: 'bg-accent text-accent-foreground',\n treeNodeToggle: 'text-muted-foreground hover:bg-accent hover:text-foreground',\n treeNodeIcon:\n 'text-muted-foreground group-hover/tree-node:text-foreground',\n treeNodeMeta: 'text-muted-foreground',\n treeNodeBadge: 'border-border bg-muted text-muted-foreground',\n treeNodeActions: 'text-muted-foreground',\n treeNodeDragHandle:\n 'text-muted-foreground hover:bg-accent hover:text-foreground group-hover/tree-node:opacity-100',\n treeEmpty: 'text-muted-foreground',\n treeError: 'text-destructive-text',\n treeLoading: 'text-muted-foreground',\n },\n flat: {\n toolbarRoot: 'border-slate-200 bg-white',\n toolbarSearch: 'rounded-none border-slate-200 bg-white shadow-none',\n toolbarViewSwitch: 'rounded-none border-slate-200 bg-white shadow-none',\n actionButtonBase: 'rounded-none shadow-none',\n controlButton: 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n controlSelectTrigger:\n 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n controlCheckbox:\n 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n actionButtonDefault:\n 'border-slate-200 bg-white text-slate-700 hover:bg-slate-50',\n menuTrigger:\n 'rounded-none border border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n menuContent: 'rounded-none border-slate-200 bg-white shadow-none',\n cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n footerRoot: 'border-slate-200 bg-white',\n treeRoot: 'space-y-1 text-sm',\n treeGroupHeader: 'group/tree-group flex min-w-0 items-center',\n treeGroupHeaderButton:\n 'h-9 rounded-none px-3 text-slate-600 shadow-none hover:bg-slate-100 hover:text-slate-950',\n treeGroupContent: 'space-y-1',\n treeNodeButton:\n 'min-h-9 rounded-none text-slate-700 hover:bg-slate-100 hover:text-slate-950 focus-visible:ring-slate-300',\n treeNodeSelected: 'bg-slate-100 text-slate-950',\n treeNodeToggle:\n 'rounded-none text-slate-500 hover:bg-transparent hover:text-slate-950',\n treeNodeIcon: 'text-slate-500 group-hover/tree-node:text-slate-950',\n treeNodeDragHandle:\n 'rounded-none text-slate-400 hover:bg-transparent hover:text-slate-700',\n treeNodeActions: 'text-slate-500',\n },\n glass: {\n menuContent: 'border-white/10 bg-slate-950/90 text-white backdrop-blur-xl',\n menuSeparator: 'bg-white/10',\n menuItem: 'focus:bg-white/10 focus:text-white',\n },\n 'hard-edge': {\n toolbarRoot: 'border-slate-200 bg-white',\n actionButtonBase: 'rounded-none shadow-none',\n controlButton: 'rounded-none shadow-none',\n controlSelectTrigger: 'rounded-none shadow-none',\n controlCheckbox: 'rounded-none shadow-none',\n cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n footerRoot: 'border-slate-200 bg-white',\n footerPageSizeSelect: 'rounded-none border-slate-200 shadow-none',\n },\n};\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof DataExplorerThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<DataExplorerThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(\n ...sources: Array<DataExplorerThemeStyles | undefined>\n): DataExplorerThemeStyles {\n return sources.reduce<DataExplorerThemeStyles>(\n (resolved, source) => ({\n ...resolved,\n ...source,\n }),\n {},\n );\n}\n\nfunction getPresetDefaults(preset: DataExplorerThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nexport function resolveDataExplorerAppearance(\n appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n density,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getDataExplorerActionToneClassName(\n theme: DataExplorerResolvedTheme,\n tone: DataExplorerControlTone | undefined,\n active: boolean,\n) {\n return cn(\n tone === 'primary'\n ? theme.slots.actionButtonPrimary\n : tone === 'danger'\n ? theme.slots.actionButtonDanger\n : tone === 'muted'\n ? theme.slots.actionButtonMuted\n : theme.slots.actionButtonDefault,\n active && theme.slots.actionButtonActive,\n );\n}\n\nexport function getDataExplorerMenuItemToneClassName(\n theme: DataExplorerResolvedTheme,\n tone: DataExplorerControlTone | undefined,\n) {\n if (tone === 'primary') return theme.slots.menuItemPrimary;\n if (tone === 'danger') return theme.slots.menuItemDanger;\n if (tone === 'muted') return theme.slots.menuItemMuted;\n return undefined;\n}\n","import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n locale: \"en-US\",\n messages: {\n pagination: {\n navigation: \"Pagination\",\n first: \"First\",\n previous: \"Previous\",\n next: \"Next\",\n last: \"Last\",\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: \"0 results\",\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n selected: ({ count }) => `${count} selected`,\n pageSize: \"Items per page\",\n },\n dialog: {\n close: \"Close dialog\",\n },\n dropdownMenu: {\n actions: \"Actions\",\n },\n loading: {\n spinner: \"Loading\",\n },\n layout: {\n resizePanels: \"Resize panels\",\n },\n steps: {\n label: \"Progress\",\n current: \"Current\",\n completed: \"Completed\",\n error: \"Error\",\n disabled: \"Disabled\",\n },\n numberInput: {\n increment: \"Increase value\",\n decrement: \"Decrease value\",\n },\n passwordInput: {\n showPassword: \"Show password\",\n hidePassword: \"Hide password\",\n },\n multiSelect: {\n placeholder: \"Select options\",\n empty: \"No options\",\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : \"Sort column\",\n loadingRow: \"Loading table row\",\n },\n toolbar: {\n theme: {\n label: \"Appearance\",\n toggle: \"Toggle theme\",\n auto: \"Auto\",\n light: \"Light\",\n dark: \"Dark\",\n },\n language: {\n label: \"Language\",\n switch: \"Switch language\",\n },\n },\n toast: {\n errorTitle: \"Error\",\n warningTitle: \"Warning\",\n defaultErrorDescription: \"Something went wrong.\",\n defaultWarningDescription: \"Please check and try again.\",\n },\n dataExplorer: {\n viewTree: {\n actions: \"More actions\",\n expand: \"Expand\",\n collapse: \"Collapse\",\n loading: \"Loading...\",\n empty: \"No views\",\n error: \"Unable to load views\",\n },\n },\n workbench: {\n collection: {\n label: \"Collection\",\n loading: \"Loading items\",\n empty: \"No items\",\n loadError: \"Unable to load items\",\n refreshError: \"Unable to refresh items\",\n retry: \"Retry\",\n loadingMore: \"Loading more items\",\n permission: \"You do not have permission to view this content\",\n offline: \"You appear to be offline\",\n requestAccess: \"Request access\",\n },\n interactiveTable: {\n columnActions: \"Column actions\",\n freezeColumn: \"Freeze to left\",\n freezeEndColumn: \"Freeze to right\",\n unfreezeColumn: \"Unfreeze from left\",\n unfreezeEndColumn: \"Unfreeze from right\",\n unfreezeAllColumns: \"Unfreeze all columns\",\n resetColumnWidth: \"Reset column width\",\n frozenColumnTitle: \"Frozen column\",\n },\n },\n agentWorkbench: {\n label: \"Session activity\",\n reasoning: \"Reasoning\",\n plan: \"Plan\",\n taskNoDetail: \"No additional details\",\n modes: { chat: \"Chat\", work: \"Work\" },\n composer: {\n send: \"Send message\",\n stop: \"Stop generating\",\n queue: \"Queue message\",\n attach: \"Add photos or files\",\n voice: \"Start voice input\",\n webSearch: \"Web search\",\n chatMode: \"Chat mode\",\n model: \"Model\",\n reasoning: \"Reasoning effort\",\n permissions: \"Permissions\",\n removeAttachment: \"Remove attachment\",\n editQueued: \"Edit queued message\",\n deleteQueued: \"Delete queued message\",\n moveUp: \"Move message up\",\n moveDown: \"Move message down\",\n queued: \"Queued messages\",\n uploading: \"Uploading\",\n uploadFailed: \"Upload failed\",\n retryAttachment: \"Retry attachment upload\",\n noModels: \"No models available\",\n message: \"Message\",\n attachmentOnly: \"Attachment\",\n reasoningOptions: {\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n xhigh: \"Extra high\",\n },\n permissionOptions: {\n \"approval-required\": \"Approval required\",\n \"auto-approve\": \"Auto approve\",\n \"full-access\": \"Full access\",\n },\n },\n quickStart: {\n label: \"Quick start\",\n back: \"Back\",\n addFile: \"Add file\",\n },\n tool: {\n input: \"Input\",\n output: \"Output\",\n status: {\n pending: \"Pending\",\n running: \"Running\",\n completed: \"Completed\",\n failed: \"Error\",\n denied: \"Denied\",\n },\n },\n approval: {\n approve: \"Approve\",\n reject: \"Reject\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n },\n artifact: {\n pending: \"Preparing\",\n ready: \"Ready\",\n failed: \"Failed\",\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: \"Stopping...\",\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n process: {\n running: \"Working\",\n queued: \"Queued\",\n waitingApproval: \"Waiting for approval\",\n failed: \"Failed\",\n stopped: \"Stopped\",\n processed: \"Processed\",\n processedFor: ({ duration }) => `Worked for ${duration}`,\n completedCount: ({ completed, total }) =>\n `${completed}/${total} completed`,\n },\n artifactWorkspace: {\n outputs: \"Outputs\",\n sources: \"Sources\",\n viewAll: \"View all\",\n toggleSummary: \"Toggle files\",\n tabs: \"Open files\",\n closeTab: ({ name }) => `Close ${name}`,\n closeWorkspace: \"Close workspace\",\n download: ({ name }) => `Download ${name}`,\n openExternal: ({ name }) => `Open ${name} in a new window`,\n loading: \"Loading preview...\",\n failed: \"Preview unavailable\",\n retry: \"Try again\",\n },\n usage: {\n label: \"Context usage\",\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: \"Search agents and sessions\",\n searchSessions: \"Search sessions\",\n searchShortcut: \"Focus search\",\n clearSearch: \"Clear search\",\n tabsLabel: \"Agent workbench navigation\",\n agents: \"Agents\",\n sessions: \"Sessions\",\n newAgent: \"New Agent\",\n newSession: \"New Session\",\n capabilities: \"Capabilities & Extensions\",\n settings: \"Agent Settings\",\n allAgents: \"All Agents\",\n recentSessions: \"Recent Sessions\",\n chat: \"Chat\",\n work: \"Work\",\n chats: \"Chats\",\n builtIn: \"Built-in\",\n noDescription: \"No description\",\n loading: \"Loading...\",\n emptyAgents: \"No agents yet\",\n emptySessions: \"No sessions yet\",\n noResults: \"No matching results\",\n retry: \"Retry\",\n pin: \"Pin\",\n unpin: \"Unpin\",\n rename: \"Rename\",\n delete: \"Delete\",\n actions: \"Actions\",\n save: \"Save\",\n cancel: \"Cancel\",\n running: \"Running\",\n completed: \"Completed\",\n failed: \"Failed\",\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: \"Task details\",\n description: \"Summary and workspace activity\",\n duration: \"Duration\",\n updated: \"Updated\",\n model: \"Model\",\n mode: \"Mode\",\n permissions: \"Permissions\",\n tokenUsage: \"Token usage\",\n summary: \"Summary\",\n summaryEmpty: \"No summary is available yet.\",\n summaryFailed: \"The summary could not be generated.\",\n highlights: \"Highlights\",\n pendingItems: \"Pending items\",\n tabs: {\n label: \"Task detail views\",\n summary: \"Summary\",\n workspace: \"Workspace\",\n },\n status: {\n queued: \"Queued\",\n running: \"Running\",\n waiting_approval: \"Waiting for approval\",\n stopping: \"Stopping\",\n stopped: \"Stopped\",\n completed: \"Completed\",\n failed: \"Failed\",\n },\n state: {\n loading: {\n title: \"Loading task details\",\n description: \"Restoring the latest session activity.\",\n },\n empty: {\n title: \"No task selected\",\n description: \"Select a task to inspect its details.\",\n },\n error: {\n title: \"Unable to load task details\",\n description: \"Try again after the session is available.\",\n },\n },\n actions: {\n close: \"Close task details\",\n copySummary: \"Copy summary\",\n retry: \"Retry\",\n retrySummary: \"Retry summary\",\n resume: \"Resume\",\n continueInNewTask: \"Continue in new task\",\n editAndRerun: \"Edit and rerun\",\n export: \"Export\",\n },\n workspace: {\n diffs: \"Code changes\",\n files: \"Files\",\n terminals: \"Terminals\",\n tests: \"Tests\",\n artifacts: \"Artifacts\",\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: {\n added: \"Added\",\n modified: \"Modified\",\n deleted: \"Deleted\",\n renamed: \"Renamed\",\n },\n fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n collection: {\n ...base.workbench.collection,\n ...override.workbench?.collection,\n },\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n quickStart: {\n ...base.agentWorkbench.quickStart,\n ...override.agentWorkbench?.quickStart,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n process: {\n ...base.agentWorkbench.process,\n ...override.agentWorkbench?.process,\n },\n artifactWorkspace: {\n ...base.agentWorkbench.artifactWorkspace,\n ...override.agentWorkbench?.artifactWorkspace,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n showTotal?: boolean;\n showPageSize?: boolean;\n pageSizeOptions?: number[];\n paginationMode?: MonkeysListFooterPaginationMode;\n alignment?: MonkeysListFooterAlignment;\n density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n loading?: { variant?: MonkeysLoadingStateVariant };\n empty?: { variant?: MonkeysEmptyStateVariant };\n error?: { showRetry?: boolean };\n permission?: { showRequestAccess?: boolean };\n density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n statusStates?: MonkeysStatusStatesConfig;\n listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { DragEvent, ReactNode } from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport {\n getDataExplorerMenuItemToneClassName,\n resolveDataExplorerAppearance,\n} from './theme';\nimport type {\n DataExplorerViewTreeAction,\n DataExplorerViewTreeActionContext,\n DataExplorerViewTreeGroup,\n DataExplorerViewTreeNode,\n DataExplorerViewTreeProps,\n DataExplorerViewTreeReorderPayload,\n} from './types';\nimport { cn, resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n TGroupSource,\n TNodeSource,\n TContext\n>;\n\ntype TreeNode<TNodeSource, TGroupSource = unknown, TContext = unknown> =\n DataExplorerViewTreeNode<TNodeSource, TGroupSource, TContext>;\n\ntype FlattenedNode<TNodeSource, TGroupSource, TContext> = {\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n parentId?: string;\n index: number;\n};\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className={cn('h-3.5 w-3.5 transition-transform', expanded && 'rotate-90')}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n );\n}\n\nfunction GripIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"1\" />\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"18\" r=\"1\" />\n <circle cx=\"15\" cy=\"6\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"18\" r=\"1\" />\n </svg>\n );\n}\n\nfunction collectDefaultExpandedNodeIds<TNodeSource, TGroupSource, TContext>(\n nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n defaults: Set<string>,\n) {\n for (const node of nodes ?? []) {\n if (node.defaultExpanded) {\n defaults.add(node.id);\n }\n collectDefaultExpandedNodeIds(node.children, defaults);\n }\n}\n\nfunction buildDefaultNodeExpandedSet<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n defaultExpandedNodeIds: string[] | undefined,\n) {\n const defaults = new Set(defaultExpandedNodeIds ?? []);\n for (const group of groups) {\n collectDefaultExpandedNodeIds(group.nodes, defaults);\n }\n return defaults;\n}\n\nfunction buildDefaultGroupExpandedSet<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n defaultExpandedGroupIds: string[] | undefined,\n) {\n const defaults = new Set(defaultExpandedGroupIds ?? []);\n for (const group of groups) {\n if (group.hideHeader || group.defaultExpanded !== false) {\n defaults.add(group.id);\n }\n }\n return defaults;\n}\n\nfunction flattenNodes<TNodeSource, TGroupSource, TContext>(\n nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n parentId: string | undefined,\n entries: Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>,\n) {\n for (const [index, node] of (nodes ?? []).entries()) {\n entries.set(node.id, { node, group, parentId, index });\n flattenNodes(node.children, group, node.id, entries);\n }\n}\n\nfunction buildFlattenedNodeMap<TNodeSource, TGroupSource, TContext>(\n groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n) {\n const entries = new Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>();\n for (const group of groups) {\n flattenNodes(group.nodes, group, undefined, entries);\n }\n return entries;\n}\n\nfunction getNodeActions<TNodeSource, TGroupSource, TContext>(\n node: TreeNode<TNodeSource, TGroupSource, TContext>,\n globalActions:\n | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n | undefined,\n) {\n return [\n ...(globalActions ?? []),\n ...((node.actions ?? []) as Array<\n DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n >),\n ];\n}\n\nfunction getGroupActions<TNodeSource, TGroupSource, TContext>(\n group: TreeGroup<TGroupSource, TNodeSource, TContext>,\n globalActions:\n | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n | undefined,\n) {\n return [\n ...(globalActions ?? []),\n ...((group.actions ?? []) as Array<\n DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n >),\n ];\n}\n\nexport function DataExplorerViewTree<\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>({\n groups,\n nodes,\n context,\n selectedNodeId,\n selectedGroupId,\n expandedNodeIds,\n defaultExpandedNodeIds,\n expandedGroupIds,\n defaultExpandedGroupIds,\n resetExpansionKey,\n nodeActions,\n groupActions,\n indentSize = 16,\n empty,\n loading = false,\n loadingNode,\n error,\n labels,\n reorderMode = 'none',\n appearance,\n className,\n classNames,\n onSelectNode,\n onSelectGroup,\n onExpandedNodeIdsChange,\n onExpandedGroupIdsChange,\n onAction,\n onReorderNodes,\n}: DataExplorerViewTreeProps<TNodeSource, TGroupSource, TContext>) {\n const internalLabels = useMonkeysLocaleMessages().dataExplorer.viewTree;\n const theme = resolveDataExplorerAppearance(appearance);\n const actionLabel = labels?.actions ?? internalLabels.actions;\n const expandLabel = labels?.expand ?? internalLabels.expand;\n const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n const loadingContent = loadingNode ?? labels?.loading ?? internalLabels.loading;\n const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n const hasExplicitGroups = Array.isArray(groups);\n const resolvedGroups = useMemo<Array<TreeGroup<TGroupSource, TNodeSource, TContext>>>(\n () => {\n if (hasExplicitGroups) {\n return groups;\n }\n return [\n {\n id: '__root__',\n hideHeader: true,\n defaultExpanded: true,\n nodes: Array.isArray(nodes) ? nodes : [],\n },\n ];\n },\n [groups, hasExplicitGroups, nodes],\n );\n const flattenedNodeMap = useMemo(\n () => buildFlattenedNodeMap(resolvedGroups),\n [resolvedGroups],\n );\n const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(\n () => buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n );\n const [internalExpandedGroupIds, setInternalExpandedGroupIds] = useState(\n () => buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n );\n const [draggingNodeId, setDraggingNodeId] = useState<string | undefined>();\n const [dragOverNodeId, setDragOverNodeId] = useState<string | undefined>();\n\n useEffect(() => {\n setInternalExpandedNodeIds(\n buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n );\n setInternalExpandedGroupIds(\n buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n );\n }, [defaultExpandedGroupIds, defaultExpandedNodeIds, resetExpansionKey]);\n\n const resolvedExpandedNodeIds =\n expandedNodeIds !== undefined\n ? new Set(expandedNodeIds)\n : internalExpandedNodeIds;\n const resolvedExpandedGroupIds =\n expandedGroupIds !== undefined\n ? new Set(expandedGroupIds)\n : internalExpandedGroupIds;\n\n const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n const next = new Set(resolvedExpandedNodeIds);\n if (expanded) {\n next.add(nodeId);\n } else {\n next.delete(nodeId);\n }\n if (expandedNodeIds === undefined) {\n setInternalExpandedNodeIds(next);\n }\n onExpandedNodeIdsChange?.([...next]);\n };\n\n const setGroupExpanded = (groupId: string, expanded: boolean) => {\n const next = new Set(resolvedExpandedGroupIds);\n if (expanded) {\n next.add(groupId);\n } else {\n next.delete(groupId);\n }\n if (expandedGroupIds === undefined) {\n setInternalExpandedGroupIds(next);\n }\n onExpandedGroupIdsChange?.([...next]);\n };\n\n const createActionContext = (\n action: DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\n ): DataExplorerViewTreeActionContext<TNodeSource, TGroupSource, TContext> =>\n target.type === 'node'\n ? {\n type: 'node',\n action,\n node: target.node,\n group: target.group,\n context,\n }\n : {\n type: 'group',\n action,\n group: target.group,\n context,\n };\n\n const renderActions = (\n actions: Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>,\n target:\n | {\n type: 'node';\n node: TreeNode<TNodeSource, TGroupSource, TContext>;\n group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n }\n | { type: 'group'; group: TreeGroup<TGroupSource, TNodeSource, TContext> },\n ) => {\n const visibleActions = actions.filter((action) => {\n const payload = createActionContext(action, target);\n return resolveDataExplorerValue(action.visible, payload) ?? true;\n });\n if (visibleActions.length === 0) return null;\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n title={actionLabel}\n aria-label={actionLabel}\n className={cn(\n theme.slots.menuTrigger,\n target.type === 'group'\n ? theme.slots.treeGroupActions\n : theme.slots.treeNodeActions,\n target.type === 'group'\n ? classNames?.groupActions\n : cn(classNames?.nodeActions, classNames?.itemActions),\n )}\n onClick={(event) => event.stopPropagation()}\n >\n <MoreIcon />\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align=\"end\"\n sideOffset={6}\n className={cn(theme.slots.menuContent, classNames?.menuContent)}\n style={theme.styles.menuContent}\n onClick={(event) => event.stopPropagation()}\n >\n {visibleActions.map((action) => {\n const payload = createActionContext(action, target);\n const disabled =\n (resolveDataExplorerValue(action.disabled, payload) ?? false) ||\n (resolveDataExplorerValue(action.loading, payload) ?? false);\n const active = resolveDataExplorerValue(action.active, payload) ?? false;\n\n if (action.render) {\n return <div key={action.id}>{action.render(payload)}</div>;\n }\n\n return (\n <div key={action.id}>\n {action.separatorBefore ? (\n <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n ) : null}\n <DropdownMenu.Item\n title={action.title}\n disabled={disabled}\n className={cn(\n theme.slots.menuItem,\n getDataExplorerMenuItemToneClassName(theme, action.tone),\n active && 'bg-accent text-accent-foreground',\n classNames?.menuItem,\n )}\n style={theme.styles.menuItem}\n onSelect={() => {\n if (disabled) return;\n void action.onAction?.(payload);\n void onAction?.(payload);\n }}\n >\n {action.icon ? (\n <span className={theme.slots.menuItemIcon}>{action.icon}</span>\n ) : null}\n <span className={theme.slots.menuItemLabel}>{action.label}</span>\n </DropdownMenu.Item>\n {action.separatorAfter ? (\n <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n ) : null}\n </div>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n };\n\n const handleDrop = (\n event: DragEvent<HTMLElement>,\n overNode: TreeNode<TNodeSource, TGroupSource, TContext>,\n ) => {\n event.preventDefault();\n const activeNodeId =\n draggingNodeId || event.dataTransfer.getData('application/x-data-explorer-node');\n if (!activeNodeId || activeNodeId === overNode.id || !onReorderNodes) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const activeEntry = flattenedNodeMap.get(activeNodeId);\n const overEntry = flattenedNodeMap.get(overNode.id);\n if (!activeEntry || !overEntry) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const sameParent =\n activeEntry.parentId === overEntry.parentId &&\n activeEntry.group?.id === overEntry.group?.id;\n if (reorderMode === 'same-parent' && !sameParent) {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n return;\n }\n\n const payload: DataExplorerViewTreeReorderPayload<\n TNodeSource,\n TGroupSource,\n TContext\n > = {\n activeNode: activeEntry.node,\n overNode: overEntry.node,\n activeGroup: activeEntry.group,\n overGroup: overEntry.group,\n activeParentId: activeEntry.parentId,\n overParentId: overEntry.parentId,\n oldIndex: activeEntry.index,\n newIndex: overEntry.index,\n sameParent,\n context,\n };\n void onReorderNodes(payload);\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n };\n\n const renderNode = (\n node: TreeNode<TNodeSource, TGroupSource, TContext>,\n group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n depth: number,\n ): ReactNode => {\n const childNodes = Array.isArray(node.children) ? node.children : [];\n const hasChildren = childNodes.length > 0;\n const isExpanded =\n node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n const isSelected = selectedNodeId === node.id;\n const isSelectable = node.selectable !== false && !node.disabled;\n const isReorderable =\n reorderMode !== 'none' && !!onReorderNodes && node.reorderable !== false;\n const isDragging = draggingNodeId === node.id;\n const isDragOver = dragOverNodeId === node.id && draggingNodeId !== node.id;\n const actions = getNodeActions(node, nodeActions);\n\n return (\n <div\n key={node.id}\n data-data-explorer-entry=\"node\"\n data-data-explorer-node-id={node.id}\n data-data-explorer-group-id={group?.id}\n className={cn(\n theme.slots.treeNode,\n classNames?.node,\n classNames?.item,\n node.className,\n )}\n onDragOver={(event) => {\n if (!draggingNodeId || !isReorderable) return;\n event.preventDefault();\n setDragOverNodeId(node.id);\n }}\n onDragLeave={() => {\n if (dragOverNodeId === node.id) {\n setDragOverNodeId(undefined);\n }\n }}\n onDrop={(event) => handleDrop(event, node)}\n >\n <div\n className={cn(\n theme.slots.treeNodeButton,\n isSelected && theme.slots.treeNodeSelected,\n node.disabled && theme.slots.treeNodeDisabled,\n isDragging && theme.slots.treeNodeDragging,\n isDragOver && 'ring-1 ring-primary/30',\n isSelected && classNames?.itemSelected,\n isSelected && classNames?.nodeSelected,\n node.disabled && classNames?.nodeDisabled,\n isDragging && classNames?.nodeDragging,\n classNames?.nodeButton,\n classNames?.itemButton,\n )}\n style={{ paddingLeft: `${(node.indentLevel ?? depth) * indentSize + 8}px` }}\n role=\"treeitem\"\n aria-selected={isSelected || undefined}\n aria-disabled={node.disabled || undefined}\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-label={node.ariaLabel}\n tabIndex={isSelectable ? 0 : -1}\n onClick={() => {\n if (!isSelectable) return;\n onSelectNode?.(node, context);\n }}\n onKeyDown={(event) => {\n if (!isSelectable) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelectNode?.(node, context);\n }}\n >\n {isReorderable ? (\n <span\n draggable\n className={cn(theme.slots.treeNodeDragHandle, classNames?.nodeDragHandle)}\n onClick={(event) => event.stopPropagation()}\n onDragStart={(event) => {\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData(\n 'application/x-data-explorer-node',\n node.id,\n );\n setDraggingNodeId(node.id);\n }}\n onDragEnd={() => {\n setDraggingNodeId(undefined);\n setDragOverNodeId(undefined);\n }}\n >\n <GripIcon />\n </span>\n ) : null}\n {hasChildren ? (\n <button\n type=\"button\"\n className={cn(\n theme.slots.treeNodeToggle,\n classNames?.nodeToggle,\n classNames?.expander,\n )}\n aria-label={isExpanded ? collapseLabel : expandLabel}\n onClick={(event) => {\n event.stopPropagation();\n setNodeExpanded(node.id, !isExpanded);\n }}\n >\n <ChevronIcon expanded={isExpanded} />\n </button>\n ) : (\n <span className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)} />\n )}\n {node.icon ? (\n <span\n className={cn(\n theme.slots.treeNodeIcon,\n classNames?.nodeIcon,\n classNames?.itemIcon,\n )}\n >\n {node.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span\n className={cn(\n theme.slots.treeNodeLabel,\n classNames?.nodeLabel,\n classNames?.itemLabel,\n )}\n >\n {node.label}\n </span>\n {node.description ? (\n <span\n className={cn(\n theme.slots.treeNodeDescription,\n classNames?.nodeDescription,\n )}\n >\n {node.description}\n </span>\n ) : null}\n </span>\n {node.meta ? (\n <span className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {node.meta}\n </span>\n ) : null}\n {node.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {node.badge}\n </span>\n ) : null}\n {renderActions(actions, { type: 'node', node, group })}\n </div>\n {hasChildren && isExpanded ? (\n <div\n className={cn(\n theme.slots.treeNodeChildren,\n classNames?.nodeChildren,\n classNames?.list,\n )}\n >\n {childNodes.map((child) => renderNode(child, group, depth + 1))}\n </div>\n ) : null}\n </div>\n );\n };\n\n const renderPlaceholder = (\n content: ReactNode,\n slotClassName: string,\n classNameOverride: string | undefined,\n ) => <div className={cn(slotClassName, classNameOverride)}>{content}</div>;\n\n if (loading) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(\n loadingContent,\n theme.slots.treeLoading,\n classNames?.loading,\n )}\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(error ?? labels?.error, theme.slots.treeError, classNames?.error)}\n </div>\n );\n }\n\n const hasAnyNodes = resolvedGroups.some((group) => (group.nodes ?? []).length > 0);\n const hasAnyGroupState = resolvedGroups.some((group) => group.status === 'loading' || group.error);\n const shouldRenderGlobalEmpty =\n !hasAnyNodes && !hasAnyGroupState && (!hasExplicitGroups || resolvedGroups.length === 0);\n if (shouldRenderGlobalEmpty) {\n return (\n <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n {renderPlaceholder(\n emptyContent,\n theme.slots.treeEmpty,\n classNames?.empty,\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn(theme.slots.treeRoot, classNames?.root, className)}\n role={hasAnyNodes ? 'tree' : undefined}\n >\n {resolvedGroups.map((group) => {\n const groupExpanded =\n group.hideHeader ||\n group.collapsible === false ||\n resolvedExpandedGroupIds.has(group.id);\n const groupNodeCount = group.nodes?.length ?? 0;\n const actions = getGroupActions(group, groupActions);\n const groupSelected = selectedGroupId === group.id;\n const groupCollapsible = group.collapsible !== false;\n return (\n <section\n key={group.id}\n data-data-explorer-entry=\"group\"\n data-data-explorer-group-id={group.id}\n className={cn(theme.slots.treeGroup, classNames?.group, group.className)}\n >\n {!group.hideHeader ? (\n <div\n className={cn(\n theme.slots.treeGroupHeader,\n theme.slots.treeGroupHeaderButton,\n groupSelected && theme.slots.treeNodeSelected,\n classNames?.groupHeader,\n classNames?.groupHeaderButton,\n groupSelected && classNames?.itemSelected,\n )}\n >\n <button\n type=\"button\"\n className={cn(\n 'flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring',\n classNames?.groupLabel,\n )}\n aria-pressed={group.selectable ? groupSelected : undefined}\n aria-expanded={!group.selectable && groupCollapsible ? groupExpanded : undefined}\n onClick={() => {\n if (group.selectable) {\n onSelectGroup?.(group, context);\n return;\n }\n if (groupCollapsible) setGroupExpanded(group.id, !groupExpanded);\n }}\n >\n {group.icon ? (\n <span\n className={cn(\n theme.slots.treeNodeIcon,\n classNames?.nodeIcon,\n classNames?.itemIcon,\n )}\n >\n {group.icon}\n </span>\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n {group.label ? (\n <span\n className={cn(\n theme.slots.treeNodeLabel,\n classNames?.nodeLabel,\n classNames?.itemLabel,\n )}\n >\n {group.label}\n </span>\n ) : null}\n {group.description ? (\n <span\n className={cn(\n theme.slots.treeNodeDescription,\n classNames?.nodeDescription,\n )}\n >\n {group.description}\n </span>\n ) : null}\n </span>\n {group.meta ? (\n <span className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}>\n {group.meta}\n </span>\n ) : null}\n {group.badge ? (\n <span className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}>\n {group.badge}\n </span>\n ) : null}\n </button>\n {groupCollapsible ? (\n <button\n type=\"button\"\n className={cn(theme.slots.treeNodeToggle, classNames?.expander)}\n aria-label={groupExpanded ? collapseLabel : expandLabel}\n aria-expanded={groupExpanded}\n onClick={() => setGroupExpanded(group.id, !groupExpanded)}\n >\n <ChevronIcon expanded={groupExpanded} />\n </button>\n ) : (\n <span className={theme.slots.treeNodeToggle} />\n )}\n {renderActions(actions, { type: 'group', group })}\n </div>\n ) : null}\n {groupExpanded ? (\n <div\n className={cn(\n theme.slots.treeGroupContent,\n classNames?.groupContent,\n classNames?.list,\n )}\n >\n {group.loading || group.status === 'loading'\n ? renderPlaceholder(\n loadingContent,\n theme.slots.treeLoading,\n classNames?.loading,\n )\n : group.error || group.status === 'error'\n ? renderPlaceholder(\n group.error ?? labels?.error ?? internalLabels.error,\n theme.slots.treeError,\n classNames?.error,\n )\n : groupNodeCount > 0\n ? group.nodes?.map((node) => renderNode(node, group, 0))\n : renderPlaceholder(\n group.empty ?? emptyContent,\n theme.slots.treeEmpty,\n classNames?.empty,\n )}\n </div>\n ) : null}\n </section>\n );\n })}\n </div>\n );\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ElementType,\n type ForwardedRef,\n type KeyboardEvent,\n type MouseEvent,\n type MutableRefObject,\n type PointerEvent,\n type ReactElement,\n type ReactNode,\n type RefAttributes,\n} from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { DataExplorerViewTree } from \"../data-explorer\";\nimport type {\n NavigationSidebarActiveVariant,\n NavigationSidebarAppearance,\n NavigationSidebarCatalogItem,\n NavigationSidebarCatalogProps,\n NavigationSidebarCatalogSection,\n NavigationSidebarClassNames,\n NavigationSidebarCommonProps,\n NavigationSidebarProps,\n NavigationSidebarRouteChild,\n NavigationSidebarRouteItem,\n NavigationSidebarRouteProps,\n NavigationSidebarStorage,\n NavigationSidebarTreeProps,\n} from \"./types\";\n\ninterface LayoutBounds {\n defaultWidth: number;\n minWidth: number;\n maxWidth: number;\n collapsedWidth: number;\n collapseThreshold: number;\n}\n\ninterface StoredLayout {\n collapsed: boolean;\n width: number;\n}\n\nfunction CollapseIcon({ collapsed }: { collapsed: boolean }) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <path\n d={\n collapsed\n ? \"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n : \"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n }\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction SearchIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n <path\n d=\"m12.2 12.2 3.3 3.3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n className=\"h-3.5 w-3.5\"\n fill=\"none\"\n >\n <path\n d=\"m6 6 8 8m0-8-8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n className=\"h-4 w-4\"\n fill=\"currentColor\"\n >\n <circle cx=\"5\" cy=\"10\" r=\"1.2\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.2\" />\n <circle cx=\"15\" cy=\"10\" r=\"1.2\" />\n </svg>\n );\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<T | null>).current = node;\n }\n}\n\nfunction requireFiniteNumber(name: string, value: number) {\n if (!Number.isFinite(value)) {\n throw new RangeError(`NavigationSidebar ${name} must be a finite number.`);\n }\n}\n\nfunction resolveLayoutBounds(\n props: NavigationSidebarCommonProps,\n): LayoutBounds {\n const minWidth = props.minWidth ?? 180;\n const maxWidth = props.maxWidth ?? 420;\n const defaultWidth = props.defaultWidth ?? 256;\n const collapsedWidth = props.collapsedWidth ?? 60;\n const collapseThreshold = props.collapseThreshold ?? 140;\n\n requireFiniteNumber(\"minWidth\", minWidth);\n requireFiniteNumber(\"maxWidth\", maxWidth);\n requireFiniteNumber(\"defaultWidth\", defaultWidth);\n requireFiniteNumber(\"collapsedWidth\", collapsedWidth);\n requireFiniteNumber(\"collapseThreshold\", collapseThreshold);\n\n if (minWidth <= 0)\n throw new RangeError(\n \"NavigationSidebar minWidth must be greater than zero.\",\n );\n if (maxWidth < minWidth)\n throw new RangeError(\n \"NavigationSidebar maxWidth must be greater than or equal to minWidth.\",\n );\n if (collapsedWidth < 0)\n throw new RangeError(\n \"NavigationSidebar collapsedWidth cannot be negative.\",\n );\n if (collapseThreshold < 0)\n throw new RangeError(\n \"NavigationSidebar collapseThreshold cannot be negative.\",\n );\n\n return {\n defaultWidth,\n minWidth,\n maxWidth,\n collapsedWidth,\n collapseThreshold,\n };\n}\n\nfunction clampWidth(\n width: number,\n bounds: Pick<LayoutBounds, \"minWidth\" | \"maxWidth\">,\n) {\n return Math.min(Math.max(width, bounds.minWidth), bounds.maxWidth);\n}\n\nfunction reportStorageError(\n error: unknown,\n onStorageError: ((error: unknown) => void) | undefined,\n) {\n if (onStorageError) {\n onStorageError(error);\n return;\n }\n if (typeof console !== \"undefined\") {\n console.warn(\"NavigationSidebar could not persist layout state.\", error);\n }\n}\n\nfunction resolveStorage(storage: NavigationSidebarStorage | undefined) {\n if (storage) return storage;\n if (typeof window === \"undefined\") return undefined;\n return window.localStorage;\n}\n\nfunction readStoredLayout(\n props: NavigationSidebarCommonProps,\n bounds: LayoutBounds,\n): StoredLayout {\n const fallback = {\n collapsed: props.defaultCollapsed ?? false,\n width: clampWidth(bounds.defaultWidth, bounds),\n };\n if (!props.storageKey) return fallback;\n\n const storage = resolveStorage(props.storage);\n if (!storage) return fallback;\n\n try {\n const rawValue = storage.getItem(props.storageKey);\n if (!rawValue) return fallback;\n const parsedValue = JSON.parse(rawValue) as Partial<StoredLayout>;\n return {\n collapsed:\n typeof parsedValue.collapsed === \"boolean\"\n ? parsedValue.collapsed\n : fallback.collapsed,\n width:\n typeof parsedValue.width === \"number\" &&\n Number.isFinite(parsedValue.width)\n ? clampWidth(parsedValue.width, bounds)\n : fallback.width,\n };\n } catch (error) {\n reportStorageError(error, props.onStorageError);\n return fallback;\n }\n}\n\nfunction getNodeTitle(label: ReactNode, explicitTitle: string | undefined) {\n if (explicitTitle) return explicitTitle;\n return typeof label === \"string\" ? label : undefined;\n}\n\nfunction activeVariantClassName(activeVariant: NavigationSidebarActiveVariant) {\n if (activeVariant === \"solid\")\n return \"border-primary bg-primary text-primary-foreground shadow-sm\";\n if (activeVariant === \"outline\")\n return \"border-primary/55 bg-background text-foreground ring-1 ring-primary/20\";\n if (activeVariant === \"muted\")\n return \"border-transparent bg-muted text-foreground\";\n return \"border-primary/25 bg-primary/10 text-foreground\";\n}\n\nfunction resolveAppearance(\n appearance: NavigationSidebarAppearance | undefined,\n) {\n const density = appearance?.density ?? \"default\";\n const surface = appearance?.surface ?? \"panel\";\n const activeVariant = appearance?.activeVariant ?? \"soft\";\n return {\n density,\n surface,\n activeVariant,\n root: cn(\n surface === \"plain\" && \"border-transparent bg-transparent shadow-none\",\n surface === \"panel\" &&\n \"border-border/70 bg-card text-card-foreground shadow-sm\",\n surface === \"frosted\" &&\n \"border-border/55 bg-card/80 text-card-foreground shadow-sm backdrop-blur-xl\",\n surface === \"outlined\" &&\n \"border-border bg-background text-foreground shadow-none\",\n ),\n itemHeight:\n density === \"compact\"\n ? \"min-h-9\"\n : density === \"comfortable\"\n ? \"min-h-14\"\n : \"min-h-11\",\n itemPadding:\n density === \"compact\"\n ? \"px-2 py-1.5\"\n : density === \"comfortable\"\n ? \"px-3 py-3\"\n : \"px-3 py-2\",\n };\n}\n\ninterface EntryButtonProps {\n item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n active: boolean;\n collapsed: boolean;\n itemAs?: ElementType;\n appearance: ReturnType<typeof resolveAppearance>;\n classNames?: NavigationSidebarClassNames;\n mobile?: boolean;\n onSelect?: () => void;\n}\n\nfunction EntryButton({\n item,\n active,\n collapsed,\n itemAs,\n appearance,\n classNames,\n mobile = false,\n onSelect,\n}: EntryButtonProps) {\n const ItemComponent = itemAs ?? (item.href ? \"a\" : \"button\");\n const title = getNodeTitle(item.label, item.title);\n const domProps = item.domProps ?? {};\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.onClick?.(event);\n onSelect?.();\n };\n const componentProps = {\n ...domProps,\n ...(item.to ? { to: item.to } : {}),\n ...(item.href ? { href: item.href } : {}),\n ...(ItemComponent === \"button\" ? { type: \"button\" } : {}),\n title,\n \"aria-current\": active ? \"page\" : undefined,\n \"aria-disabled\": item.disabled || undefined,\n tabIndex: item.disabled ? -1 : domProps.tabIndex,\n onClick: handleClick,\n };\n\n return (\n <ItemComponent\n {...componentProps}\n data-navigation-sidebar-item-id={item.id}\n data-active={active ? \"true\" : \"false\"}\n className={cn(\n \"group/navigation-item relative flex w-full min-w-0 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n appearance.itemHeight,\n appearance.itemPadding,\n active\n ? activeVariantClassName(appearance.activeVariant)\n : \"text-muted-foreground hover:border-border/70 hover:bg-muted/60 hover:text-foreground\",\n collapsed && !mobile && \"justify-center px-0\",\n item.disabled && \"pointer-events-none opacity-50\",\n classNames?.item,\n active && classNames?.itemActive,\n mobile && classNames?.mobileItem,\n domProps.className,\n item.className,\n )}\n >\n {hasRenderableNode(item.icon) ? (\n <span\n className={cn(\n \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n classNames?.itemIcon,\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n ) : null}\n {mobile || !collapsed ? (\n <span\n className={cn(\n \"flex min-w-0 flex-1 flex-col\",\n classNames?.itemContent,\n )}\n >\n <span\n className={cn(\n \"min-w-0 truncate font-semibold\",\n classNames?.itemLabel,\n )}\n >\n {item.label}\n </span>\n {hasRenderableNode(item.description) ? (\n <span\n className={cn(\n \"mt-0.5 truncate text-xs font-normal\",\n classNames?.itemDescription,\n )}\n >\n {item.description}\n </span>\n ) : null}\n </span>\n ) : null}\n {(mobile || !collapsed) && hasRenderableNode(item.meta) ? (\n <span\n className={cn(\n \"shrink-0 text-xs text-muted-foreground\",\n classNames?.itemMeta,\n )}\n >\n {item.meta}\n </span>\n ) : null}\n {(mobile || !collapsed) && hasRenderableNode(item.endContent) ? (\n <span className={cn(\"shrink-0\", classNames?.itemEndContent)}>\n {item.endContent}\n </span>\n ) : null}\n </ItemComponent>\n );\n}\n\nfunction filterCatalogItems(\n items: NavigationSidebarCatalogItem[],\n activeFilterId: string | undefined,\n) {\n if (!activeFilterId) return items;\n return items.filter(\n (item) =>\n !item.filterIds?.length || item.filterIds.includes(activeFilterId),\n );\n}\n\nfunction CatalogContent({\n props,\n collapsed,\n appearance,\n}: {\n props: NavigationSidebarCatalogProps;\n collapsed: boolean;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n const {\n items = [],\n sections = [],\n filters = [],\n activeFilterId,\n activeItemId,\n onFilterSelect,\n itemAs,\n layout = \"single\",\n empty,\n ariaLabel,\n classNames,\n } = props;\n const filteredItems = filterCatalogItems(items, activeFilterId);\n const filteredSections = sections\n .map((section) => ({\n ...section,\n items: filterCatalogItems(section.items, activeFilterId),\n }))\n .filter((section) => section.items.length > 0);\n const hasItems = filteredItems.length > 0 || filteredSections.length > 0;\n\n const filtersNode =\n filters.length > 0 && !collapsed ? (\n <div\n role=\"group\"\n className={cn(\n layout === \"split\"\n ? \"flex min-w-32 flex-col gap-1 border-r border-border/60 pr-2\"\n : \"flex flex-wrap gap-1\",\n classNames?.filterList,\n )}\n aria-label={ariaLabel ? `${ariaLabel} filters` : undefined}\n >\n {filters.map((filter) => {\n const active = filter.id === activeFilterId;\n return (\n <button\n key={filter.id}\n type=\"button\"\n title={\n filter.title ??\n (typeof filter.label === \"string\" ? filter.label : undefined)\n }\n aria-pressed={active}\n disabled={filter.disabled}\n className={cn(\n \"inline-flex min-h-8 items-center gap-2 rounded-md px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n active && \"bg-muted text-foreground\",\n classNames?.filterItem,\n active && classNames?.filterItemActive,\n )}\n onClick={() => onFilterSelect?.(filter)}\n >\n {hasRenderableNode(filter.icon) ? (\n <span aria-hidden=\"true\">{filter.icon}</span>\n ) : null}\n <span className=\"truncate\">{filter.label}</span>\n </button>\n );\n })}\n </div>\n ) : null;\n\n const listNode = hasItems ? (\n <div className={cn(\"min-w-0 flex-1\", classNames?.list)}>\n {filteredItems.length > 0 ? (\n <ul className=\"grid list-none gap-1 p-0\">\n {filteredItems.map((item) => (\n <li key={item.id}>\n <EntryButton\n item={item}\n active={item.active ?? item.id === activeItemId}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n ) : null}\n {filteredSections.map((section) => (\n <section\n key={section.id}\n className={cn(\n \"mt-3 first:mt-0\",\n classNames?.section,\n section.className,\n )}\n >\n {!collapsed && hasRenderableNode(section.label) ? (\n <div\n className={cn(\n \"mb-1 px-2 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\",\n classNames?.sectionLabel,\n section.labelClassName,\n )}\n >\n {section.label}\n </div>\n ) : null}\n <ul className=\"grid list-none gap-1 p-0\">\n {section.items.map((item) => (\n <li key={item.id}>\n <EntryButton\n item={item}\n active={item.active ?? item.id === activeItemId}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n </section>\n ))}\n </div>\n ) : (\n <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n {empty}\n </div>\n );\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(layout === \"split\" && !collapsed && \"flex min-w-0 gap-2\")}\n >\n {filtersNode}\n {listNode}\n </nav>\n );\n}\n\nfunction ChildEntry({\n child,\n parent,\n active,\n interactive,\n onSelect,\n classNames,\n}: {\n child: NavigationSidebarRouteChild;\n parent: NavigationSidebarRouteItem;\n active: boolean;\n interactive: boolean;\n onSelect?: (\n child: NavigationSidebarRouteChild,\n parent: NavigationSidebarRouteItem,\n ) => void;\n classNames?: NavigationSidebarClassNames;\n}) {\n const Component = interactive ? \"button\" : \"div\";\n const domProps = child.domProps ?? {};\n return (\n <Component\n {...domProps}\n {...(interactive ? { type: \"button\" } : {})}\n data-navigation-sidebar-child-id={child.id}\n aria-current={interactive && active ? \"page\" : undefined}\n aria-disabled={child.disabled || undefined}\n title={getNodeTitle(child.label, child.title)}\n disabled={interactive ? child.disabled : undefined}\n className={cn(\n \"flex min-h-9 w-full min-w-0 items-center gap-2 rounded-md border border-transparent px-2 text-left text-xs font-medium outline-none transition-[background-color,border-color,color] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n active\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"text-muted-foreground hover:border-border hover:bg-muted/60 hover:text-foreground\",\n child.disabled && \"pointer-events-none opacity-50\",\n classNames?.childItem,\n active && classNames?.childItemActive,\n domProps.className,\n child.className,\n )}\n onClick={\n interactive && !child.disabled\n ? () => onSelect?.(child, parent)\n : undefined\n }\n >\n {hasRenderableNode(child.icon) ? (\n <span\n className=\"flex size-4 shrink-0 items-center justify-center\"\n aria-hidden=\"true\"\n >\n {child.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">{child.label}</span>\n </Component>\n );\n}\n\nfunction CollapsedChildMenu({\n item,\n activeChildId,\n label,\n onChildSelect,\n classNames,\n}: {\n item: NavigationSidebarRouteItem;\n activeChildId?: string;\n label: string;\n onChildSelect: (\n child: NavigationSidebarRouteChild,\n parent: NavigationSidebarRouteItem,\n ) => void;\n classNames?: NavigationSidebarClassNames;\n}) {\n const enabledChildren = (item.children ?? []).filter(\n (child) => !child.disabled,\n );\n if (enabledChildren.length === 0) return null;\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-8 w-6 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\",\n classNames?.childMenuTrigger,\n )}\n aria-label={`${label}: ${typeof item.label === \"string\" ? item.label : item.id}`}\n title={label}\n >\n <MoreIcon />\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n side=\"right\"\n align=\"start\"\n sideOffset={8}\n className={cn(\n \"z-50 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none\",\n classNames?.childMenuContent,\n )}\n >\n {item.children?.map((child) => (\n <DropdownMenu.Item\n key={child.id}\n disabled={child.disabled}\n data-navigation-sidebar-child-id={child.id}\n data-active={child.id === activeChildId ? \"true\" : \"false\"}\n className={cn(\n \"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n child.id === activeChildId &&\n \"bg-accent text-accent-foreground\",\n )}\n onSelect={() => onChildSelect(child, item)}\n >\n {hasRenderableNode(child.icon) ? (\n <span aria-hidden=\"true\">{child.icon}</span>\n ) : null}\n <span className=\"truncate\">{child.label}</span>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nfunction RouteContent({\n props,\n collapsed,\n appearance,\n}: {\n props: NavigationSidebarRouteProps;\n collapsed: boolean;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n const {\n routeItems,\n activeItemId,\n activeChildId,\n itemAs,\n onItemSelect,\n onChildSelect,\n collapsedChildMenuLabel = \"Open submenu\",\n ariaLabel,\n classNames,\n } = props;\n return (\n <nav aria-label={ariaLabel}>\n <ul className={cn(\"grid list-none gap-2 p-0\", classNames?.list)}>\n {routeItems.map((item) => {\n const active = item.id === activeItemId;\n return (\n <li key={item.id} className=\"grid min-w-0 gap-1\">\n <div\n className={cn(\n collapsed &&\n Boolean(item.children?.length) &&\n Boolean(onChildSelect) &&\n \"flex min-w-0 items-center gap-0.5\",\n )}\n >\n <EntryButton\n item={item}\n active={active}\n collapsed={collapsed}\n itemAs={itemAs}\n appearance={appearance}\n classNames={classNames}\n onSelect={onItemSelect ? () => onItemSelect(item) : undefined}\n />\n {collapsed && onChildSelect ? (\n <CollapsedChildMenu\n item={item}\n activeChildId={activeChildId}\n label={collapsedChildMenuLabel}\n onChildSelect={onChildSelect}\n classNames={classNames}\n />\n ) : null}\n </div>\n {!collapsed && item.children?.length ? (\n <ul\n className={cn(\n \"ml-5 grid list-none gap-0.5 border-l border-border/70 py-1 pl-3\",\n classNames?.childList,\n )}\n >\n {item.children.map((child) => (\n <li key={child.id}>\n <ChildEntry\n child={child}\n parent={item}\n active={child.id === activeChildId}\n interactive={Boolean(onChildSelect)}\n onSelect={onChildSelect}\n classNames={classNames}\n />\n </li>\n ))}\n </ul>\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n\nfunction flattenCatalogItems(\n items: NavigationSidebarCatalogItem[],\n sections: NavigationSidebarCatalogSection[],\n activeFilterId: string | undefined,\n) {\n return [\n ...filterCatalogItems(items, activeFilterId),\n ...sections.flatMap((section) =>\n filterCatalogItems(section.items, activeFilterId),\n ),\n ];\n}\n\nfunction MobileNavigation({\n props,\n appearance,\n}: {\n props: NavigationSidebarCatalogProps | NavigationSidebarRouteProps;\n appearance: ReturnType<typeof resolveAppearance>;\n}) {\n if (!props.mobile || props.mobile.mode !== \"horizontal\") return null;\n const classNames = props.classNames;\n const items =\n props.kind === \"catalog\"\n ? flattenCatalogItems(\n props.items ?? [],\n props.sections ?? [],\n props.activeFilterId,\n )\n : props.routeItems;\n return (\n <nav\n aria-label={props.ariaLabel}\n className={cn(\n \"flex gap-2 overflow-x-auto pb-1\",\n classNames?.mobileNav,\n props.mobile.className,\n )}\n >\n {items.map((item) => (\n <EntryButton\n key={item.id}\n item={item}\n active={\n props.kind === \"catalog\"\n ? ((item as NavigationSidebarCatalogItem).active ??\n item.id === props.activeItemId)\n : item.id === props.activeItemId\n }\n collapsed={false}\n itemAs={props.itemAs}\n appearance={appearance}\n classNames={{\n ...classNames,\n mobileItem: cn(classNames?.mobileItem, props.mobile?.itemClassName),\n }}\n mobile\n onSelect={\n props.kind === \"route\" && props.onItemSelect\n ? () => props.onItemSelect?.(item as NavigationSidebarRouteItem)\n : undefined\n }\n />\n ))}\n </nav>\n );\n}\n\nfunction NavigationSidebarInner<\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>(\n props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext>,\n ref: ForwardedRef<HTMLElement>,\n) {\n const bounds = resolveLayoutBounds(props);\n if (props.width !== undefined) requireFiniteNumber(\"width\", props.width);\n const initialLayoutRef = useRef<StoredLayout | null>(null);\n if (!initialLayoutRef.current) {\n initialLayoutRef.current = readStoredLayout(props, bounds);\n }\n\n const sidebarRef = useRef<HTMLElement | null>(null);\n const [internalCollapsed, setInternalCollapsed] = useState(\n initialLayoutRef.current.collapsed,\n );\n const [internalWidth, setInternalWidth] = useState(\n initialLayoutRef.current.width,\n );\n const [internalSearchValue, setInternalSearchValue] = useState(\n props.search?.defaultValue ?? \"\",\n );\n const [isResizing, setIsResizing] = useState(false);\n const resolvedCollapsed = props.collapsed ?? internalCollapsed;\n const resolvedWidth = clampWidth(props.width ?? internalWidth, bounds);\n const resolvedSearchValue = props.search?.value ?? internalSearchValue;\n const isCollapsedControlled = props.collapsed !== undefined;\n const isWidthControlled = props.width !== undefined;\n const appearance = useMemo(\n () => resolveAppearance(props.appearance),\n [props.appearance],\n );\n const collapsible = props.collapsible ?? true;\n const resizable = props.resizable ?? true;\n const collapsePlacement = collapsible\n ? (props.collapsePlacement ?? \"header\")\n : \"none\";\n const collapseLabel = props.collapseLabel ?? \"Collapse sidebar\";\n const expandLabel = props.expandLabel ?? \"Expand sidebar\";\n const resizeLabel = props.resizeLabel ?? \"Resize sidebar\";\n const contentVisible = !resolvedCollapsed || bounds.collapsedWidth > 0;\n\n const setSidebarRef = (node: HTMLElement | null) => {\n sidebarRef.current = node;\n assignRef(ref, node);\n };\n\n const updateCollapsed = useCallback(\n (nextCollapsed: boolean) => {\n if (!collapsible && nextCollapsed) return;\n if (!isCollapsedControlled) setInternalCollapsed(nextCollapsed);\n props.onCollapsedChange?.(nextCollapsed);\n },\n [collapsible, isCollapsedControlled, props.onCollapsedChange],\n );\n\n const updateWidth = useCallback(\n (nextWidth: number) => {\n const clampedWidth = clampWidth(nextWidth, bounds);\n if (!isWidthControlled) setInternalWidth(clampedWidth);\n props.onWidthChange?.(clampedWidth);\n },\n [bounds.maxWidth, bounds.minWidth, isWidthControlled, props.onWidthChange],\n );\n\n useEffect(() => {\n if (!props.storageKey) return;\n const storage = resolveStorage(props.storage);\n if (!storage) return;\n try {\n storage.setItem(\n props.storageKey,\n JSON.stringify({\n collapsed: resolvedCollapsed,\n width: resolvedWidth,\n }),\n );\n } catch (error) {\n reportStorageError(error, props.onStorageError);\n }\n }, [\n props.onStorageError,\n props.storage,\n props.storageKey,\n resolvedCollapsed,\n resolvedWidth,\n ]);\n\n useEffect(() => {\n if (!isResizing) return undefined;\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n const handlePointerMove = (event: globalThis.PointerEvent) => {\n const sidebar = sidebarRef.current;\n if (!sidebar) return;\n const nextWidth = event.clientX - sidebar.getBoundingClientRect().left;\n if (collapsible && nextWidth < bounds.collapseThreshold) {\n updateCollapsed(true);\n return;\n }\n updateCollapsed(false);\n updateWidth(nextWidth);\n };\n const handlePointerUp = () => setIsResizing(false);\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n };\n }, [\n bounds.collapseThreshold,\n collapsible,\n isResizing,\n updateCollapsed,\n updateWidth,\n ]);\n\n const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n event.preventDefault();\n if (event.key === \"ArrowLeft\") {\n const nextWidth = resolvedWidth - 24;\n if (collapsible && nextWidth < bounds.collapseThreshold) {\n updateCollapsed(true);\n } else {\n updateWidth(nextWidth);\n }\n return;\n }\n if (resolvedCollapsed) updateCollapsed(false);\n updateWidth(Math.max(resolvedWidth + 24, bounds.minWidth));\n };\n\n const collapseButton = (extraClassName?: string) => (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n props.classNames?.collapseButton,\n extraClassName,\n )}\n aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n title={resolvedCollapsed ? expandLabel : collapseLabel}\n aria-expanded={!resolvedCollapsed}\n onClick={() => updateCollapsed(!resolvedCollapsed)}\n >\n <CollapseIcon collapsed={resolvedCollapsed} />\n </button>\n );\n\n const hasHeader =\n hasRenderableNode(props.title) ||\n hasRenderableNode(props.headerLeading) ||\n hasRenderableNode(props.headerActions) ||\n collapsePlacement === \"header\";\n\n const renderContent = () => {\n if (props.kind === \"catalog\") {\n return (\n <CatalogContent\n props={props}\n collapsed={resolvedCollapsed}\n appearance={appearance}\n />\n );\n }\n if (props.kind === \"route\") {\n return (\n <RouteContent\n props={props}\n collapsed={resolvedCollapsed}\n appearance={appearance}\n />\n );\n }\n const treeProps = (\n props as NavigationSidebarTreeProps<TNodeSource, TGroupSource, TContext>\n ).tree;\n return <DataExplorerViewTree {...treeProps} />;\n };\n\n return (\n <>\n <aside\n {...props.rootDomProps}\n ref={setSidebarRef}\n aria-label={props.ariaLabel}\n data-monkeys-component={props.dataComponent ?? \"navigation-sidebar\"}\n data-navigation-sidebar-kind={props.kind}\n data-collapsed={resolvedCollapsed ? \"true\" : \"false\"}\n className={cn(\n \"relative flex h-full min-h-0 shrink-0 flex-col overflow-visible rounded-[calc(var(--radius)+0.25rem)] border transition-[width,opacity] duration-300 motion-reduce:transition-none\",\n appearance.root,\n props.desktopClassName,\n props.classNames?.root,\n props.rootDomProps?.className,\n props.className,\n )}\n style={{\n ...props.style,\n width:\n props.widthMode === \"fill\"\n ? undefined\n : resolvedCollapsed\n ? bounds.collapsedWidth\n : resolvedWidth,\n transition: isResizing ? \"none\" : props.style?.transition,\n }}\n >\n {resizable ? (\n <button\n type=\"button\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-valuemin={bounds.minWidth}\n aria-valuemax={bounds.maxWidth}\n aria-valuenow={resolvedWidth}\n aria-label={resizeLabel}\n title={resizeLabel}\n className={cn(\n \"group/resize absolute -right-1.5 bottom-0 top-0 z-40 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n props.classNames?.resizeHandle,\n )}\n onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n event.preventDefault();\n setIsResizing(true);\n }}\n onKeyDown={handleResizeKeyDown}\n >\n <span className=\"pointer-events-none absolute bottom-3 right-1/2 top-3 w-px translate-x-1/2 rounded-full bg-border opacity-0 transition-opacity group-hover/resize:opacity-100 group-focus-visible/resize:opacity-100\" />\n </button>\n ) : null}\n\n {collapsePlacement === \"edge\"\n ? collapseButton(\n \"absolute -right-3 top-1/2 z-50 -translate-y-1/2 border border-border bg-background shadow-sm\",\n )\n : null}\n\n {contentVisible ? (\n <div className=\"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden\">\n {hasHeader ? (\n <div\n className={cn(\n \"flex min-h-12 min-w-0 items-center gap-2 border-b border-border/60 px-3\",\n resolvedCollapsed && \"justify-center px-1\",\n props.classNames?.header,\n )}\n >\n {hasRenderableNode(props.headerLeading) ? (\n <span\n className={cn(\n \"flex shrink-0 items-center justify-center\",\n props.classNames?.headerLeading,\n )}\n >\n {props.headerLeading}\n </span>\n ) : null}\n {!resolvedCollapsed && hasRenderableNode(props.title) ? (\n <div\n className={cn(\n \"min-w-0 flex-1 truncate text-sm font-semibold\",\n props.classNames?.title,\n )}\n >\n {props.title}\n </div>\n ) : null}\n {!resolvedCollapsed &&\n hasRenderableNode(props.headerActions) ? (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-1\",\n props.classNames?.headerActions,\n )}\n >\n {props.headerActions}\n </div>\n ) : null}\n {collapsePlacement === \"header\" ? collapseButton() : null}\n </div>\n ) : null}\n\n {!resolvedCollapsed && props.search ? (\n <div className={cn(\"p-3 pb-2\", props.classNames?.search)}>\n <div className=\"flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-muted-foreground focus-within:ring-2 focus-within:ring-ring\">\n <span\n className={cn(\n \"flex shrink-0\",\n props.classNames?.searchIcon,\n )}\n aria-hidden=\"true\"\n >\n {props.search.icon ?? <SearchIcon />}\n </span>\n <input\n type=\"search\"\n value={resolvedSearchValue}\n placeholder={props.search.placeholder}\n aria-label={props.search.ariaLabel}\n className={cn(\n \"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground\",\n props.classNames?.searchInput,\n )}\n onChange={(event) => {\n const nextValue = event.currentTarget.value;\n if (props.search?.value === undefined)\n setInternalSearchValue(nextValue);\n props.search?.onValueChange?.(nextValue);\n }}\n />\n {resolvedSearchValue && props.search.clearLabel ? (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n props.classNames?.searchClear,\n )}\n aria-label={props.search.clearLabel}\n title={props.search.clearLabel}\n onClick={() => {\n if (props.search?.value === undefined)\n setInternalSearchValue(\"\");\n props.search?.onValueChange?.(\"\");\n }}\n >\n <ClearIcon />\n </button>\n ) : null}\n </div>\n </div>\n ) : null}\n\n <div\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto p-3\",\n resolvedCollapsed && \"px-1.5\",\n props.classNames?.content,\n )}\n >\n {renderContent()}\n </div>\n\n {hasRenderableNode(props.footer) ||\n collapsePlacement === \"footer\" ? (\n <div\n className={cn(\n \"flex shrink-0 items-center gap-2 border-t border-border/70 p-3\",\n resolvedCollapsed && \"justify-center px-1\",\n props.classNames?.footer,\n )}\n >\n {!resolvedCollapsed && hasRenderableNode(props.footer) ? (\n <div className=\"min-w-0 flex-1\">{props.footer}</div>\n ) : null}\n {collapsePlacement === \"footer\" ? collapseButton() : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </aside>\n {props.kind !== \"tree\" ? (\n <MobileNavigation props={props} appearance={appearance} />\n ) : null}\n </>\n );\n}\n\nexport type NavigationSidebarComponent = <\n TNodeSource = unknown,\n TGroupSource = unknown,\n TContext = unknown,\n>(\n props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext> &\n RefAttributes<HTMLElement>,\n) => ReactElement | null;\n\nexport const NavigationSidebar = forwardRef(\n NavigationSidebarInner,\n) as NavigationSidebarComponent;\n"]}
|